//public static Task<TotalIsrSubsidio> CalculoDeIsr(NOM_Nomina nomina, decimal salarioBase, int tipoNomina, int diasPeriodo) //{ // var t = Task.Factory.StartNew(() => // { // IsrSubsidio objCalculoSubsidio; // if (tipoNomina == 16) //Asimilado // { // objCalculoSubsidio = CalculoIsrAsimilado(salarioBase, nomina.SD, diasPeriodo, 4);//5 tarifa mensual// se cambio a 4 por peticion de rodolfo y sergio // } // else // { // objCalculoSubsidio = CalculoIsrSubsidio(salarioBase, nomina.SD, diasPeriodo, tipoNomina); // } // if (objCalculoSubsidio != null) // { // //SE crea el objeto total del calculo // var totalConcepto = new TotalIsrSubsidio // { // SubsidioCausado = objCalculoSubsidio.Subsidio, // SubsidioEntregado = 0, // IsrAntesSubsidio = objCalculoSubsidio.Isr, // IsrCobrado = 0 // }; // //Si Resultado es ISR, Subsidio se guarda en Cero // if (objCalculoSubsidio.EsISR) // { // totalConcepto.IsrCobrado = objCalculoSubsidio.ResultadoIsrOSubsidio; // GuardarConcepto(nomina.IdNomina, 43, objCalculoSubsidio.ResultadoIsrOSubsidio, 0, 0, 0, 0); // GuardarConcepto(nomina.IdNomina, 144, 0, 0, 0, 0, 0); // } // else //Si Resultado es Subsidio, ISR se guarda en Cero // { // totalConcepto.SubsidioEntregado = objCalculoSubsidio.ResultadoIsrOSubsidio; // GuardarConcepto(nomina.IdNomina, 144, (objCalculoSubsidio.ResultadoIsrOSubsidio), 0, 0, 0, 0); // GuardarConcepto(nomina.IdNomina, 43, 0, 0, 0, 0, 0); // } // return totalConcepto; // } // else // { // var totalConcepto = new TotalIsrSubsidio // { // SubsidioCausado = 0, // SubsidioEntregado = 0, // IsrAntesSubsidio = 0, // IsrCobrado = 0 // }; // return totalConcepto; // } // }); // return t; //} //usado para el calculo del isr de la nomina - 2 metodo nomina - son 2 porque ultimo se fuerza a que sea la tabla mensual //usando para el calculo isr del asimilado - 1 public static TotalIsrSubsidio CalculoDeIsr(NOM_Nomina nomina, decimal salarioBase, int tipoNomina, int diasPeriodo, bool anualOK, int eje, decimal exento) { decimal isra = 0, saldo = 0; IsrSubsidio objCalculoSubsidio; if (tipoNomina == 16) //Asimilado { objCalculoSubsidio = CalculoIsrAsimilado(salarioBase, nomina.SD, diasPeriodo, 4); //5 tarifa mensual// se cambio a 4 por peticion de rodolfo y sergio } else { //objCalculoSubsidio = CalculoIsrSubsidioFin(nomina, salarioBase, nomina.SD, diasPeriodo, tipoNomina); objCalculoSubsidio = CalculoIsrSubsidio304(nomina, salarioBase, nomina.SD, diasPeriodo, tipoNomina);//factor } if (objCalculoSubsidio != null) { //SE crea el objeto total del calculo var totalConcepto = new TotalIsrSubsidio { SubsidioCausado = objCalculoSubsidio.Subsidio, //GetSubsidioCausadoByTipoNomina(tipoNomina,salarioBase), SubsidioEntregado = 0, IsrAntesSubsidio = objCalculoSubsidio.IsrAntesDeSub, IsrCobrado = 0 }; //Si Resultado es ISR, Subsidio se guarda en Cero if (objCalculoSubsidio.EsISR) { totalConcepto.IsrCobrado = objCalculoSubsidio.ResultadoIsrOSubsidio; GuardarConcepto(nomina.IdNomina, 43, objCalculoSubsidio.ResultadoIsrOSubsidio, 0, 0, 0, 0); GuardarConcepto(nomina.IdNomina, 144, 0, 0, 0, 0, 0); } else //Si Resultado es Subsidio, ISR se guarda en Cero { totalConcepto.SubsidioEntregado = objCalculoSubsidio.ResultadoIsrOSubsidio; GuardarConcepto(nomina.IdNomina, 144, (objCalculoSubsidio.ResultadoIsrOSubsidio), 0, 0, 0, 0); GuardarConcepto(nomina.IdNomina, 43, 0, 0, 0, 0, 0); } if (anualOK) { CalculoAnual Canual = new CalculoAnual(); NominasDao.EliminarCalculoAnual(nomina.IdEmpleado, nomina.IdPeriodo); Canual = GetCalculoAnual(nomina.IdEmpleado, eje, nomina.IdEmpresaFiscal, salarioBase, objCalculoSubsidio.EsISR ? objCalculoSubsidio.ResultadoIsrOSubsidio : 0, objCalculoSubsidio.Subsidio, exento); isra = Canual.ResultadoIsrOSubsidio > 0 ? Math.Abs(Canual.ResultadoIsrOSubsidio) : 0; saldo = Canual.ResultadoIsrOSubsidio < 0 ? Math.Abs(Canual.ResultadoIsrOSubsidio) : 0; if (isra > 0) { GuardarConcepto(nomina.IdNomina, 154, isra, 0, 0, 0, 0); totalConcepto.IsrCobrado += isra; } NOM_CalculoAnual itemCalculo = new NOM_CalculoAnual(); itemCalculo.id = 0; itemCalculo.idEmpleado = nomina.IdEmpleado; itemCalculo.idEmpresa = (int)nomina.IdEmpresaFiscal; itemCalculo.idEjercicio = eje; itemCalculo.idPeriodo = nomina.IdPeriodo; itemCalculo.idNomina = nomina.IdNomina; itemCalculo.baseGravable = Canual.BaseGravable; itemCalculo.Exento = Canual.Exento; itemCalculo.subCausado = Canual.Subsidio; itemCalculo.isrAntes = Canual.IsrAntesDeSub; itemCalculo.isrPagado = Canual.isrPagado; itemCalculo.isrRetener = isra; itemCalculo.saldoFavor = saldo; itemCalculo.status = true; _nominasDao.AddCalculoAnual(itemCalculo); } return(totalConcepto); } else { var totalConcepto = new TotalIsrSubsidio { SubsidioCausado = 0, SubsidioEntregado = 0, IsrAntesSubsidio = 0, IsrCobrado = 0 }; return(totalConcepto); } }