コード例 #1
0
        public PartialViewResult GetCalculoAnual(int id)
        {
            int diasPeriodo = 0;
            var periodoPago = Session["periodo"] as NOM_PeriodosPago;

            if (periodoPago != null)
            {
                diasPeriodo = periodoPago.DiasPeriodo;
            }

            ProcesoNomina prn = new ProcesoNomina();

            //var nomina = prn.GetNomina(id);

            var nomina = ProcesoNomina.GetNominaById(id);

            if (nomina != null)
            {
                var model = prn.GetCalculoDetalle(id);

                return(PartialView(model));
            }
            else
            {
                return(PartialView(null));
            }
        }
コード例 #2
0
        public async Task <Response> ObtenerProcesoNomina([FromBody] ProcesoNomina ProcesoNomina)
        {
            try
            {
                var procesoNomina = await db.ProcesoNomina.SingleOrDefaultAsync(m => m.IdProceso == ProcesoNomina.IdProceso);

                if (ProcesoNomina == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.RegistroNoEncontrado,
                    });
                }

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                    Resultado = procesoNomina,
                });
            }
            catch (Exception)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
コード例 #3
0
        public PartialViewResult GetSeguroSocial(int id)
        {
            ProcesoNomina prn   = new ProcesoNomina();
            var           model = prn.GetDetalleSS(id);

            return(PartialView(model));
        }
コード例 #4
0
        public PartialViewResult GetImpuestosDetalle(int id)
        {
            int diasPeriodo = 0;
            var periodoPago = Session["periodo"] as NOM_PeriodosPago;

            if (periodoPago != null)
            {
                diasPeriodo = periodoPago.DiasPeriodo;
            }

            ProcesoNomina prn = new ProcesoNomina();

            //var nomina = prn.GetNomina(id);

            var nomina = ProcesoNomina.GetNominaById(id);

            if (nomina != null)
            {
                var model = prn.GetImpuestosDetalle(nomina, nomina.SBC, nomina.SD, nomina.TipoTarifa, diasPeriodo, periodoPago.IdTipoNomina);

                return(PartialView(model));
            }
            else
            {
                return(PartialView(null));
            }
        }
コード例 #5
0
        public async Task <IActionResult> Delete(string id)
        {
            try
            {
                if (string.IsNullOrEmpty(id))
                {
                    return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorCargarDatos}"));
                }
                var tipoConjuntoEliminar = new ProcesoNomina {
                    IdProceso = Convert.ToInt32(id)
                };

                var response = await apiServicio.EliminarAsync(tipoConjuntoEliminar, new Uri(WebApp.BaseAddress)
                                                               , "api/ProcesoNomina/EliminarProcesoNomina");

                if (response.IsSuccess)
                {
                    return(this.Redireccionar($"{Mensaje.Informacion}|{Mensaje.Satisfactorio}"));
                }
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.BorradoNoSatisfactorio}"));
            }
            catch (Exception)
            {
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorEliminar}"));
            }
        }
コード例 #6
0
        public async Task <JsonResult> SaveCustomData()
        {
            int idFiniquito = 0;

            try
            {
                string strTotal3MesesF = Request.Form["totalTresMesesF"];
                string strTotal3MesesC = Request.Form["totalTresMesesC"];

                idFiniquito = Convert.ToInt32(Request.Form["idFiniquito"]);

                double total3mesesF = Utils.ConvertToDouble(strTotal3MesesF);
                double total3mesesC = Utils.ConvertToDouble(strTotal3MesesC);

                //string[] keys = Request.Form.AllKeys;
                //for (int i = 0; i < keys.Length; i++)
                //{
                //}

                var periodo = Session["periodo"] as NOM_PeriodosPago;

                idFiniquito = await ProcesoNomina.ProcesarFiniquitoTotalesPersonalizadoAsync(0, 0);

                //idFiniquito = await ProcesoNomina.ProcesarFiniquitoTotalesPersonalizadoAsync(periodo.IdPeriodoPago, idFiniquito);

                return(Json(new { strMensaje = "OK - Procesado de Finiquito", status = 1 }));
            }
            catch (Exception ex)
            {
                return(Json(new { strMensaje = ex.Message, status = 0 }));
            }
        }
