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));
        }