Beispiel #1
0
        //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);
            }
        }