コード例 #7
0
        public async Task <IActionResult> Edit(string id)
        {
            try
            {
                if (!string.IsNullOrEmpty(id))
                {
                    var ProcesoNomina = new ProcesoNomina {
                        IdProceso = Convert.ToInt32(id)
                    };
                    var respuesta = await apiServicio.ObtenerElementoAsync1 <Response>(ProcesoNomina, new Uri(WebApp.BaseAddress),
                                                                                       "api/ProcesoNomina/ObtenerProcesoNomina");

                    if (respuesta.IsSuccess)
                    {
                        InicializarMensaje(null);
                        var vista = JsonConvert.DeserializeObject <ProcesoNomina>(respuesta.Resultado.ToString());
                        return(View(vista));
                    }
                }

                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorCargarDatos}"));
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
コード例 #8
0
        public async Task <IActionResult> Edit(ProcesoNomina ProcesoNomina)
        {
            if (!ModelState.IsValid)
            {
                return(View(ProcesoNomina));
            }
            Response response = new Response();

            try
            {
                if (ProcesoNomina.IdProceso > 0)
                {
                    response = await apiServicio.EditarAsync <Response>(ProcesoNomina, new Uri(WebApp.BaseAddress),
                                                                        "api/ProcesoNomina/EditarProcesoNomina");

                    if (response.IsSuccess)
                    {
                        return(this.Redireccionar($"{Mensaje.Informacion}|{Mensaje.Satisfactorio}"));
                    }
                    this.TempData["Mensaje"] = $"{Mensaje.Error}|{response.Message}";
                    return(View(ProcesoNomina));
                }
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorEditar}"));
            }
            catch (Exception)
            {
                return(this.Redireccionar($"{Mensaje.Error}|{Mensaje.ErrorEditar}"));
            }
        }
コード例 #9
0
ファイル: FiniquitoController.cs プロジェクト: IsraelBV/SUN
        public async Task <FileResult> GetRecibos33(int idFiniquito = 0)
        {
            if (idFiniquito == 0)
            {
                return(null);
            }

            // int[] nominas = new[] {1,2,3,4,5,6};

            //Random random = new Random();
            //int randomNumber = random.Next(0, 1000);//A

            var ruta        = Server.MapPath("~/Files/DownloadRecibos");
            var idusuario   = SessionHelpers.GetIdUsuario();
            var periodoPago = Session["periodo"] as NOM_PeriodosPago;

            if (periodoPago != null)
            {
                //Genera el xml
                var xml = await FacturaElectronica.GenerarXMLFiniquitoSintimbre(idFiniquito, periodoPago, periodoPago.IdEjercicio, periodoPago.IdPeriodoPago, idusuario, isCfdi33 : true);

                //Crear el pdf con el xml generado
                var recibo = await ProcesoNomina.GetRecibosFiniquitoSinTimbre(idFiniquito, periodoPago, idusuario, ruta, isCfdi33 : true);

                var file = System.IO.File.ReadAllBytes(recibo);

                var nombreArchivo = periodoPago.Descripcion + ".pdf";

                return(File(file, System.Net.Mime.MediaTypeNames.Application.Octet, nombreArchivo));
            }
            else
            {
                return(null);
            }
        }
コード例 #10
0
        public async Task <Response> EliminarProcesoNomina([FromBody] ProcesoNomina ProcesoNomina)
        {
            try
            {
                var respuesta = await db.ProcesoNomina.Where(m => m.IdProceso == ProcesoNomina.IdProceso).FirstOrDefaultAsync();

                if (respuesta == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.RegistroNoEncontrado,
                    });
                }
                db.ProcesoNomina.Remove(respuesta);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Message = Mensaje.Satisfactorio,
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.BorradoNoSatisfactorio,
                });
            }
        }
