コード例 #1
0
        private static bool relativoPatronal    = false;//Relativo Patron = 0 dias laborados de un colaborador que aun esta dado de alta

        public static TotalConcepto CuotasImss(decimal salarioMinimoGeneral, decimal uma, decimal?primaRiesgo, NOM_Nomina nomina = null, NOM_Finiquito finiquito = null, bool usarUMA = true, int diasDelPeriodo = 0, int diasIncapacidad = 0, int permisosSinGoce = 0)
        {
            NOM_Cuotas_IMSS resultadoCuotas;

            //Inicializar las variables
            relativoPatronal               = false;
            _sbc                           = 0; // Salario Base de Cotizacion
            _zonaSalarial                  = 0;
            _smgv                          = 0; // Salario Minimo General Vigente
            _factorVeces                   = 3;
            _cuotaAdicional                = 0;
            _diasLaborados                 = 0;
            _excedente                     = 0;
            _excedentePatron               = 0;
            _excedenteObrero               = 0;
            _prestacionesDineroPatron      = 0;
            _prestacionesDineroObrero      = 0;
            _cuotaFijaPatron               = 0;
            _pencionadosBeneficiadosPatron = 0;
            _pencionadosBeneficiadosObrero = 0;
            _invalidezVidaPatron           = 0;
            _invalidezVidaObrero           = 0;
            _guarderiasPatron              = 0;
            _seguroRetiroPatron            = 0;
            _cesantiaVejezPatron           = 0;
            _cesantiaVejezObrero           = 0;
            _infonavitPatron               = 0;
            _riesgoTrabajoPatron           = 0;
            _totalPatron                   = 0;
            _totalObrero                   = 0;
            _SDI                           = 0;
            _idNomina                      = 0;
            _idFiniquito                   = 0;
            _SD = 0;



            resultadoCuotas = CuotasImss2(salarioMinimoGeneral, uma, primaRiesgo, nomina, finiquito, usarUMA, diasDelPeriodo, permisosSinG: permisosSinGoce);

            if (diasDelPeriodo == diasIncapacidad)
            {
                resultadoCuotas.CesantiaVejez_Patron          = 0;
                resultadoCuotas.Cuota_Fija_Patron             = 0;
                resultadoCuotas.Excedente_Patron              = 0;
                resultadoCuotas.GuarderiasPrestaciones_Patron = 0;
                resultadoCuotas.InvalidezVida_Patron          = 0;
                resultadoCuotas.Pensionados_Patron            = 0;
                resultadoCuotas.PrestacionesDinero_Patron     = 0;
                resultadoCuotas.RiesgoTrabajo_Patron          = 0;
                resultadoCuotas.TotalPatron = (resultadoCuotas.SeguroRetiro_Patron + resultadoCuotas.Infonavit_Patron);
                resultadoCuotas.TotalObrero = 0;
            }
            //A) Si dias de incapacidad es de 1 a 3 - se toman como faltas
            //queda igual como vienen los datos de la nomina en diasLaborados

            //B) Si dias de incapacidad es > 3 y < a los dias del periodo - el patron paga los dias restantes
            //if(diasIncapacidad >3 && diasIncapacidad < diasDelPeriodo)
            //{
            //    //para calcular nuevamente anexando los dias de incapacidad,
            //    //y esto es lo que será pagado por el patron

            //    nomina.Dias_Laborados += diasIncapacidad;

            //    var nuevoCalculo = CuotasImss2(salarioMinimoGeneral, uma, primaRiesgo, nomina, finiquito, usarUMA, diasDelPeriodo);

            //    //Ese nuevo calculo se actualiza el registro solo del lado del patron
            //    resultadoCuotas.TotalPatron = nuevoCalculo.TotalPatron;
            //    resultadoCuotas.Cuota_Fija_Patron = nuevoCalculo.Cuota_Fija_Patron;
            //    resultadoCuotas.Excedente_Patron = nuevoCalculo.Excedente_Patron;
            //    resultadoCuotas.PrestacionesDinero_Patron = nuevoCalculo.PrestacionesDinero_Patron;
            //    resultadoCuotas.Pensionados_Patron = nuevoCalculo.Pensionados_Patron;
            //    resultadoCuotas.InvalidezVida_Patron = nuevoCalculo.InvalidezVida_Patron;
            //    resultadoCuotas.GuarderiasPrestaciones_Patron = nuevoCalculo.GuarderiasPrestaciones_Patron;
            //    resultadoCuotas.SeguroRetiro_Patron = nuevoCalculo.SeguroRetiro_Patron;
            //    resultadoCuotas.CesantiaVejez_Patron = nuevoCalculo.CesantiaVejez_Patron;
            //    resultadoCuotas.Infonavit_Patron = nuevoCalculo.Infonavit_Patron;
            //    resultadoCuotas.RiesgoTrabajo_Patron = nuevoCalculo.RiesgoTrabajo_Patron;
            //}

            //C) Si los dias de incapacidad es los mismos dias que el periodo -  el patro paga toda la cuota imss
            //queda igual, ya que si el dias laborados es cero, todo lo paga el patron como relativoPatronal


            //Guarda los datos en la Tabla Cuotas Imss
            _nominasDao.AddCuotasImss(resultadoCuotas);


            if (relativoPatronal != true)
            {
                _totalObrero = resultadoCuotas.TotalObrero;
                //Guardar el concepto en detalle de la nomina
                MDeducciones.Imss(_totalObrero, idNomina: _idNomina, idFiniquito: _idFiniquito);
            }
            else
            {
                _totalObrero = 0;
            }


            //Objeto utilizado en el metodo del procesado para la sumatoria de la nomina con los demas conceptos
            var totalConcepto = new TotalConcepto
            {
                Total = _totalObrero,
                ImpuestoSobreNomina = 0,
                TotalObligaciones   = 0
            };

            return(totalConcepto);
        }