コード例 #1
0
        // GET: Liquidaciones/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var liquidacion = await _context.Liquidaciones
                              .FirstOrDefaultAsync(m => m.LiquidacionId == id);

            if (liquidacion == null)
            {
                return(NotFound());
            }

            var vm = new LiquidacionViewModel
            {
                LiquidacionId       = liquidacion.LiquidacionId,
                Periodo             = liquidacion.Periodo,
                TotalRemunerativo   = liquidacion.TotalRemunerativo,
                TotalNoRemunerativo = liquidacion.TotalNoRemunerativo,
                TotalDeducciones    = liquidacion.TotalDeducciones,
                Neto         = liquidacion.Neto,
                NumeroLegajo = liquidacion.NumeroLegajo,
                Nombre       = liquidacion.Legajo.Nombre,
                Apellido     = liquidacion.Legajo.Apellido
            };

            foreach (var concepto in liquidacion.Conceptos)
            {
                var conceptoLiquidacion = new ConceptoLiquidacion
                {
                    ConceptoId     = concepto.ConceptoId,
                    CodigoConcepto = concepto.CodigoConcepto,
                    NombreConcepto = concepto.NombreConcepto,
                    Monto          = concepto.Monto,
                    Factor         = concepto.Factor,
                    TipoConcepto   = concepto.TipoConcepto,
                    Posicion       = concepto.Posicion
                };

                vm.Conceptos.Add(conceptoLiquidacion);
            }

            return(View(vm));
        }
