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); }