コード例 #11
0
        public async Task <Response> PostProcesoNomina([FromBody] ProcesoNomina ProcesoNomina)
        {
            try
            {
                if (!await Existe(ProcesoNomina))
                {
                    db.ProcesoNomina.Add(ProcesoNomina);
                    await db.SaveChangesAsync();

                    return(new Response
                    {
                        IsSuccess = true,
                        Message = Mensaje.Satisfactorio,
                        Resultado = ProcesoNomina,
                    });
                }

                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.ExisteRegistro
                });
            }
            catch (Exception)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Error,
                });
            }
        }
コード例 #12
0
        public JsonResult GuardarTotalAguinaldoCustom(int idAguinaldo, decimal totalA)
        {
            ProcesoNomina prn = new ProcesoNomina();

            prn.ActualizarTotalAguinaldo(idAguinaldo, totalA);

            return(Json(new { result = "OK - Aguinaldo" }, JsonRequestBehavior.AllowGet));
        }
コード例 #13
0
        public JsonResult GuardarDiasCredito(int idEmpPeriodo, int diasCredito)
        {
            //Actualizar el nuevo valor
            ProcesoNomina prn = new ProcesoNomina();

            prn.ActualizaDiasInfonavitByPeriodo(idEmpPeriodo, diasCredito);

            return(Json(new { result = "OK - nominas" }, JsonRequestBehavior.AllowGet));
        }
コード例 #14
0
        public PartialViewResult Creditos()
        {
            var           periodo = Session["periodo"] as NOM_PeriodosPago;
            ProcesoNomina prn     = new ProcesoNomina();

            var modeloCreditos = prn.GetCreditosEmpleadosByPeriodo(periodo.IdPeriodoPago);

            return(PartialView(modeloCreditos));
        }
コード例 #15
0
        public PartialViewResult IndexAguinaldo()
        {
            var periodo = Session["periodo"] as NOM_PeriodosPago;

            ViewBag.Procesando = periodo.Procesando == true;
            ViewBag.Autorizado = periodo.Autorizado;

            //Obtiene las nóminas ya existentes de este periodo
            ProcesoNomina pn = new ProcesoNomina();

            var activarComplemento = Session["activarComplemento"] as int?;

            ViewBag.Complemento = activarComplemento == 0 || activarComplemento == null ? false : true;
            //nominas = nominas.OrderBy(x => x.IdEmpleado).ToList();

            //nuevo modelo
            //var datosNominasModelo = pn.GetNominaDatosProcesado(periodo.IdPeriodoPago);
            var datosNominasModelo = pn.GetNominaDatosProcesadoAguinaldo(periodo.IdPeriodoPago);

            if (datosNominasModelo == null)
            {
                return(PartialView(null));
            }

            //var totalPercepciones = datosNominasModelo.Sum(x => x.Percepciones);
            //var totalDeducciones = datosNominasModelo.Sum(x => x.Deducciones);
            var totalNomina = datosNominasModelo.Sum(x => x.Total);
            //var totalOtrosPagos = datosNominasModelo.Sum(x => x.OtrosPagos);

            var zonaSalario = pn.GetZonaSalario();

            //ViewBag.totalP = 0;// totalPercepciones.ToCurrencyFormat(2, true);
            //ViewBag.totalD = 0;// totalDeducciones.ToCurrencyFormat(2, true);
            ViewBag.totalN          = totalNomina.ToCurrencyFormat(2, true);
            ViewBag.SMGV            = zonaSalario.SMG.ToCurrencyFormat(2, true);
            ViewBag.UMA             = zonaSalario.UMA.ToCurrencyFormat(2, true);
            ViewBag.SoloComplemento = periodo.SoloComplemento;
            List <NotificationSummary> listSummary = new List <NotificationSummary>();

            if (TempData["summary"] != null)
            {
                listSummary = TempData["summary"] as List <NotificationSummary>;
            }

            ViewBag.Summary = listSummary;

            int i = 0;
            int j = 0;

            int idUsuario = SessionHelpers.GetIdUsuario();

            return(PartialView(datosNominasModelo));
        }
