Пример #1
0
        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);

            //}
        }
Пример #2
0
        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);
        }