private static NOM_Nomina_Detalle CalculoDeInfonavit(NOM_Nomina nomina, NOM_PeriodosPago periodoPago, int dias = -1) { decimal totalADescontar = 0; // DateTime fechaServidor = DateTime.Now; int diasDeDescuento = 0; if (dias >= 0) { diasDeDescuento = dias; } else { diasDeDescuento = nomina.Dias_Laborados; } //1) Obtener el prestamo infonavit de la tabla Prestamos pasando el Id del contrato var prestamoInfonavit = NominasDao.GetPrestamoInfonavitByIdContrato(nomina.IdContrato); //Infonavit no maneja saldo if (prestamoInfonavit == null) { return(null); } //Validar Fecha de inicio del descuento if (periodoPago.Fecha_Inicio < prestamoInfonavit.FechaInicio && periodoPago.Fecha_Fin < prestamoInfonavit.FechaInicio) { return(null); } //if (fechaServidor >= prestamoInfonavit.FechaInicio) //Validar Fecha suspension //if (prestamoInfonavit.FechaSuspension != null) //{ // if (prestamoInfonavit.FechaSuspension > fechaServidor) // return null; //} //Validar Fecha de Suspension del descuentos //if (fechaServidor < prestamoInfonavit.FechaSuspension) //{ RH.BLL.Infonavit inf = new RH.BLL.Infonavit(); if (diasDeDescuento > 0) { //CALCULO DEL CREDITO - var calculo = inf.GetInfonavitById(prestamoInfonavit.Id); totalADescontar = diasDeDescuento * calculo.DescuentoDiario; } //Se guarda como detalle de la nomina //GuardarConcepto(nomina.IdNomina, 51, totalADescontar, 0, totalADescontar, 0, 0, false, prestamoInfonavit.Id); NOM_Nomina_Detalle item = new NOM_Nomina_Detalle() { Id = 0, IdNomina = nomina.IdNomina, IdConcepto = 51, Total = Utils.TruncateDecimales(totalADescontar), GravadoISR = 0, ExentoISR = Utils.TruncateDecimales(totalADescontar), IntegraIMSS = 0, ImpuestoSobreNomina = 0, Complemento = false, IdPrestamo = prestamoInfonavit?.Id ?? 0 }; return(item); //} }
private static List <NOM_Nomina_Detalle> CalculoDeInfonavit(NOM_Nomina nomina, NOM_PeriodosPago periodoPago, int dias = -1) { decimal totalADescontar = 0; List <NOM_Nomina_Detalle> listaDetallesInfonavit = new List <NOM_Nomina_Detalle>(); // DateTime fechaServidor = DateTime.Now; int diasDeDescuento = 0; if (dias >= 0) { diasDeDescuento = dias; } else { diasDeDescuento = nomina.Dias_Laborados; } //1) Obtener el prestamo infonavit de la tabla Prestamos pasando el Id del contrato var listaInfonavit = NominasDao.GetPrestamoInfonavitByIdContrato(nomina.IdContrato); //Infonavit no maneja saldo if (listaInfonavit == null) { return(null); } //Validar Fecha de inicio del descuento foreach (var prestamoInfonavit in listaInfonavit) { //SI FECHA DE INICIO DEL PERIODO < FECHA INICIO DEL CREDITO //NO SE COBRA EL INFONAVIT if (periodoPago.Fecha_Inicio < prestamoInfonavit.FechaInicio && periodoPago.Fecha_Fin < prestamoInfonavit.FechaInicio) { continue; } //SI FECHA FIN DEL CREDITO ESTA DENTRO DEL RANGO DEL PERIODO //SE OBTIENE LOS DIAS DESDE EL INICIO DEL PERIODO HASTA LA FECHA FIN DEL CREDITO //18-05-2018 solicitud de alondra // sin tomar la fecha de suspension como dia valido //ejem periodo 01-05-2018 hasta 16-05-2018 //fecha suspension 10-05-2018 //dias del 01 al 09 y no al 10 if (prestamoInfonavit.FechaSuspension != null) { if (prestamoInfonavit.FechaSuspension.Value >= periodoPago.Fecha_Inicio && prestamoInfonavit.FechaSuspension.Value <= periodoPago.Fecha_Fin) { var diasRestantes = Utils.GetDiasEntreDosFechas(periodoPago.Fecha_Inicio, prestamoInfonavit.FechaSuspension.Value); diasDeDescuento = diasRestantes - 1; } } //if (fechaServidor >= prestamoInfonavit.FechaInicio) //Validar Fecha suspension //if (prestamoInfonavit.FechaSuspension != null) //{ // if (prestamoInfonavit.FechaSuspension > fechaServidor) // return null; //} //Validar Fecha de Suspension del descuentos //if (fechaServidor < prestamoInfonavit.FechaSuspension) //{ RH.BLL.Infonavit inf = new RH.BLL.Infonavit(); if (diasDeDescuento > 0) { //CALCULO DEL CREDITO - var calculo = inf.GetInfonavitById(prestamoInfonavit.Id); totalADescontar = diasDeDescuento * calculo.DescuentoDiario; } //Se guarda como detalle de la nomina //GuardarConcepto(nomina.IdNomina, 51, totalADescontar, 0, totalADescontar, 0, 0, false, prestamoInfonavit.Id); NOM_Nomina_Detalle item = new NOM_Nomina_Detalle() { Id = 0, IdNomina = nomina.IdNomina, IdConcepto = 51, Total = Utils.TruncateDecimales(totalADescontar), GravadoISR = 0, ExentoISR = Utils.TruncateDecimales(totalADescontar), IntegraIMSS = 0, ImpuestoSobreNomina = 0, Complemento = false, IdPrestamo = prestamoInfonavit?.Id ?? 0 }; listaDetallesInfonavit.Add(item); }//final del for //} return(listaDetallesInfonavit); }