Пример #1
0
 public ActionResult Edit([Bind(Include = "emp_Id,Nombres,per_Identidad,per_Sexo,per_Edad,per_Direccion,per_Telefono,per_CorreoElectronico,per_EstadoCivil,salarioBase,tmon_Id,tmon_Descripcion,cpla_IdPlanilla,cpla_DescripcionPlanilla")] V_PreviewPlanilla v_PreviewPlanilla)
 {
     if (ModelState.IsValid)
     {
         db.Entry(v_PreviewPlanilla).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(v_PreviewPlanilla));
 }
 public ActionResult Edit([Bind(Include = "isr_Id,isr_RangoInicial,isr_RangoFinal,isr_Porcentaje,tde_IdTipoDedu,isr_UsuarioCrea,isr_FechaCrea,isr_UsuarioModifica,isr_FechaModifica,isr_Activo")] tbISR tbISR)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tbISR).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.isr_UsuarioCrea     = new SelectList(db.tbUsuario, "usu_Id", "usu_NombreUsuario", tbISR.isr_UsuarioCrea);
     ViewBag.isr_UsuarioModifica = new SelectList(db.tbUsuario, "usu_Id", "usu_NombreUsuario", tbISR.isr_UsuarioModifica);
     ViewBag.tde_IdTipoDedu      = new SelectList(db.tbTipoDeduccion, "tde_IdTipoDedu", "tde_Descripcion", tbISR.tde_IdTipoDedu);
     return(View(tbISR));
 }
