Ejemplo n.º 1
0
        private static List <NOM_Nomina_Detalle> CalculoDeFonacot(NOM_Nomina nomina, NOM_PeriodosPago periodoPago)
        {
            decimal  totalDescuento = 0;
            DateTime fechaServidor  = DateTime.Now;
            List <NOM_Nomina_Detalle> listaFonacot = new List <NOM_Nomina_Detalle>();

            //1) Obtener los creditos fonacot
            var prestamosFonacot = NominasDao.GetPrestamosFonacotByIdContrato(nomina.IdContrato);

            if (prestamosFonacot.Count > 0)
            {
                //2) Por cada prestamo se obtiene su monto de descuento y se guarda en el detalle de la nomina con el id del Prestamo fonacot
                foreach (var prestamo in prestamosFonacot)
                {
                    //validar Saldo > 0
                    if (prestamo.Saldo <= 0)
                    {
                        continue;                      // nueva iteracion del for
                    }
                    //validar Fecha de Inicio del Descuento
                    //if (fechaServidor < prestamo.FechaInicioDescuento) continue;
                    //if (  periodoPago.Fecha_Inicio > prestamo.FechaInicioDescuento || periodoPago.Fecha_Fin > prestamo.FechaInicioDescuento) continue;

                    if (periodoPago.Fecha_Inicio < prestamo.FechaInicioDescuento && periodoPago.Fecha_Fin < prestamo.FechaInicioDescuento)
                    {
                        continue;
                    }
                    //validar FechaSuspension
                    //if (!(fechaServidor < prestamo.FechaSuspension)) continue;

                    //validar que la retencion no sea mayor que el saldo
                    var cantidadDescuento = prestamo.Retencion > prestamo.Saldo
                        ? prestamo.Saldo
                        : prestamo.Retencion;

                    //Guardar en el detalle de la nomina
                    //GuardarConcepto(nomina.IdNomina, 52, cantidadDescuento, 0, cantidadDescuento, 0, 0,false, prestamo.Id);
                    NOM_Nomina_Detalle item = new NOM_Nomina_Detalle()
                    {
                        Id                  = 0,
                        IdNomina            = nomina.IdNomina,
                        IdConcepto          = 52,
                        Total               = Utils.TruncateDecimales(cantidadDescuento),
                        GravadoISR          = 0,
                        ExentoISR           = Utils.TruncateDecimales(cantidadDescuento),
                        IntegraIMSS         = 0,
                        ImpuestoSobreNomina = 0,
                        Complemento         = false,
                        IdPrestamo          = prestamo.Id
                    };

                    //return item;

                    listaFonacot.Add(item);


                    //Guarda el total de todos los prestamos fonacot activos
                    totalDescuento += cantidadDescuento;
                }


                return(listaFonacot);
            }

            return(null);
        }