コード例 #2
0
        public async Task <IActionResult> Create(LiquidacionViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var liquidacion = new Liquidacion
                {
                    NumeroLegajo = vm.NumeroLegajo,
                    Periodo      = vm.Periodo
                };

                _liquidacionService.AddLiquidacion(liquidacion);
                await _liquidacionService.SaveChangesAsync();

                return(RedirectToAction(nameof(Details), new { id = liquidacion.LiquidacionId }));
            }
            ViewData["NumeroLegajo"] = new SelectList(_context.Legajos, "NumeroLegajo", "NumeroLegajo", vm.NumeroLegajo);
            return(View(vm));
        }
        public JsonResult Obtener_Informacion_Empleado(int IdEmpleado, DateTime fechaFin, int IdMotivo)
        {
            int    anios = 0, meses = 0, dias = 0;
            object json, salarios;

            Session["Liquidaciones"] = "";
            using (ERP_GMEDINAEntities db = new ERP_GMEDINAEntities())
            {
                try
                {
                    var consulta = (from te in db.tbEmpleados
                                    join ta in db.tbAreas on te.area_Id equals ta.area_Id into ta_join
                                    from ta in ta_join.DefaultIfEmpty()
                                    join td in db.tbDepartamentos on te.depto_Id equals td.depto_Id into td_join
                                    from td in td_join.DefaultIfEmpty()
                                    join tp in db.tbPersonas on te.per_Id equals tp.per_Id into tp_join
                                    from tp in tp_join.DefaultIfEmpty()
                                    join tc in db.tbCargos on te.car_Id equals tc.car_Id into tc_join
                                    from tc in tc_join.DefaultIfEmpty()
                                    join ts in db.tbSueldos on te.emp_Id equals ts.emp_Id into ts_join
                                    from ts in ts_join.DefaultIfEmpty()
                                    join ttm in db.tbTipoMonedas on ts.tmon_Id equals ttm.tmon_Id into ttm_join
                                    from ttm in ttm_join.DefaultIfEmpty()
                                    where
                                    te.emp_Id == IdEmpleado &&
                                    te.emp_Estado == true &&
                                    ta.area_Estado == true &&
                                    td.depto_Estado == true &&
                                    tp.per_Estado == true &&
                                    tc.car_Estado == true &&
                                    ts.sue_Estado == true &&
                                    ttm.tmon_Estado == true
                                    select new
                    {
                        NúmeroIdentidad = tp.per_Identidad.Substring(0, 4) + "-" + tp.per_Identidad.Substring(4, 4) + "-" + tp.per_Identidad.Substring(9, tp.per_Identidad.Length - 9),
                        nombreEmpleado = tp.per_Nombres,
                        apellidoEmpleado = tp.per_Apellidos,
                        fechaIngreso = (te.emp_Fechaingreso.Year + "/" +
                                        ((te.emp_Fechaingreso.Month > 9) ? te.emp_Fechaingreso.Month.ToString() : "0" + te.emp_Fechaingreso.Month.ToString()) + "/" +
                                        ((te.emp_Fechaingreso.Day > 9) ? te.emp_Fechaingreso.Day.ToString() : "0" + te.emp_Fechaingreso.Day.ToString())),
                        sexoEmpleado = (tp.per_Sexo == "m" || tp.per_Sexo == "M") ? "Masculino" : "Femenino",
                        edadEmpleado = (int?)tp.per_Edad,
                        descripcionDepartamento = td.depto_Descripcion,
                        descripcionCargo = tc.car_Descripcion,
                        cantidadSueldo = (decimal?)ts.sue_Cantidad,
                        descripcionMoneda = ttm.tmon_Descripcion
                    }).ToList();
                    //OBTENER: ANTIGUEDAD
                    int TotalDiasLaborados = (int)Liquidacion.Dias360Mes(fechaFin, IdEmpleado);

                    int residuo = 0;
                    //OBTENER AÑOS
                    anios = (TotalDiasLaborados > 360) ? TotalDiasLaborados / 360 : 0;
                    //SETEAR LA VARIABLE DE RESIDUO
                    residuo = (anios > 0) ? TotalDiasLaborados - (anios * 360) : TotalDiasLaborados;
                    //OBTENER MESES
                    meses = (residuo > 30) ? (residuo / 30) : 0;
                    //SETEAR LA VARIABLE DE RESIDUO
                    residuo = (meses > 0) ? residuo - (meses * 30) : residuo;
                    //OBTENER DIAS
                    dias = residuo;

                    salarios = Liquidacion.EjecutarCalculosSalarios(IdEmpleado);
                    //OBTENER: ABSTRACCION - SALARIO ORDINARIO DIARIO
                    decimal SalarioOrdinarioMensual = Helpers.Liquidacion.Calculo_SalarioOrdinarioMensual(IdEmpleado);
                    //ALMACENAMIENTO DE VALORES DE RETORNO EN METODOS UTILITARIOS
                    decimal Monto_Preaviso = Helpers.Liquidacion.Calculo_PagoDePreaviso(IdEmpleado, SalarioOrdinarioMensual, TotalDiasLaborados);
                    decimal Monto_Cesantia = Helpers.Liquidacion.Calculo_PagoDeCesantia(IdEmpleado, SalarioOrdinarioMensual, TotalDiasLaborados);
                    decimal Monto_DecimoCuartoProporcional = Helpers.Liquidacion.Calculo_DecimoCuartoMesProporcional(IdEmpleado, fechaFin, SalarioOrdinarioMensual);
                    decimal Monto_DecimoTercerProporcional = Helpers.Liquidacion.Calculo_DecimoTercerMesProporcional(IdEmpleado, fechaFin, SalarioOrdinarioMensual);
                    decimal Monto_VacacionesProporcionales = Helpers.Liquidacion.Calculo_VacacionesProporcionales(IdEmpleado, fechaFin, SalarioOrdinarioMensual, TotalDiasLaborados);


                    //CALCULAR EL PAGO DE CONCEPTOS PROPORCIONAL AL MOTIVO DE LIQUIDACION
                    var PorcentajeLiqudiacion = from Porcentajes in db.tbPorcentajeMotivoLiquidacion
                                                join Motivos in db.tbMotivoLiquidacion on Porcentajes.moli_IdMotivo equals Motivos.moli_IdMotivo
                                                where Motivos.moli_IdMotivo == IdMotivo
                                                select new
                    {
                        Cesantia         = Porcentajes.pml_Cesantia,
                        Preaviso         = Porcentajes.pml_Preaviso,
                        DecimoTercerProp = Porcentajes.pml_DecimoTercerProp,
                        DecimoCuartoProp = Porcentajes.pml_DecimoCuartoProp,
                        Vacaciones       = Porcentajes.pml_Vacaciones
                    };
                    //ITERAR LA LISTA CON LOS PORCENTAJES DE LIQUIDACION CORRESPONDIENTES
                    foreach (var iter in PorcentajeLiqudiacion)
                    {
                        Monto_Preaviso = Math.Round(((decimal)(Monto_Preaviso * iter.Preaviso) / 100), 2);
                        Monto_Cesantia = Math.Round(((decimal)(Monto_Cesantia * iter.Cesantia) / 100), 2);
                        Monto_DecimoCuartoProporcional = Math.Round(((decimal)(Monto_DecimoCuartoProporcional * iter.DecimoCuartoProp) / 100), 2);
                        Monto_DecimoTercerProporcional = Math.Round(((decimal)(Monto_DecimoTercerProporcional * iter.DecimoTercerProp) / 100), 2);
                        Monto_VacacionesProporcionales = Math.Round(((decimal)(Monto_VacacionesProporcionales * iter.Vacaciones) / 100), 2);
                    }

                    //SUMATORIA DEL TOTAL INICIAL SIN CONCEPTOS ADICIONALES
                    decimal Total_Liquidacion = Monto_Preaviso + Monto_Cesantia + Monto_DecimoCuartoProporcional + Monto_DecimoTercerProporcional + Monto_VacacionesProporcionales;
                    //INICIALIZAR LA CONSTRUCCION DEL OBJETO EN SESSION
                    LiquidacionViewModel LiquidacionVM = new LiquidacionViewModel();
                    LiquidacionVM.emp_Id                          = IdEmpleado;
                    LiquidacionVM.FechaLiquidacion                = fechaFin;
                    LiquidacionVM.SalarioOrdinarioMensual_Liq     = SalarioOrdinarioMensual;
                    LiquidacionVM.SalarioPromedioMensual_Liq      = (SalarioOrdinarioMensual * 14) / 12;
                    LiquidacionVM.SalarioOrdinarioDiario_Liq      = (SalarioOrdinarioMensual) / 30;
                    LiquidacionVM.SalarioPromedioDiario_Liq       = (SalarioOrdinarioMensual * 14) / 360;
                    LiquidacionVM.Preaviso_Liq                    = Monto_Preaviso;
                    LiquidacionVM.Cesantia_Liq                    = Monto_Cesantia;
                    LiquidacionVM.DecimoTercerMesProporcional_Liq = Monto_DecimoTercerProporcional;
                    LiquidacionVM.DecimoCuartoMesProporcional_Liq = Monto_DecimoCuartoProporcional;
                    LiquidacionVM.VacacionesPendientes_Liq        = Monto_VacacionesProporcionales;
                    LiquidacionVM.MontoTotalLiquidacion           = Math.Round(Total_Liquidacion, 2);
                    LiquidacionVM.moli_Id                         = IdMotivo;
                    //ALMACENAMIENTO EN LA SESIÓN
                    LiquidacionViewModel sessionLiquidacion = new LiquidacionViewModel();
                    sessionLiquidacion       = LiquidacionVM;
                    Session["Liquidaciones"] = sessionLiquidacion;
                    json = new
                    {
                        Preaviso          = Monto_Preaviso,
                        Cesantia          = Monto_Cesantia,
                        DecimoCuarto      = Monto_DecimoCuartoProporcional,
                        DecimoTercer      = Monto_DecimoTercerProporcional,
                        Vacaciones        = Monto_VacacionesProporcionales,
                        Total_Liquidacion = Total_Liquidacion,
                        consulta,
                        anios,
                        meses,
                        dias,
                        salarios
                    };
                    return(Json(json, JsonRequestBehavior.AllowGet));
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                    return(Json("Error", JsonRequestBehavior.AllowGet));
                }
            }
            return(Json("Error", JsonRequestBehavior.AllowGet));
        }
        public JsonResult RegistrarLiquidacion()
        {
            //Instancia del objeto tbLiquidaciones
            LiquidacionViewModel tbLiquidaciones = (LiquidacionViewModel)Session["Liquidaciones"];
            //LLENAR LA DATA DE AUDITORIA, DE NO HACERLO EL MODELO NO SERÍA VÁLIDO Y SIEMPRE CAERÍA EN EL CATCH
            int idUser = (int)Session["UserLogin"];

            tbLiquidaciones.UsuarioCrea = idUser;
            tbLiquidaciones.FechaCrea   = Function.DatetimeNow();
            //VARIABLE PARA ALMACENAR EL RESULTADO DEL PROCESO Y ENVIARLO AL LADO DEL CLIENTE
            string response = "bien";
            IEnumerable <object> listLiquidacion = null;
            string MensajeError = "bien";

            //VALIDAR SI EL MODELO ES VÁLIDO
            if (ModelState.IsValid)
            {
                try
                {
                    //EJECUTAR PROCEDIMIENTO ALMACENADO
                    listLiquidacion = db.UDP_Plani_tbHistorialDeLiquidaciones_Insert(tbLiquidaciones.emp_Id,
                                                                                     tbLiquidaciones.FechaLiquidacion,
                                                                                     tbLiquidaciones.SalarioOrdinarioMensual_Liq,
                                                                                     tbLiquidaciones.SalarioPromedioMensual_Liq,
                                                                                     tbLiquidaciones.SalarioOrdinarioDiario_Liq,
                                                                                     tbLiquidaciones.SalarioPromedioDiario_Liq,
                                                                                     tbLiquidaciones.Preaviso_Liq,
                                                                                     tbLiquidaciones.Cesantia_Liq,
                                                                                     tbLiquidaciones.DecimoTercerMesProporcional_Liq,
                                                                                     tbLiquidaciones.DecimoCuartoMesProporcional_Liq,
                                                                                     tbLiquidaciones.VacacionesPendientes_Liq,
                                                                                     tbLiquidaciones.SalariosAdeudados,
                                                                                     tbLiquidaciones.OtrosPagos,
                                                                                     tbLiquidaciones.PagoHEPendiente,
                                                                                     tbLiquidaciones.ValorBonoEducativo,
                                                                                     tbLiquidaciones.PagoSeptimoDia,
                                                                                     tbLiquidaciones.BonoPorVacaciones,
                                                                                     tbLiquidaciones.ReajusteSalarial,
                                                                                     tbLiquidaciones.DecimoTercerMesAdeudado,
                                                                                     tbLiquidaciones.DecimoCuartoMesAdeudado,
                                                                                     tbLiquidaciones.BonificacionVacaciones,
                                                                                     tbLiquidaciones.PagoPorEmbarazo,
                                                                                     tbLiquidaciones.PagoPorLactancia,
                                                                                     tbLiquidaciones.PrePosNatal,
                                                                                     tbLiquidaciones.PagoPorDiasFeriado,
                                                                                     tbLiquidaciones.MontoTotalLiquidacion,
                                                                                     tbLiquidaciones.UsuarioCrea,
                                                                                     tbLiquidaciones.FechaCrea,
                                                                                     tbLiquidaciones.moli_Id);

                    //RECORRER EL TIPO COMPLEJO DEL PROCEDIMIENTO ALMACENADO PARA EVALUAR EL RESULTADO DEL SP
                    foreach (UDP_Plani_tbHistorialDeLiquidaciones_Insert_Result Resultado in listLiquidacion)
                    {
                        MensajeError = Resultado.MensajeError;
                    }

                    if (MensajeError.StartsWith("-1"))
                    {
                        //EN CASO DE OCURRIR UN ERROR, IGUALAMOS LA VARIABLE "RESPONSE" A ERROR PARA VALIDARLO EN EL CLIENTE
                        ModelState.AddModelError("", "No se pudo ingresar el registro, contacte al administrador");
                        response = "error";
                    }
                }
                catch (Exception Ex)
                {
                    //EN CASO DE CAER EN EL CATCH, IGUALAMOS LA VARIABLE "RESPONSE" A ERROR PARA VALIDARLO EN EL CLIENTE
                    response = Ex.Message.ToString();
                    return(Json("Error", JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                //SI EL MODELO NO ES VÁLIDO, IGUALAMOS LA VARIABLE "RESPONSE" A ERROR PARA VALIDARLO EN EL CLIENTE
                response = "error";
            }
            return(Json(response, JsonRequestBehavior.AllowGet));
        }
 public JsonResult CalcularLiquidacion(LiquidacionViewModel Liquidacion)
 {
     try
     {
         LiquidacionViewModel list = (LiquidacionViewModel)Session["Liquidaciones"];
         //OBTENER: ABSTRACCION - SALARIO ORDINARIO DIARIO
         decimal SalarioOrdinarioMensual = Helpers.Liquidacion.Calculo_SalarioOrdinarioMensual((int)list.emp_Id);
         //SETEO DE VARIABLES EN EL OBJETO DE LIQUIDACION
         list.SalariosAdeudados       = Liquidacion.SalariosAdeudados;
         list.OtrosPagos              = Liquidacion.OtrosPagos;
         list.PagoHEPendiente         = Liquidacion.PagoHEPendiente;
         list.ValorBonoEducativo      = Liquidacion.ValorBonoEducativo;
         list.PagoSeptimoDia          = Liquidacion.PagoSeptimoDia;
         list.BonoPorVacaciones       = Liquidacion.BonoPorVacaciones;
         list.ReajusteSalarial        = Liquidacion.ReajusteSalarial;
         list.DecimoTercerMesAdeudado = Liquidacion.DecimoTercerMesAdeudado;
         list.DecimoCuartoMesAdeudado = Liquidacion.DecimoCuartoMesAdeudado;
         list.BonificacionVacaciones  = (Liquidacion.BonificacionVacaciones) * ((SalarioOrdinarioMensual * 14) / 360);
         list.PagoPorEmbarazo         = (Liquidacion.PagoPorEmbarazo) * ((SalarioOrdinarioMensual * 14) / 360);
         list.PagoPorLactancia        = (Liquidacion.PagoPorLactancia) * ((((SalarioOrdinarioMensual * 14) / 360) / 9) * 8);
         list.PrePosNatal             = (Liquidacion.PrePosNatal) * ((SalarioOrdinarioMensual * 14) / 360);
         list.PagoPorDiasFeriado      = (Liquidacion.PagoPorDiasFeriado) * ((SalarioOrdinarioMensual * 14) / 360);
         //Validar las entradas nulas
         list.Preaviso_Liq = (list.Preaviso_Liq == null) ? 0 : list.Preaviso_Liq;
         list.Cesantia_Liq = (list.Cesantia_Liq == null) ? 0 : list.Cesantia_Liq;
         list.DecimoTercerMesProporcional_Liq = (list.DecimoTercerMesProporcional_Liq == null) ? 0 : list.DecimoTercerMesProporcional_Liq;
         list.DecimoCuartoMesProporcional_Liq = (list.DecimoCuartoMesProporcional_Liq == null) ? 0 : list.DecimoCuartoMesProporcional_Liq;
         list.VacacionesPendientes_Liq        = (list.VacacionesPendientes_Liq == null) ? 0 : list.VacacionesPendientes_Liq;
         list.SalariosAdeudados       = (list.SalariosAdeudados == null) ? 0 : list.SalariosAdeudados;
         list.OtrosPagos              = (list.OtrosPagos == null) ? 0 : list.OtrosPagos;
         list.PagoHEPendiente         = (list.PagoHEPendiente == null) ? 0 : list.PagoHEPendiente;
         list.ValorBonoEducativo      = (list.ValorBonoEducativo == null) ? 0 : list.ValorBonoEducativo;
         list.PagoSeptimoDia          = (list.PagoSeptimoDia == null) ? 0 : list.PagoSeptimoDia;
         list.BonoPorVacaciones       = (list.BonoPorVacaciones == null) ? 0 : list.BonoPorVacaciones;
         list.ReajusteSalarial        = (list.ReajusteSalarial == null) ? 0 : list.ReajusteSalarial;
         list.DecimoTercerMesAdeudado = (list.DecimoTercerMesAdeudado == null) ? 0 : list.DecimoTercerMesAdeudado;
         list.DecimoCuartoMesAdeudado = (list.DecimoCuartoMesAdeudado == null) ? 0 : list.DecimoCuartoMesAdeudado;
         list.BonificacionVacaciones  = (list.BonificacionVacaciones == null) ? 0 : list.BonificacionVacaciones;
         list.PagoPorEmbarazo         = (list.PagoPorEmbarazo == null) ? 0 : list.PagoPorEmbarazo;
         list.PagoPorLactancia        = (list.PagoPorLactancia == null) ? 0 : list.PagoPorLactancia;
         list.PrePosNatal             = (list.PrePosNatal == null) ? 0 : list.PrePosNatal;
         list.PagoPorDiasFeriado      = (list.PagoPorDiasFeriado == null) ? 0 : list.PagoPorDiasFeriado;
         //Total
         list.MontoTotalLiquidacion = list.Preaviso_Liq +
                                      list.Cesantia_Liq +
                                      list.DecimoTercerMesProporcional_Liq +
                                      list.DecimoCuartoMesProporcional_Liq +
                                      list.VacacionesPendientes_Liq +
                                      list.SalariosAdeudados +
                                      list.OtrosPagos +
                                      list.PagoHEPendiente +
                                      list.ValorBonoEducativo +
                                      list.PagoSeptimoDia +
                                      list.BonoPorVacaciones +
                                      list.ReajusteSalarial +
                                      list.DecimoTercerMesAdeudado +
                                      list.DecimoCuartoMesAdeudado +
                                      list.BonificacionVacaciones +
                                      list.PagoPorEmbarazo +
                                      list.PagoPorLactancia +
                                      list.PrePosNatal +
                                      list.PagoPorDiasFeriado;
         list.MontoTotalLiquidacion = Math.Round((decimal)list.MontoTotalLiquidacion, 2);
         Session["Liquidaciones"]   = list;
         return(Json(list, JsonRequestBehavior.AllowGet));
     }
     catch (Exception ex)
     {
         ex.Message.ToString();
         return(Json("Error", JsonRequestBehavior.AllowGet));
     }
     return(Json("Error", JsonRequestBehavior.AllowGet));
 }