Пример #3
0
        public ActionResult RestaurarPassword(int?id)
        {
            if (ModelState.IsValidField("usuario"))
            {
                tbUsuario tbUsuario = db.tbUsuario.Find(id);
                if (tbUsuario != null)
                {
                    string emailsalida    = "*****@*****.**";
                    string passwordsalida = "sistemadeinventari0";
                    string emaildestino   = tbUsuario.usu_Correo;
                    string passwordnueva  = "";
                    //string passwordnueva = RandomPassword.Generate(8, PasswordGroup.Uppercase, PasswordGroup.Lowercase, PasswordGroup.Numeric);
                    db.Entry(tbUsuario).State = EntityState.Modified;
                    try
                    {
                        IEnumerable <object> List = null;
                        var MsjError = "0";
                        List = db.UDP_Acce_tbUsuario_PasswordRestore(tbUsuario.usu_Id, passwordnueva);
                        foreach (UDP_Acce_tbUsuario_PasswordRestore_Result Usuario in List)
                        {
                            MsjError = Usuario.MensajeError;
                        }

                        Email(emailsalida, passwordsalida, emaildestino, passwordnueva);

                        if (MsjError.StartsWith("-1"))
                        {
                            ModelState.AddModelError("", "No se guardó el registro , contacte al Administrador");
                            return(View(tbUsuario));
                        }
                        else
                        {
                            return(RedirectToAction("Index"));
                        }
                    }
                    catch (Exception Ex)
                    {
                        Ex.Message.ToString();
                        ModelState.AddModelError("", "No se guardó el registro , contacte al Administrador");
                        return(View(tbUsuario));
                    }
                }
            }
            else
            {
                ModelState.AddModelError("", "El usuario ingresado no existe");
            }
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "emp_Id,per_Id,car_Id,area_Id,depto_Id,jor_Id,cpla_IdPlanilla,fpa_IdFormaPago,emp_CuentaBancaria,emp_Reingreso,emp_Fechaingreso,emp_RazonSalida,emp_CargoAnterior,emp_FechaDeSalida,emp_Estado,emp_RazonInactivo,emp_UsuarioCrea,emp_FechaCrea,emp_UsuarioModifica,emp_FechaModifica")] tbEmpleados tbEmpleados)
 {
     if (ModelState.IsValid)
     {
         db.Entry(tbEmpleados).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.emp_UsuarioCrea     = new SelectList(db.tbUsuario, "usu_Id", "usu_NombreUsuario", tbEmpleados.emp_UsuarioCrea);
     ViewBag.emp_UsuarioModifica = new SelectList(db.tbUsuario, "usu_Id", "usu_NombreUsuario", tbEmpleados.emp_UsuarioModifica);
     ViewBag.area_Id             = new SelectList(db.tbAreas, "area_Id", "area_Descripcion", tbEmpleados.area_Id);
     ViewBag.car_Id = new SelectList(db.tbCargos, "car_Id", "car_Descripcion", tbEmpleados.car_Id);
     ViewBag.per_Id = new SelectList(db.tbPersonas, "per_Id", "per_Identidad", tbEmpleados.per_Id);
     return(View(tbEmpleados));
 }
        public static void ProcesarDeducciones(int monedaDeducciones, List <ViewModelTasasDeCambio> objMonedas, int userId, DateTime fechaInicio, DateTime fechaFin, List <IngresosDeduccionesVoucher> ListaDeduccionesVoucher, List <ViewModelListaErrores> listaErrores, ref int errores, ERP_GMEDINAEntities db, List <V_PlanillaDeducciones> oDeducciones, tbEmpleados empleadoActual, decimal SalarioBase, decimal?totalIngresosEmpleado, ref decimal?colaboradorDeducciones, ref decimal totalAFP, ref decimal?totalInstitucionesFinancieras, ref decimal?totalOtrasDeducciones, ref decimal?adelantosSueldo, out decimal?totalDeduccionesEmpleado, ref decimal?totalDeduccionesIndividuales, out decimal?netoAPagarColaborador, List <tbHistorialDeduccionPago> lisHistorialDeducciones, V_InformacionColaborador InformacionDelEmpleadoActual)
        {
            #region Procesar deducciones

            // instancia de los helpers
            Models.Helpers objHelpers = new Models.Helpers();

            // id del usuario logueado
            int idUser = userId;

            // validar que la planilla tenga deducciones
            if (oDeducciones.Count > 0)
            {
                // obtener id del tipo de moneda del sueldo del colaborador
                int idMonedaColaborador = db.tbSueldos.Where(x => x.emp_Id == InformacionDelEmpleadoActual.emp_Id && x.sue_Estado == true).Select(x => x.tmon_Id).FirstOrDefault();

                ViewModelTasasDeCambio tasaDeCambio = new ViewModelTasasDeCambio();

                // si el tipo de moneda del colaborador es distinto de la moneda de las deducciones seleccionada en el frontend, hacer la conversion
                if (idMonedaColaborador != monedaDeducciones)
                {
                    // no tengo idea de que estaba haciendo aquí gg
                    tasaDeCambio = objMonedas.Where(x => x.tmon_Id == idMonedaColaborador).FirstOrDefault();
                }

                // deducciones de la planilla
                foreach (var iterDeducciones in oDeducciones)
                {
                    decimal?porcentajeColaborador     = iterDeducciones.cde_PorcentajeColaborador;
                    decimal?porcentajeEmpresa         = iterDeducciones.cde_PorcentajeEmpresa;
                    decimal?montoDeduccionColaborador = SalarioBase;
                    decimal?montoDeduccionVoucher     = 0;

                    // si el tipo de moneda del colaborador es distinto de la moneda de las deducciones seleccionada en el frontend, hacer la conversion
                    if (idMonedaColaborador != monedaDeducciones)
                    {
                        montoDeduccionColaborador = (SalarioBase * tasaDeCambio.tmon_Cambio);
                    }

                    try
                    {
                        // verificar techos deducciones
                        List <tbTechosDeducciones> oTechosDeducciones = db.tbTechosDeducciones
                                                                        .Where(x => x.cde_IdDeducciones == iterDeducciones.cde_IdDeducciones &&
                                                                               x.tddu_Activo == true)
                                                                        .OrderBy(x => x.tddu_Techo)
                                                                        .ToList();
                        if (oTechosDeducciones.Count() > 0)
                        {
                            foreach (var techosDeduccionesIter in oTechosDeducciones)
                            {
                                if (montoDeduccionColaborador > techosDeduccionesIter.tddu_Techo)
                                {
                                    montoDeduccionColaborador = techosDeduccionesIter.tddu_Techo;
                                    porcentajeColaborador     = techosDeduccionesIter.tddu_PorcentajeColaboradores;
                                    porcentajeEmpresa         = techosDeduccionesIter.tddu_PorcentajeEmpresa;
                                }
                            }
                        }
                        //sumar las deducciones
                        colaboradorDeducciones += Math.Round((decimal)(montoDeduccionColaborador * porcentajeColaborador) / 100, 2);
                        montoDeduccionVoucher   = colaboradorDeducciones;

                        // si el tipo de moneda del colaborador es distinto de la moneda de las deducciones seleccionada en el frontend, hacer la conversion
                        if (idMonedaColaborador != monedaDeducciones)
                        {
                            montoDeduccionVoucher = Math.Round((decimal)(((montoDeduccionColaborador * porcentajeColaborador / 100)) / tasaDeCambio.tmon_Cambio), 2);
                        }


                        //Voucher
                        ListaDeduccionesVoucher.Add(new IngresosDeduccionesVoucher
                        {
                            concepto = iterDeducciones.cde_DescripcionDeduccion,
                            monto    = montoDeduccionVoucher
                        });

                        //Historial de deducciones
                        lisHistorialDeducciones.Add(new tbHistorialDeduccionPago
                        {
                            cde_IdDeducciones = iterDeducciones.cde_IdDeducciones,
                            hidp_Total        = montoDeduccionVoucher
                        });
                    }
                    catch (Exception ex)
                    {
                        listaErrores.Add(new ViewModelListaErrores
                        {
                            Identidad         = InformacionDelEmpleadoActual.per_Identidad,
                            NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos,
                            Error             = $"Error al procesar deducción {iterDeducciones.cde_DescripcionDeduccion}.",
                            PosibleSolucion   = "Verifique que la información de esta deducción y sus respectivos techos (si los tiene) esté completa y/o correcta."
                        });
                        errores++;
                    }
                }

                // si la moneda de las deducciones es distintas al tipo de moneda del colaborador, convertir a la moneda del colaborador
                // antes de agregarlo al reporte final

                if (idMonedaColaborador != monedaDeducciones)
                {
                    colaboradorDeducciones = Math.Round(((decimal)colaboradorDeducciones) / tasaDeCambio.tmon_Cambio, 2);
                }
            }


            //instituciones financieras
            List <tbDeduccionInstitucionFinanciera> oDeduInstiFinancieras = db.tbDeduccionInstitucionFinanciera
                                                                            .Where(x => x.emp_Id == empleadoActual.emp_Id &&
                                                                                   x.deif_Activo == true &&
                                                                                   x.deif_Pagado == false &&
                                                                                   x.deif_FechaCrea >= fechaInicio &&
                                                                                   x.deif_FechaCrea <= fechaFin)
                                                                            .ToList();

            if (oDeduInstiFinancieras.Count > 0)
            {
                // sumarlas todas
                foreach (var oDeduInstiFinancierasIterador in oDeduInstiFinancieras)
                {
                    try
                    {
                        totalInstitucionesFinancieras += Math.Round((decimal)oDeduInstiFinancierasIterador.deif_Monto, 2);
                        // pasar el estado de la deduccion a pagada
                        oDeduInstiFinancierasIterador.deif_Pagado          = true;
                        oDeduInstiFinancierasIterador.deif_UsuarioModifica = idUser;
                        oDeduInstiFinancierasIterador.deif_FechaModifica   = objHelpers.DatetimeNow();
                        db.Entry(oDeduInstiFinancierasIterador).State      = EntityState.Modified;

                        // agregar al voucher
                        ListaDeduccionesVoucher.Add(new IngresosDeduccionesVoucher
                        {
                            concepto = $"{oDeduInstiFinancierasIterador.tbInstitucionesFinancieras.insf_DescInstitucionFinanc} {oDeduInstiFinancierasIterador.deif_Comentarios}",
                            monto    = Math.Round((decimal)oDeduInstiFinancierasIterador.deif_Monto, 2)
                        });

                        // Historial de deducciones
                        lisHistorialDeducciones.Add(new tbHistorialDeduccionPago
                        {
                            cde_IdDeducciones = oDeduInstiFinancierasIterador.cde_IdDeducciones,
                            hidp_Total        = Math.Round((decimal)oDeduInstiFinancierasIterador.deif_Monto, 2)
                        });
                    }
                    catch (Exception ex)
                    {
                        listaErrores.Add(new ViewModelListaErrores
                        {
                            Identidad         = InformacionDelEmpleadoActual.per_Identidad,
                            NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos,
                            Error             = $"Error al procesar deduccion por institución financiera {oDeduInstiFinancierasIterador.tbInstitucionesFinancieras.insf_DescInstitucionFinanc} - {oDeduInstiFinancierasIterador.deif_Comentarios} - {oDeduInstiFinancierasIterador.deif_Monto}.",
                            PosibleSolucion   = "Verifique que la información de esta deducción sea correcta de acuerdo al formato leído por el sistema."
                        });
                        errores++;
                    }
                }
            }
            // deducciones afp
            List <tbDeduccionAFP> oDeduccionAfp = db.tbDeduccionAFP
                                                  .Where(af => af.emp_Id == empleadoActual.emp_Id &&
                                                         af.dafp_Activo == true
                                                         )
                                                  .ToList();

            // respaldo de where's de deduccion afp
            //af.dafp_FechaCrea >= fechaInicio &&
            //af.dafp_FechaCrea <= fechaFin

            if (oDeduccionAfp.Count > 0)
            {
                // sumarlas todas
                foreach (var oDeduccionAfpIter in oDeduccionAfp)
                {
                    try
                    {
                        totalAFP += Math.Round(oDeduccionAfpIter.dafp_AporteLps, 2);

                        //pasar el estado del aporte a pagado
                        //oDeduccionAfpIter.dafp_Pagado = true;
                        oDeduccionAfpIter.dafp_UsuarioModifica = idUser;
                        oDeduccionAfpIter.dafp_FechaModifica   = objHelpers.DatetimeNow();
                        db.Entry(oDeduccionAfpIter).State      = EntityState.Modified;

                        ListaDeduccionesVoucher.Add(new IngresosDeduccionesVoucher
                        {
                            concepto = oDeduccionAfpIter.tbAFP.afp_Descripcion,
                            monto    = Math.Round(oDeduccionAfpIter.dafp_AporteLps, 2)
                        });
                    }
                    catch (Exception ex)
                    {
                        listaErrores.Add(new ViewModelListaErrores
                        {
                            Identidad         = InformacionDelEmpleadoActual.per_Identidad,
                            NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos,
                            Error             = $"Error al procesar deduccion AFP. {oDeduccionAfpIter.tbAFP.afp_Descripcion} - {oDeduccionAfpIter.dafp_AporteLps}",
                            PosibleSolucion   = "Verifique que la información de esta deducción esté correcta y/o completa."
                        });
                        errores++;
                    }
                }
            }

            // deducciones extras
            List <tbDeduccionesExtraordinarias> oDeduccionesExtrasColaborador = db.tbDeduccionesExtraordinarias
                                                                                .Where(DEX => DEX.tbEquipoEmpleados.emp_Id == empleadoActual.emp_Id &&
                                                                                       DEX.dex_MontoRestante > 0 &&
                                                                                       DEX.dex_Activo == true)
                                                                                .ToList();

            if (oDeduccionesExtrasColaborador.Count > 0)
            {
                // sumarlas todas
                foreach (var oDeduccionesExtrasColaboradorIterador in oDeduccionesExtrasColaborador)
                {
                    try
                    {
                        totalOtrasDeducciones += oDeduccionesExtrasColaboradorIterador.dex_MontoRestante <= oDeduccionesExtrasColaboradorIterador.dex_Cuota ? oDeduccionesExtrasColaboradorIterador.dex_MontoRestante : oDeduccionesExtrasColaboradorIterador.dex_Cuota;

                        // agregar al comprobante de pago
                        ListaDeduccionesVoucher.Add(new IngresosDeduccionesVoucher
                        {
                            concepto = oDeduccionesExtrasColaboradorIterador.dex_ObservacionesComentarios,
                            monto    = Math.Round((decimal)oDeduccionesExtrasColaboradorIterador.dex_Cuota, 2)
                        });

                        // restar la cuota al monto restante
                        oDeduccionesExtrasColaboradorIterador.dex_MontoRestante   = oDeduccionesExtrasColaboradorIterador.dex_MontoRestante <= oDeduccionesExtrasColaboradorIterador.dex_Cuota ? oDeduccionesExtrasColaboradorIterador.dex_MontoRestante - oDeduccionesExtrasColaboradorIterador.dex_MontoRestante : oDeduccionesExtrasColaboradorIterador.dex_MontoRestante - oDeduccionesExtrasColaboradorIterador.dex_Cuota;
                        oDeduccionesExtrasColaboradorIterador.dex_UsuarioModifica = idUser;
                        oDeduccionesExtrasColaboradorIterador.dex_FechaModifica   = objHelpers.DatetimeNow();
                        db.Entry(oDeduccionesExtrasColaboradorIterador).State     = EntityState.Modified;

                        // Historial de deducciones
                        lisHistorialDeducciones.Add(new tbHistorialDeduccionPago
                        {
                            cde_IdDeducciones = oDeduccionesExtrasColaboradorIterador.cde_IdDeducciones,
                            hidp_Total        = Math.Round((decimal)oDeduccionesExtrasColaboradorIterador.dex_Cuota, 2)
                        });
                    }
                    catch (Exception ex)
                    {
                        listaErrores.Add(new ViewModelListaErrores
                        {
                            Identidad         = InformacionDelEmpleadoActual.per_Identidad,
                            NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos,
                            Error             = $"Error al procesar deduccion extra. {oDeduccionesExtrasColaboradorIterador.dex_ObservacionesComentarios} - {oDeduccionesExtrasColaboradorIterador.dex_Cuota}",
                            PosibleSolucion   = "Verifique que la información de esta deducción esté correcta y/o completa."
                        });
                        errores++;
                    }
                }
            }

            // adelantos de sueldo
            List <tbAdelantoSueldo> oAdelantosSueldo = db.tbAdelantoSueldo
                                                       .Where(x => x.emp_Id == empleadoActual.emp_Id &&
                                                              x.adsu_Activo == true && x.adsu_Deducido == false &&
                                                              x.adsu_FechaAdelanto >= fechaInicio &&
                                                              x.adsu_FechaAdelanto <= fechaFin)
                                                       .ToList();

            if (oAdelantosSueldo.Count > 0)
            {
                // sumarlas todas
                foreach (var oAdelantosSueldoIterador in oAdelantosSueldo)
                {
                    try
                    {
                        adelantosSueldo += Math.Round((decimal)oAdelantosSueldoIterador.adsu_Monto, 2);
                        // pasar el estado del adelanto a deducido
                        oAdelantosSueldoIterador.adsu_Deducido        = true;
                        oAdelantosSueldoIterador.adsu_UsuarioModifica = idUser;
                        oAdelantosSueldoIterador.adsu_FechaModifica   = objHelpers.DatetimeNow();
                        db.Entry(oAdelantosSueldoIterador).State      = EntityState.Modified;

                        ListaDeduccionesVoucher.Add(new IngresosDeduccionesVoucher
                        {
                            concepto = $"Adelanto sueldo ({oAdelantosSueldoIterador.adsu_RazonAdelanto})",
                            monto    = Math.Round((decimal)oAdelantosSueldoIterador.adsu_Monto, 2)
                        });
                    }
                    catch (Exception ex)
                    {
                        listaErrores.Add(new ViewModelListaErrores
                        {
                            Identidad         = InformacionDelEmpleadoActual.per_Identidad,
                            NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos,
                            Error             = $"Error al procesar adelanto de sueldo. {oAdelantosSueldoIterador.adsu_RazonAdelanto} - {oAdelantosSueldoIterador.adsu_Monto}",
                            PosibleSolucion   = "Verifique que la información de dicho adelanto esté completa y/o correcta."
                        });
                        errores++;
                    }
                }
            }

            // deducciones individuales
            List <tbDeduccionesIndividuales> oDeduccionesIndiColaborador = db.tbDeduccionesIndividuales
                                                                           .Where(DEX => DEX.emp_Id == empleadoActual.emp_Id &&
                                                                                  DEX.dei_Monto > 0 &&
                                                                                  DEX.dei_Pagado != true &&
                                                                                  DEX.dei_Activo == true ||
                                                                                  (DEX.dei_PagaSiempre == true && DEX.dei_Activo == true)
                                                                                  )
                                                                           .ToList();

            if (oDeduccionesIndiColaborador.Count > 0)
            {
                // sumarlas todas
                foreach (var oDeduccionesIndiColaboradorIterador in oDeduccionesIndiColaborador)
                {
                    try
                    {
                        totalDeduccionesIndividuales += oDeduccionesIndiColaboradorIterador.dei_Monto <= oDeduccionesIndiColaboradorIterador.dei_MontoCuota ? oDeduccionesIndiColaboradorIterador.dei_MontoCuota : oDeduccionesIndiColaboradorIterador.dei_MontoCuota;

                        // agregar al comprobante de pago
                        ListaDeduccionesVoucher.Add(new IngresosDeduccionesVoucher
                        {
                            concepto = oDeduccionesIndiColaboradorIterador.dei_Motivo,
                            monto    = oDeduccionesIndiColaboradorIterador.dei_Monto <= oDeduccionesIndiColaboradorIterador.dei_Monto ? Math.Round((decimal)oDeduccionesIndiColaboradorIterador.dei_MontoCuota, 2) : Math.Round((decimal)oDeduccionesIndiColaboradorIterador.dei_MontoCuota, 2)
                        });

                        // restar la cuota al monto restante
                        oDeduccionesIndiColaboradorIterador.dei_Monto = oDeduccionesIndiColaboradorIterador.dei_Monto <= oDeduccionesIndiColaboradorIterador.dei_Monto ? oDeduccionesIndiColaboradorIterador.dei_Monto - oDeduccionesIndiColaboradorIterador.dei_MontoCuota : oDeduccionesIndiColaboradorIterador.dei_MontoCuota - oDeduccionesIndiColaboradorIterador.dei_MontoCuota;

                        if (oDeduccionesIndiColaboradorIterador.dei_Monto == 0 && oDeduccionesIndiColaboradorIterador.dei_PagaSiempre == false)
                        {
                            oDeduccionesIndiColaboradorIterador.dei_Pagado = true;
                        }
                        oDeduccionesIndiColaboradorIterador.dei_UsuarioModifica = idUser;
                        oDeduccionesIndiColaboradorIterador.dei_FechaModifica   = objHelpers.DatetimeNow();
                        db.Entry(oDeduccionesIndiColaboradorIterador).State     = EntityState.Modified;
                    }
                    catch (Exception ex)
                    {
                        listaErrores.Add(new ViewModelListaErrores
                        {
                            Identidad         = InformacionDelEmpleadoActual.per_Identidad,
                            NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos,
                            Error             = $"Error al procesar deducción individual. {oDeduccionesIndiColaboradorIterador.dei_Motivo} - {oDeduccionesIndiColaboradorIterador.dei_MontoCuota}",
                            PosibleSolucion   = "Verifique que la de dicha deducción esté completa y/o correcta."
                        });
                        errores++;
                    }
                }
            }


            // totales
            totalDeduccionesEmpleado = Math.Round((decimal)totalOtrasDeducciones, 2) + totalInstitucionesFinancieras + colaboradorDeducciones + totalAFP + adelantosSueldo + totalDeduccionesIndividuales;
            netoAPagarColaborador    = totalIngresosEmpleado - totalDeduccionesEmpleado;

            #endregion
        }