Esempio n. 1
0
        public CalculoInfonavit calcularInfonavit(Empleado_Infonavit infonavit)
        {
            //Obtener el contrato relacionado al credito
            Empleado_Contrato itemContrato = new Empleado_Contrato();

            using (var context = new RHEntities())
            {
                itemContrato =
                    context.Empleado_Contrato.FirstOrDefault(x => x.IdContrato == infonavit.IdEmpleadoContrato);
            }

            CalculoInfonavit calculo = new CalculoInfonavit();

            calculo.FechaInicio        = infonavit.FechaInicio;
            calculo.IdEmpleadoContrato = infonavit.IdEmpleadoContrato;
            calculo.IdInfonavit        = infonavit.Id;
            calculo.NumCredito         = infonavit.NumCredito;
            calculo.Salario            = infonavit.Salario;

            if (itemContrato != null)
            {//si el contrato tiene nuevo sdi, tomará el valor de ese nuevo sdi
                calculo.Salario = itemContrato.SDI;
            }

            calculo.FactorDescuento = infonavit.FactorDescuento;
            calculo.FechaSuspension = infonavit.FechaSuspension;
            calculo.Status          = infonavit.Status;
            calculo.TipoCredito     = infonavit.TipoCredito;

            if (calculo.FechaInicio < DateTime.Today)
            {
                calculo.FechaAplicada = DateTime.Today;
            }
            else
            {
                calculo.FechaAplicada = calculo.FechaInicio;
            }

            var numBimestre = Utils.GetBimestre(calculo.FechaAplicada.Value.Month);

            calculo.DiasBimestre = Utils.GetDiasDelBimestre(calculo.FechaAplicada.Value.Year, numBimestre);

            decimal salarioCalculo = 0;
            var     zonaSalario    = GetZonaSalario();

            switch (infonavit.TipoCredito)
            {
            case 1:     //Cuota Fijam
                calculo.DescuentoBimestral = calcularCuotaFija(calculo.FactorDescuento);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 2:     // Porcentaje//tomar el sdi del contrato
                calculo.DescuentoDiario    = calcularPorcentaje(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoBimestral = (calculo.DescuentoDiario * calculo.DiasBimestre) + 15;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 3:     //VSM

                if (infonavit.UsarUMA)
                {
                    salarioCalculo = zonaSalario.UMA;
                }
                else
                {
                    salarioCalculo = zonaSalario.SMG;
                }

                //calculo.Salario = sm != calculo.Salario ? sm : calculo.Salario;
                calculo.Salario = salarioCalculo != calculo.Salario ? salarioCalculo : calculo.Salario;

                calculo.DescuentoBimestral = calcularVSM(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 4:     //VSM



                if (infonavit.UsarUMA)
                {
                    salarioCalculo = zonaSalario.UMA;
                }
                else
                {
                    salarioCalculo = zonaSalario.SMG;
                }

                //calculo.Salario = sm != calculo.Salario ? sm : calculo.Salario;
                calculo.Salario = salarioCalculo != calculo.Salario ? salarioCalculo : calculo.Salario;

                calculo.DescuentoBimestral = calcularVSM(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            default:
                break;
            }
            var iniBim = new DateTime(calculo.FechaAplicada.Value.Year, (numBimestre * 2) - 1, 1);
            var finBim = new DateTime(calculo.FechaAplicada.Value.Year, (numBimestre * 2), 1);

            calculo.BimestreAplicado = iniBim.ToString("MMMM") + " - " + finBim.ToString("MMMM");

            calculo.DescuentoBimestral = calculo.DescuentoBimestral; //Math.Round(calculo.DescuentoBimestral, 2);
            calculo.DescuentoDiario    = calculo.DescuentoDiario;    //Math.Round(calculo.DescuentoDiario, 2);
            return(calculo);
        }
Esempio n. 2
0
        public CalculoInfonavit calcularInfonavit(Empleado_Infonavit infonavit)
        {
            CalculoInfonavit calculo = new CalculoInfonavit();

            calculo.FechaInicio        = infonavit.FechaInicio;
            calculo.IdEmpleadoContrato = infonavit.IdEmpleadoContrato;
            calculo.IdInfonavit        = infonavit.Id;
            calculo.NumCredito         = infonavit.NumCredito;
            calculo.Salario            = infonavit.Salario;
            calculo.FactorDescuento    = infonavit.FactorDescuento;
            calculo.FechaSuspension    = infonavit.FechaSuspension;
            calculo.Status             = infonavit.Status;
            calculo.TipoCredito        = infonavit.TipoCredito;

            if (calculo.FechaInicio < DateTime.Today)
            {
                calculo.FechaAplicada = DateTime.Today;
            }
            else
            {
                calculo.FechaAplicada = calculo.FechaInicio;
            }

            var numBimestre = Utils.GetBimestre(calculo.FechaAplicada.Value.Month);

            calculo.DiasBimestre = Utils.GetDiasDelBimestre(calculo.FechaAplicada.Value.Year, numBimestre);

            decimal salarioCalculo = 0;
            var     zonaSalario    = GetZonaSalario();

            switch (infonavit.TipoCredito)
            {
            case 1:     //Cuota Fija
                calculo.DescuentoBimestral = calcularCuotaFija(calculo.FactorDescuento);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 2:     // Porcentaje
                calculo.DescuentoDiario    = calcularPorcentaje(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoBimestral = (calculo.DescuentoDiario * calculo.DiasBimestre) + 15;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 3:     //VSM

                if (infonavit.UsarUMA)
                {
                    salarioCalculo = zonaSalario.UMA;
                }
                else
                {
                    salarioCalculo = zonaSalario.SMG;
                }

                //calculo.Salario = sm != calculo.Salario ? sm : calculo.Salario;
                calculo.Salario = salarioCalculo != calculo.Salario ? salarioCalculo : calculo.Salario;

                calculo.DescuentoBimestral = calcularVSM(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 4:     //VSM



                if (infonavit.UsarUMA)
                {
                    salarioCalculo = zonaSalario.UMA;
                }
                else
                {
                    salarioCalculo = zonaSalario.SMG;
                }

                //calculo.Salario = sm != calculo.Salario ? sm : calculo.Salario;
                calculo.Salario = salarioCalculo != calculo.Salario ? salarioCalculo : calculo.Salario;

                calculo.DescuentoBimestral = calcularVSM(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            default:
                break;
            }
            var iniBim = new DateTime(calculo.FechaAplicada.Value.Year, (numBimestre * 2) - 1, 1);
            var finBim = new DateTime(calculo.FechaAplicada.Value.Year, (numBimestre * 2), 1);

            calculo.BimestreAplicado = iniBim.ToString("MMMM") + " - " + finBim.ToString("MMMM");

            calculo.DescuentoBimestral = calculo.DescuentoBimestral; //Math.Round(calculo.DescuentoBimestral, 2);
            calculo.DescuentoDiario    = calculo.DescuentoDiario;    //Math.Round(calculo.DescuentoDiario, 2);
            return(calculo);
        }