public static decimal[] VerificaSaldo(decimal isr, int idEjercicio, NOM_Nomina itemnomina, int idperiodo) { decimal[] dato = new decimal[2]; dato[0] = isr; using (var ctx = new RHEntities()) { NominasDao.EliminarAplicacionSaldo(itemnomina.IdEmpleado, idperiodo); var item = ctx.NOM_CalculoAnual.Where(x => x.idEjercicio == idEjercicio && x.idEmpleado == itemnomina.IdEmpleado).FirstOrDefault(); if (item != null && item.saldoFavor > 0) { var aplicado = ctx.NOM_AplicacionSaldo.Where(x => x.idEmpleado == itemnomina.IdEmpleado && x.idCalculo == item.id).Select(x => x.ISRinicial).DefaultIfEmpty(0).Sum(); if (aplicado < item.saldoFavor) { decimal pagado; decimal remanente = 0; dato[0] = item.saldoFavor - (aplicado + isr); if (dato[0] < 0) { item.status = false; pagado = isr + dato[0]; dato[0] = Math.Abs(dato[0]); } else { pagado = isr; remanente = item.saldoFavor - (aplicado + isr); } NOM_AplicacionSaldo Osaldo = new NOM_AplicacionSaldo { idEmpleado = itemnomina.IdEmpleado, idPeriodo = idperiodo, idCalculo = item.id, ISRinicial = isr, ISRcobrado = dato[0] }; NOM_Nomina_Detalle ODetalle = new NOM_Nomina_Detalle { Id = 0, IdNomina = itemnomina.IdNomina, IdConcepto = 146, Total = pagado, GravadoISR = 0, ExentoISR = 0, IntegraIMSS = 0, ExentoIMSS = 0, ImpuestoSobreNomina = 0, Complemento = false, IdPrestamo = 0, SaldoFavor = item.saldoFavor, Remanente = remanente }; dato[1] = pagado; ctx.NOM_AplicacionSaldo.Add(Osaldo); ctx.NOM_Nomina_Detalle.Add(ODetalle); ctx.SaveChanges(); } } } return(dato); }