Exemplo n.º 1
0
        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);
        }