コード例 #16
0
        private async Task <bool> Existe(ProcesoNomina ProcesoNomina)
        {
            var bdd = ProcesoNomina.Codigo.ToUpper().TrimEnd().TrimStart();
            var ProcesoNominarespuesta = await db.ProcesoNomina.Where(p => p.Codigo.ToUpper().TrimStart().TrimEnd() == bdd).FirstOrDefaultAsync();

            if (ProcesoNominarespuesta == null || ProcesoNominarespuesta.IdProceso == ProcesoNomina.IdProceso)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
コード例 #17
0
        public ActionResult DetalleAguinaldo(int id)
        {
            ProcesoNomina prn = new ProcesoNomina();

            RH.BLL.Empleados emp = new Empleados();

            var modelo = prn.GetAguinaldoByIdAguinaldo(id);

            var itemEmpleado = emp.GetEmpleadoById(modelo.IdEmpleado);

            ViewBag.Empleado = itemEmpleado;

            return(PartialView(modelo));
        }
コード例 #18
0
        public async Task <JsonResult> finiquito(int idEmpleado, int idFiniquito, ParametrosFiniquitos arrayF, bool calcularLiquidacion)
        {
            finiquitosClass finiq = new finiquitosClass();

            var periodo = Session["periodo"] as NOM_PeriodosPago;

            //idFiniquito = await finiquitosClass.ProcesarFiniquitoAsync(periodo, idEmpleado, false);

            idFiniquito = await ProcesoNomina.ProcesarFiniquitoIndemnizacionAsync(periodo.IdPeriodoPago, periodo.IdEjercicio, idEmpleado, periodo.IdSucursal, arrayF, calcularLiquidacion);

            //var fin = finiq.FiniquitoFiscal(periodo.IdPeriodoPago);
            ViewBag.esLiquidacion = calcularLiquidacion;

            return(Json(new { status = "OK - Fin Procesado de nominas", idFiniquito = idFiniquito }));
        }
コード例 #19
0
        public JsonResult GuardarConceptosVO(int[] visibles, int[] ocultos)
        {
            var ctx       = new ProcesoNomina();
            var mensaje   = "";
            var periodo   = Session["periodo"] as NOM_PeriodosPago;
            int idUsuario = SessionHelpers.GetIdUsuario();
            var result    = ctx.GuardarConfiguracion(idUsuario, periodo.IdSucursal, visibles, ocultos, 18);

            if (result == true)
            {
                mensaje = "mensaje guardado";
            }

            return(Json(new { message = mensaje }, JsonRequestBehavior.AllowGet));
        }
コード例 #20
0
ファイル: FiniquitoController.cs プロジェクト: IsraelBV/SUN
        public async Task <JsonResult> finiquito(int idEmpleado, int idFiniquito, ParametrosFiniquitos arrayF, bool calcularLiquidacion, bool paramArt174)
        {
            //finiquitosClass finiq = new finiquitosClass();

            var periodo  = Session["periodo"] as NOM_PeriodosPago;
            var sucursal = Session["sucursal"] as SucursalDatos;
            //idFiniquito = await finiquitosClass.ProcesarFiniquitoAsync(periodo, idEmpleado, false);
            int idUsuario = SessionHelpers.GetIdUsuario();

            idFiniquito = await ProcesoNomina.ProcesarFiniquitoIndemnizacionAsync(periodo.IdPeriodoPago, periodo.IdEjercicio, idEmpleado, sucursal.IdCliente, periodo.IdSucursal, arrayF, idUsuario, calcularLiquidacion, null, isArt174 : paramArt174);

            //var fin = finiq.FiniquitoFiscal(periodo.IdPeriodoPago);
            ViewBag.esLiquidacion = calcularLiquidacion;


            return(Json(new { status = "OK - Fin Procesado de nominas", idFiniquito = idFiniquito }));
        }
コード例 #21
0
        public PartialViewResult DetalleNomina(int id)
        {
            ProcesoNomina prn    = new ProcesoNomina();
            var           nomina = prn.GetNomina(id);

            ViewBag.Nomina = nomina;
            var detalle = prn.GetDetalleNomina(id);

            var activarComplemento = Session["activarComplemento"] as int?;

            if (activarComplemento == 0)
            {
                detalle = detalle.Where(x => x.Complemento != true).ToList();
            }
            ViewBag.ModoComplemento = activarComplemento == 1 ? true : false;
            return(PartialView(detalle));
        }
コード例 #22
0
        public async Task <Response> EditarProcesoNomina([FromBody] ProcesoNomina ProcesoNomina)
        {
            try
            {
                if (await Existe(ProcesoNomina))
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = Mensaje.ExisteRegistro,
                    });
                }

                var ProcesoNominaActualizar = await db.ProcesoNomina.Where(x => x.IdProceso == ProcesoNomina.IdProceso).FirstOrDefaultAsync();

                if (ProcesoNominaActualizar == null)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                    });
                }

                ProcesoNominaActualizar.Codigo      = ProcesoNomina.Codigo;
                ProcesoNominaActualizar.Descripcion = ProcesoNomina.Descripcion;
                db.ProcesoNomina.Update(ProcesoNominaActualizar);
                await db.SaveChangesAsync();

                return(new Response
                {
                    IsSuccess = true,
                    Resultado = ProcesoNominaActualizar
                });
            }
            catch (Exception)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = Mensaje.Excepcion
                });
            }
        }
コード例 #23
0
        public async Task <FileResult> GetRecibos(int[] idNominas = null)
        {
            try
            {
                if (idNominas == null)
                {
                    return(null);
                }

                Random random       = new Random();
                int    randomNumber = random.Next(0, 1000);//A

                var ruta        = Server.MapPath("~/Files/DownloadRecibos");
                var idusuario   = SessionHelpers.GetIdUsuario();
                var periodoPago = Session["periodo"] as NOM_PeriodosPago;
                if (periodoPago != null)
                {
                    //Genera el xml
                    var xml = await FacturaElectronica.GenerarXMLSintimbre(idNominas, periodoPago, periodoPago.IdEjercicio, periodoPago.IdPeriodoPago, idusuario);

                    //Crear el pdf con el xml generado
                    var recibo = await ProcesoNomina.GetRecibosSinTimbre(idNominas, periodoPago, idusuario, ruta);

                    var file = System.IO.File.ReadAllBytes(recibo);

                    var nombreArchivo = periodoPago.Descripcion + ".pdf";

                    return(File(file, System.Net.Mime.MediaTypeNames.Application.Octet, nombreArchivo));
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception)
            {
                return(null);
            }
            finally
            {
            }
        }
コード例 #24
0
        public async Task <FileResult> GetRecibosComplemento(int[] idEmpleados = null)
        {
            try
            {
                if (idEmpleados == null)
                {
                    return(null);
                }

                // int[] nominas = new[] {1,2,3,4,5,6};
                Random random = new Random();
                // int randomNumber = random.Next(0, 1000);//A

                var ruta        = Server.MapPath("~/Files/DownloadRecibos");
                var idusuario   = SessionHelpers.GetIdUsuario();
                var periodoPago = Session["periodo"] as NOM_PeriodosPago;
                if (periodoPago != null)
                {
                    //Crear el pdf con el xml generado
                    var recibo = await ProcesoNomina.GetRecibosComplementoDetalle(idEmpleados, periodoPago, idusuario, ruta);

                    var file = System.IO.File.ReadAllBytes(recibo);

                    var nombreArchivo = "COMP_" + periodoPago.Descripcion + ".pdf";

                    return(File(file, System.Net.Mime.MediaTypeNames.Application.Octet, nombreArchivo));
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception)
            {
                return(null);
            }
            finally
            {
            }
        }
コード例 #25
0
        public async Task <JsonResult> ProcesarAguinaldo(int[] empleados, string[] faltas, bool[] generarPensionAlimenticia, bool anual = false)
        {
            //Validar que la Sesion del periodo este activa
            if (Session["periodo"] != null)
            {
                var periodoPago = Session["periodo"] as NOM_PeriodosPago;

                //Actualizar los datos del periodo en la variable de session
                PeriodosPago ctx = new PeriodosPago();
                var          periodoActualizado = ctx.GetPeriodoPagoById(periodoPago.IdPeriodoPago);
                Session["periodo"] = periodoActualizado;

                //Validar que el periodo no este Autorizado
                if (periodoActualizado.Autorizado)
                {
                    return(Json(new { status = "El periodo ya esta Autorizado, no se puede volver a procesar" }, JsonRequestBehavior.AllowGet));
                }

                if (periodoActualizado.Procesando)
                {
                    return(Json(new { status = "El periodo esta siendo procesado en este momento ... Favor de Esperar... " }, JsonRequestBehavior.AllowGet));
                }

                var sucursal = Session["sucursal"] as SucursalDatos;

                //INICIA EL PROCESADO DE LA NOMINA
                if (sucursal != null)
                {
                    var summary = await ProcesoNomina.ProcesarAguinaldoAsync(empleados, faltas, generarPensionAlimenticia, periodoActualizado.IdPeriodoPago, sucursal.IdCliente, sucursal.IdSucursal, SessionHelpers.GetIdUsuario(), anual);

                    if (summary != null)
                    {
                        TempData["summary"] = summary;
                    }
                }
            }

            return(Json(new { status = "OK - nominas" }, JsonRequestBehavior.AllowGet));
        }
コード例 #26
0
        // GET: PrimaVacacional
        public ActionResult Index()
        {
            int idUsuario = SessionHelpers.GetIdUsuario();

            var periodo  = Session["periodo"] as NOM_PeriodosPago;
            var sucursal = Session["sucursal"] as SucursalDatos;

            PrimaVacacionalModulo pv = new PrimaVacacionalModulo();
            var listaPrima           = pv.GetDatosPrimasByPeriodo(periodo.IdPeriodoPago);

            //get SM
            ProcesoNomina pn          = new ProcesoNomina();
            var           zonaSalario = pn.GetZonaSalario();
            //get ISN
            var isnValor = pn.GetParametrosConfig("ISN");

            ViewBag.IsnValor = isnValor.ValorDecimal;
            ViewBag.SmValor  = zonaSalario.SMG;


            return(PartialView(listaPrima));
        }
コード例 #27
0
ファイル: FiniquitoController.cs プロジェクト: IsraelBV/SUN
        public async Task <JsonResult> SaveCustomData()
        {
            int  idFiniquito            = 0;
            int  idEmpleado             = 0;
            bool esLiquidacion          = false;
            bool isArt174               = false;
            ParametrosFiniquitos arrayF = null;

            try
            {
                string strTotal3MesesF = Request.Form["totalTresMesesF"];
                string strTotal3MesesC = Request.Form["totalTresMesesC"];

                string strTotal20DiasF = Request.Form["totalVeinteF"];
                string strTotal20DiasC = Request.Form["totalVeinteC"];

                string strTotalPrimaF = Request.Form["totalPrimaF"];
                string strTotalPrimaC = Request.Form["totalPrimaC"];

                idFiniquito   = Convert.ToInt32(Request.Form["idFiniquito"]);
                idEmpleado    = Convert.ToInt32(Request.Form["idEmpleado"]);
                esLiquidacion = Convert.ToBoolean(Request.Form["esLiquidacion"]);

                isArt174 = Convert.ToBoolean(Request.Form["esArt174"]);

                string strTotalPrimaVacF = Request.Form["totalPrimaVacacionesF"];
                string strTotalPrimaVacC = Request.Form["totalPrimaVacacionesC"];

                if (idFiniquito <= 0)
                {
                    return(Json(new { strMensaje = "Es necesario procesar el finiquito para generar sus datos.", status = 1 }));
                }

                //if es null o vacio retorna -1
                decimal total3mesesF = Utils.ConvertToDecimal(strTotal3MesesF);
                decimal total3mesesC = Utils.ConvertToDecimal(strTotal3MesesC);

                decimal total20DiasF = Utils.ConvertToDecimal(strTotal20DiasF);
                decimal total20DiasC = Utils.ConvertToDecimal(strTotal20DiasC);

                decimal totalPrimaF = Utils.ConvertToDecimal(strTotalPrimaF);
                decimal totalPrimaC = Utils.ConvertToDecimal(strTotalPrimaC);

                decimal totalPrimaVacF = Utils.ConvertToDecimal(strTotalPrimaVacF);
                decimal totalPrimaVacC = Utils.ConvertToDecimal(strTotalPrimaVacC);

                //string[] keys = Request.Form.AllKeys;
                //for (int i = 0; i < keys.Length; i++)
                //{
                //}

                //Validar el finiquito guardado si existen cambios en sus totales antes de volver a procesar

                var periodo  = Session["periodo"] as NOM_PeriodosPago;
                var sucursal = Session["sucursal"] as SucursalDatos;

                int idUsuario = SessionHelpers.GetIdUsuario();

                TotalPersonalizablesFiniquitos customTotal = new TotalPersonalizablesFiniquitos();
                customTotal.TotalTresMesesFiscalPersonalizado  = total3mesesF;
                customTotal.TotalTresMesesCompPersonalizado    = total3mesesC;
                customTotal.TotalVeinteDiasFiscalPersonalizado = total20DiasF;
                customTotal.TotalVienteDiasCompPersonalizado   = total20DiasC;
                customTotal.TotalPrimaFiscalPersonalizado      = totalPrimaF;
                customTotal.TotalPrimaCompPersonalizado        = totalPrimaC;
                customTotal.TotalPrimaVacPersonalizado         = totalPrimaVacF;
                customTotal.TotalPrimaVacCompPersonalizado     = totalPrimaVacC;

                ParametrosFiniquitos arrayFF = new ParametrosFiniquitos();

                arrayFF.FechaBajaF            = Convert.ToDateTime(Request.Form["fechaBaja"]);
                arrayFF.FechaAltaF            = Convert.ToDateTime(Request.Form["fechaAltaF"]);
                arrayFF.FechaAguinaldoF       = Convert.ToDateTime(Request.Form["fechaAguinaldoF"]);
                arrayFF.FechaVacacionesF      = Convert.ToDateTime(Request.Form["fechaVacacionesF"]);
                arrayFF.FechaAguinaldoC       = Convert.ToDateTime(Request.Form["fechaAguinaldo"]);
                arrayFF.FechaVacacionesC      = Convert.ToDateTime(Request.Form["fechaVacaciones"]);
                arrayFF.DiasSueldoPendientesF = Utils.ConvertToDecimal(Request.Form["diasSueldoPendienteF"].ToString());

                arrayFF.DiasVacacionesPendientesF = Utils.ConvertToDecimal(Request.Form["diasVacacionesPendientesF"]);
                arrayFF.DiasSueldoPendientesC     = Utils.ConvertToDecimal(Request.Form["diasSueldoPendiente"]);
                arrayFF.DiasVacacionesPendientesC = Utils.ConvertToDecimal(Request.Form["diasVacacionesPendientes"]);

                arrayFF.MesesSalarioF   = Utils.ConvertToDecimal(Request.Form["mesesSalarioF"]);
                arrayFF.MesesSalarioC   = Utils.ConvertToDecimal(Request.Form["mesesSalarioC"]);
                arrayFF.VeinteDiasPorAF = Utils.ConvertToDecimal(Request.Form["veinteXAF"]);
                arrayFF.VeinteDiasPorAC = Utils.ConvertToDecimal(Request.Form["veinteXAC"]);

                arrayFF.DiasVacCorrespondientesF = Utils.ConvertToInt(Request.Form["diasVacacionesF"]);
                arrayFF.DiasVacCorrespondientesC = Utils.ConvertToInt(Request.Form["diasVacacionesC"]);

                arrayFF.PorcentajePimaVacPendienteF = Utils.ConvertToDecimal(Request.Form["primaVacacionalPendienteF"]);
                arrayFF.PorcentajePimaVacPendienteC = Utils.ConvertToDecimal(Request.Form["primaVacacionalPendienteC"]);

                arrayFF.TipoTarifa = Utils.ConvertToInt(Request.Form["selectTarifa"]);

                arrayFF.DiasAguinaldoF = Utils.ConvertToInt(Request.Form["diasAguinaldoF"]);
                arrayFF.DiasAguinaldoC = Utils.ConvertToInt(Request.Form["diasAguinaldoC"]);


                idFiniquito = await ProcesoNomina.ProcesarFiniquitoIndemnizacionAsync(periodo.IdPeriodoPago, periodo.IdEjercicio, idEmpleado, sucursal.IdCliente, periodo.IdSucursal, arrayFF, idUsuario, esLiquidacion, customTotal, isArt174);

                return(Json(new { strMensaje = "OK - Procesado de Finiquito", status = 1 }));
            }
            catch (Exception ex)
            {
                return(Json(new { strMensaje = ex.Message, status = 0 }));
            }
        }
コード例 #28
0
        // GET: ProcesoNomina
        public PartialViewResult Index()
        {
            var periodo = Session["periodo"] as NOM_PeriodosPago;

            ViewBag.Procesando = periodo.Procesando == true;
            ViewBag.Autorizado = periodo.Autorizado;

            //Obtiene las nóminas ya existentes de este periodo
            ProcesoNomina pn = new ProcesoNomina();

            var activarComplemento = Session["activarComplemento"] as int?;

            ViewBag.Complemento = activarComplemento == 0 || activarComplemento == null ? false : true;
            //nominas = nominas.OrderBy(x => x.IdEmpleado).ToList();

            //nuevo modelo
            var datosNominasModelo = pn.GetNominaDatosProcesado(periodo.IdPeriodoPago);

            if (datosNominasModelo == null)
            {
                return(PartialView(null));
            }

            var totalPercepciones = datosNominasModelo.Sum(x => x.Percepciones);
            var totalDeducciones  = datosNominasModelo.Sum(x => x.Deducciones);
            var totalNomina       = datosNominasModelo.Sum(x => x.TotalNomina);
            var totalOtrosPagos   = datosNominasModelo.Sum(x => x.OtrosPagos);

            var zonaSalario = pn.GetZonaSalario();

            ViewBag.totalP          = totalPercepciones.ToCurrencyFormat(2, true);
            ViewBag.totalD          = totalDeducciones.ToCurrencyFormat(2, true);
            ViewBag.totalN          = totalNomina.ToCurrencyFormat(2, true);
            ViewBag.SMGV            = zonaSalario.SMG.ToCurrencyFormat(2, true);
            ViewBag.UMA             = zonaSalario.UMA.ToCurrencyFormat(2, true);
            ViewBag.SoloComplemento = periodo.SoloComplemento;

            List <NotificationSummary> listSummary = new List <NotificationSummary>();

            if (TempData["summary"] != null)
            {
                listSummary = TempData["summary"] as List <NotificationSummary>;
            }

            ViewBag.Summary = listSummary;

            int i = 0;
            int j = 0;

            int idUsuario = SessionHelpers.GetIdUsuario();


            if (!periodo.SoloComplemento)
            {
                #region CONFIGURACION DE CONCEPTOS
                var configuracion = pn.ObtenerConfiguracion(idUsuario, periodo.IdSucursal, 18);

                if (configuracion != null)
                {
                    var   visible      = configuracion.ConceptosVisibles.Split(',');
                    var   oculto       = configuracion.ConceptosOcultos.Split(',');
                    int[] arrayVisible = new int[visible.Length];
                    int[] arrayOculto  = new int[oculto.Length];

                    foreach (var v in visible)
                    {
                        arrayVisible[i] = Convert.ToInt32(v);
                        i++;
                    }

                    foreach (var o in oculto)
                    {
                        arrayOculto[j] = Convert.ToInt32(o);
                        j++;
                    }

                    if (arrayVisible.Contains(8))
                    {
                    }
                    ViewBag.visible = arrayVisible;
                    ViewBag.oculto  = arrayOculto;
                }
                else
                {
                    if (datosNominasModelo.Count > 0)
                    {
                        var variable = datosNominasModelo[0];

                        int[] arrayVisible = new int[variable.Conceptos.Count];
                        int[] arrayOculto  = { };
                        arrayVisible    = variable.Conceptos.Select(x => x.IdConcepto).ToArray();
                        ViewBag.visible = arrayVisible;
                        ViewBag.oculto  = arrayOculto;
                    }
                }
                #endregion
            }
            return(PartialView(datosNominasModelo));
        }