public ActionResult Promover() { var Empleado = new tbEmpleados(); var Empleadosddl = db.tbEmpleados.Where(x => x.emp_Estado).Include(t => t.tbPersonas) .Select( t => new { emp_Id = t.per_Id, emp_descripcion = t.tbPersonas.per_Identidad + " - " + t.tbPersonas.per_Nombres + " " + t.tbPersonas.per_Apellidos }).ToList(); //CARGAR DDL DE EMPLEADOS ViewBag.emp_Id = new SelectList(Empleadosddl, "emp_Id", "emp_descripcion"); ViewBag.car_Id = new SelectList(db.tbCargos.Where(x => x.car_Estado), "car_Id", "car_Descripcion"); ViewBag.area_Id = new SelectList(db.tbAreas.Where(x => x.area_Estado), "area_Id", "area_Descripcion"); ViewBag.depto_Id = new SelectList(db.tbDepartamentos.Where(x => x.depto_Estado), "depto_Id", "depto_Descripcion"); ViewBag.jor_Id = new SelectList(db.tbJornadas.Where(x => x.jor_Estado), "jor_Id", "jor_Descripcion"); ViewBag.cpla_IdPlanilla = new SelectList(db.tbCatalogoDePlanillas.Where(x => x.cpla_Activo), "cpla_IdPlanilla", "cpla_DescripcionPlanilla"); ViewBag.fpa_IdFormaPago = new SelectList(db.tbFormaPago.Where(x => x.fpa_Activo), "fpa_IdFormaPago", "fpa_Descripcion"); return(View(Empleado)); }
public JsonResult Promover(tbEmpleados tbEmpleados, string sue_Cantidad, string hcar_RazonPromocion, tbRequisiciones tbRequisiciones) { string msj = ""; if (tbEmpleados.car_Id != 0) { var usuario = (tbUsuario)Session["Usuario"]; try { var list = db.UDP_RRHH_tbHistorialCargos_Insert(tbEmpleados.emp_Id, tbEmpleados.car_Id, tbEmpleados.area_Id, tbEmpleados.depto_Id, tbEmpleados.jor_Id, Convert.ToDecimal(sue_Cantidad), hcar_RazonPromocion, tbEmpleados.emp_Fechaingreso, tbRequisiciones.req_Id, (int)Session["UserLogin"], Function.DatetimeNow()); foreach (UDP_RRHH_tbHistorialCargos_Insert_Result item in list) { msj = item.MensajeError + " "; } } catch (Exception ex) { msj = "-2"; ex.Message.ToString(); } } else { msj = "-3"; } return(Json(msj.Substring(0, 2), JsonRequestBehavior.AllowGet)); }
public JsonResult PromoverGuardar(tbEmpleados tbEmpleados, int sue_Cantidad, tbRequisiciones tbRequisiciones) { string msj = ""; if (tbEmpleados.car_Id != 0) { var usuario = (tbUsuario)Session["Usuario"]; try { var list = db.UDP_RRHH_tbHistorialCargos_Insert(tbEmpleados.emp_Id, tbEmpleados.car_Id, tbEmpleados.area_Id, tbEmpleados.depto_Id, tbEmpleados.jor_Id, sue_Cantidad, tbEmpleados.emp_Fechaingreso, tbRequisiciones.req_Id, 1, DateTime.Now); foreach (UDP_RRHH_tbHistorialCargos_Insert_Result item in list) { msj = item.MensajeError + " "; } } catch (Exception ex) { msj = "-2"; ex.Message.ToString(); } } else { msj = "-3"; } return(Json(msj.Substring(0, 2), JsonRequestBehavior.AllowGet)); }
public ActionResult Detallesempleados(int?id) { { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados1 = null; try { db = new ERP_GMEDINAEntities(); tbEmpleados1 = db.tbEmpleados.Find(id); if (tbEmpleados1 == null || !tbEmpleados1.emp_Estado) { return(HttpNotFound()); } } catch (Exception ex) { ex.Message.ToString(); return(HttpNotFound()); } Session["id"] = id; var empleados = new tbEmpleados { tbPersonas = new tbPersonas { per_Identidad = IsNull(tbEmpleados1.tbPersonas).per_Identidad, per_Nombres = IsNull(tbEmpleados1.tbPersonas).per_Nombres + " " + IsNull(tbEmpleados1.tbPersonas).per_Apellidos } }; return(Json(empleados, JsonRequestBehavior.AllowGet)); } }
public ActionResult DeleteConfirmed(int id) { tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); db.tbEmpleados.Remove(tbEmpleados); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Create([Bind(Include = "emp_Id,emp_Identidad,emp_Nombres,emp_Apellidos,emp_FechaNacimiento,emp_Sexo,emp_Direccion,mun_Id,emp_CorreoElectronico,emp_Telefono,carg_Id,emp_FechaIngreso,emp_FechadeSalida,emp_RazonSalida,emp_UsuarioCrea,emp_FechaCrea,emp_UsuarioModifica,emp_FechaModifica")] tbEmpleados tbEmpleados) { tbEmpleados.emp_FechaCrea = DateTime.Now; tbEmpleados.emp_UsuarioCrea = 2; if (ModelState.IsValid) { try { IEnumerable <object> listEmpleados = null; string MensajeError = ""; listEmpleados = db.UDP_Gral_tbEmpleados_Insert(tbEmpleados.emp_Identidad, tbEmpleados.emp_Nombres, tbEmpleados.emp_Apellidos, tbEmpleados.emp_FechaNacimiento, tbEmpleados.emp_Sexo, tbEmpleados.emp_Direccion, tbEmpleados.mun_Id, tbEmpleados.emp_CorreoElectronico, tbEmpleados.emp_Telefono, tbEmpleados.carg_Id, tbEmpleados.emp_FechaIngreso, tbEmpleados.emp_FechadeSalida, tbEmpleados.emp_RazonSalida, tbEmpleados.emp_UsuarioCrea, tbEmpleados.emp_FechaCrea); foreach (UDP_Gral_tbEmpleados_Insert_Result Res in listEmpleados) { MensajeError = Res.MensajeError; } if (MensajeError.StartsWith("-1")) { ModelState.AddModelError("", "1. No se pudo insertar el registro"); return(View(tbEmpleados)); } return(RedirectToAction("Index")); } catch (Exception ex) { ex.Message.ToString(); ModelState.AddModelError("", "2. No se pudo insertar el registro"); } ////db.tbEmpleados.Add(tbEmpleados); ////db.SaveChanges(); ////return RedirectToAction("Index"); } //ViewBag.emp_UsuarioCrea = new SelectList(db.tbUsuarios, "usu_Id", "usu_NombreUsuario", tbEmpleados.emp_UsuarioCrea); //ViewBag.emp_UsuarioModifica = new SelectList(db.tbUsuarios, "usu_Id", "usu_NombreUsuario", tbEmpleados.emp_UsuarioModifica); //ViewBag.carg_Id = new SelectList(db.tbCargos, "carg_Id", "carg_Descripcion", tbEmpleados.carg_Id); //ViewBag.mun_Id = new SelectList(db.tbMunicipios, "mun_Id", "mun_Descripcion", tbEmpleados.mun_Id); return(View(tbEmpleados)); }
public JsonResult Contratar(tbSeleccionCandidatos tbSeleccionCandidatos, tbEmpleados tbEmpleados, bool emp_Temporal, string sue_Cantidad, int tmon_Id, tbRequisiciones tbRequisiciones) { string msj = ""; if (tbEmpleados.car_Id != 0) { var usuario = (tbUsuario)Session["Usuario"]; //Comprueba si el candidato ah sido empleado antes. var empleados = db.tbEmpleados.Where(x => x.per_Id == tbEmpleados.per_Id) .Select( t => new { per_Id = t.per_Id }).ToList(); try { //Si el candidato nunca ah sido empleado se contratara if (empleados.Count == 0) { var list = db.UDP_RRHH_tbEmpleados_Contratar(tbSeleccionCandidatos.scan_Id, tbEmpleados.car_Id, tbEmpleados.area_Id, tbEmpleados.depto_Id, tbEmpleados.jor_Id, tbEmpleados.cpla_IdPlanilla, tbEmpleados.fpa_IdFormaPago, tbEmpleados.emp_CuentaBancaria, emp_Temporal, false, tbRequisiciones.req_Id, tmon_Id, Convert.ToDecimal(sue_Cantidad), tbEmpleados.emp_Fechaingreso, (int)Session["UserLogin"], Function.DatetimeNow()); foreach (UDP_RRHH_tbEmpleados_Contratar_Result item in list) { msj = item.MensajeError + " "; } } else { //Si el candidato ah sido empleado se recontratara var list = db.UDP_RRHH_tbEmpleados_Recontratar(tbSeleccionCandidatos.scan_Id, tbEmpleados.car_Id, tbEmpleados.area_Id, tbEmpleados.depto_Id, tbEmpleados.jor_Id, tbEmpleados.cpla_IdPlanilla, tbEmpleados.fpa_IdFormaPago, tbEmpleados.emp_CuentaBancaria, emp_Temporal, true, tbRequisiciones.req_Id, tmon_Id, Convert.ToDecimal(sue_Cantidad), tbEmpleados.emp_Fechaingreso, (int)Session["UserLogin"], Function.DatetimeNow()); foreach (UDP_RRHH_tbEmpleados_Recontratar_Result item in list) { msj = item.MensajeError + " "; } } //Session.Remove("id"); } catch (Exception ex) { msj = "-2"; ex.Message.ToString(); } } else { msj = "-3"; } return(Json(msj.Substring(0, 2), JsonRequestBehavior.AllowGet)); }
public ActionResult Edit([Bind(Include = "emp_Id,emp_Identidad,emp_Nombres,emp_Apellidos,emp_FechaNacimiento,emp_Sexo,emp_Direccion,mun_Id,emp_CorreoElectronico,emp_Telefono,carg_Id,emp_FechaIngreso,emp_FechadeSalida,emp_RazonSalida,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.carg_Id = new SelectList(db.tbCargos, "carg_Id", "carg_Descripcion", tbEmpleados.carg_Id); return(View(tbEmpleados)); }
public ActionResult Index() { if (Session["Admin"] == null || Session["Usuario"] == null) { Response.Redirect("~/Inicio/index/"); return(null); } tbEmpleados tbEmpleados = new tbEmpleados { }; return(View(tbEmpleados)); }
// GET: Empleados/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); if (tbEmpleados == null) { return(HttpNotFound()); } return(View(tbEmpleados)); }
// GET: Empleados/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); if (tbEmpleados == null) { return(HttpNotFound()); } ViewBag.carg_Id = new SelectList(db.tbCargos, "carg_Id", "carg_Descripcion", tbEmpleados.carg_Id); return(View(tbEmpleados)); }
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 ActionResult Contratar(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbSeleccionCandidatos tbSeleccionCandidatos = null; try { tbSeleccionCandidatos = db.tbSeleccionCandidatos.Find(id); if (tbSeleccionCandidatos == null || !tbSeleccionCandidatos.scan_Estado) { return(HttpNotFound()); } } catch (Exception ex) { ex.Message.ToString(); return(HttpNotFound()); } Session["scan_id"] = id; var candidatos = db.V_SeleccionCandidatos.Where(x => x.Estado) .Select( t => new { per_Id = t.IdPersona, }).ToList(). First(); var Empleado = new tbEmpleados { per_Id = tbSeleccionCandidatos.per_Id, }; Empleado.per_Id = candidatos.per_Id; //CARGAR DDL DE EMPLEADOS ViewBag.car_Id = new SelectList(db.tbEmpleados.Where(x => x.emp_Estado), "emp_Id", "car_Descripcion"); ViewBag.car_Id = new SelectList(db.tbCargos.Where(x => x.car_Estado), "car_Id", "car_Descripcion"); ViewBag.area_Id = new SelectList(db.tbAreas.Where(x => x.area_Estado), "area_Id", "area_Descripcion"); //ViewBag.depto_Id = new SelectList(db.tbDepartamentos.Where(x => x.depto_Estado), "depto_Id", "depto_Descripcion"); ViewBag.jor_Id = new SelectList(db.tbJornadas.Where(x => x.jor_Estado), "jor_Id", "jor_Descripcion"); ViewBag.cpla_IdPlanilla = new SelectList(db.tbCatalogoDePlanillas.Where(x => x.cpla_Activo), "cpla_IdPlanilla", "cpla_DescripcionPlanilla"); ViewBag.fpa_IdFormaPago = new SelectList(db.tbFormaPago.Where(x => x.fpa_Activo), "fpa_IdFormaPago", "fpa_Descripcion"); return(View(Empleado)); }
// GET: Empleados/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); if (tbEmpleados == null) { return(HttpNotFound()); } ViewBag.emp_UsuarioCrea = new SelectList(db.tbUsuarios, "usu_Id", "usu_NombreUsuario", tbEmpleados.emp_UsuarioCrea); ViewBag.emp_UsuarioModifica = new SelectList(db.tbUsuarios, "usu_Id", "usu_NombreUsuario", tbEmpleados.emp_UsuarioModifica); ViewBag.carg_Id = new SelectList(db.tbCargos, "carg_Id", "carg_Descripcion", tbEmpleados.carg_Id); ViewBag.mun_Id = new SelectList(db.tbMunicipios, "mun_Id", "mun_Descripcion", tbEmpleados.mun_Id); return(View(tbEmpleados)); }
// GET: Empleados/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); if (tbEmpleados == null) { return(HttpNotFound()); } 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 ActionResult Details(int?id) { try { db = new ERP_GMEDINAEntities(); //Aqui codigo llenarTabla if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); var fechaingreso = (from a in db.tbEmpleados where a.emp_Id == id select a.emp_Fechaingreso).ToList()[0]; DateTime fechaactual = DateTime.Now; DateTime fechaingresodate = Convert.ToDateTime(fechaingreso); int timespan = (fechaactual.Year - fechaingresodate.Year); if (timespan == 0) { ViewBag.Antiguedad = "Menos de 1 año"; } else { ViewBag.Antiguedad = timespan + " " + "Años"; } if (tbEmpleados == null) { return(HttpNotFound()); } var JefeArea = tbEmpleados.tbAreas.tbCargos.tbEmpleados. Select(p => new { Nombres = p.tbPersonas.per_Nombres + " " + p.tbPersonas.per_Apellidos }); var JefeDepto = tbEmpleados.tbDepartamentos.tbCargos.tbEmpleados. Select(p => new { Nombres = p.tbPersonas.per_Nombres + " " + p.tbPersonas.per_Apellidos }); Session["JefeArea"] = JefeArea.Count() == 0 ? "Sin asignar" : JefeArea.First().Nombres; Session["JefeDepto"] = JefeDepto.Count() == 0 ? "Sin asignar" : JefeDepto.First().Nombres; return(View(tbEmpleados)); } catch (Exception ex) { ex.Message.ToString(); return(HttpNotFound()); } }
// GET: Empleados/Details/5 public ActionResult Details(int?id) { try { db = new ERP_GMEDINAEntities(); //Aqui codigo llenarTabla if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } tbEmpleados tbEmpleados = db.tbEmpleados.Find(id); if (tbEmpleados == null) { return(HttpNotFound()); } return(View(tbEmpleados)); //aqui termina llenarTabla } catch { return(HttpNotFound()); } }
public static decimal CalcularISR(ERP_GMEDINAEntities db, tbEmpleados empleadoActual, decimal totalSalario, decimal totalISR, int dias) { #region Cálculo de ISR try { #region Declaracion de Variables int AnioActual = DateTime.Now.Year; decimal?TotalBonos = 0; decimal?TotalHrsExtra = 0; decimal?TotalComisiones = 0; decimal?TotalIngresosExtras = 0; decimal?TotalDeduccionesEquipoTrabajo = 0; decimal?TotalDeduccionesExtras = 0; decimal?TotalDeduccionesAFP = 0; decimal?TotalDeduccionesInstitucionesFinancieras = 0; decimal?ExcesoDecimoTercer = 0; decimal?ExcesoVacaciones = 0; decimal?ExcesoDecimoCuarto = 0; decimal Exceso = 0; decimal?AcumuladosISR = 0; decimal TotalIngresosGravables = 0; decimal TotalDeduccionesGravables = 0; decimal RentaNetaGravable = 0; decimal SalarioMinimo = db.tbEmpresas.Select(x => x.empr_SalarioMinimo).FirstOrDefault() ?? 0; #endregion #region Sueldo Promedio Anual //Sueldo redondeado del Colaborador DateTime AnioActualEnero = new DateTime(DateTime.Now.Year, 1, 1); //Obtener los pagos mensuales totales var mesesPago = (db.tbHistorialDePago .Where(x => x.emp_Id == empleadoActual.emp_Id && x.hipa_Anio == AnioActualEnero.Year) .OrderBy(x => x.hipa_Mes) .GroupBy(x => x.hipa_Mes) .Select(x => x.Sum(y => (Decimal)y.hipa_TotalSueldoBruto))).ToList(); DateTime FechaIngresoEmpleado = db.tbEmpleados .Where(x => x.emp_Id == empleadoActual.emp_Id) .Select(x => x.emp_Fechaingreso).FirstOrDefault(); bool esMensual = true; TimeSpan diferencia = AnioActualEnero - FechaIngresoEmpleado; if (TimeSpan.Zero > diferencia) { esMensual = true; } //Saber que mes entro int mes = FechaIngresoEmpleado.Month; decimal SalarioPromedioAnualPagadoAlAnio = 0; decimal salarioPromedioAnualPagadoAlMes = 0; decimal TotalSalarioAnual = SalarioPromedioAnualISR(totalSalario, mesesPago, esMensual, ref SalarioPromedioAnualPagadoAlAnio, ref salarioPromedioAnualPagadoAlMes); #endregion #region Excesos ////----------------------------------------------------------------------------------------------------------------------------- //Exceso Décimo Tercer Mes //Variable para los empleados con Décimo Tercer Mes var DecimoTercer = db.V_DecimoTercerMes_Pagados.Where(x => x.emp_Id == empleadoActual.emp_Id && x.dtm_FechaPago.Year == AnioActual).FirstOrDefault(); //Validar primero si es en el año actual el proceso de este calculo if (DecimoTercer != null) { //Salario Mínimo Mensual por 10 Meses (Según SAR) Exceso = SalarioMinimo * 10; //Validar si el Décimo Tercer es mayor al Exceso if (DecimoTercer.dtm_Monto > Exceso) { ExcesoDecimoTercer = DecimoTercer.dtm_Monto - Exceso; } else { ExcesoDecimoTercer = 0; } } ////----------------------------------------------------------------------------------------------------------------------------- ////----------------------------------------------------------------------------------------------------------------------------- //Exceso Décimo Cuarto Mes //Variable para los empleados con Décimo Cuarto Mes var DecimoCuarto = db.V_DecimoCuartoMes_Pagados.Where(x => x.emp_Id == empleadoActual.emp_Id && x.dcm_FechaPago.Year == AnioActual).FirstOrDefault(); //Validar primero si es en el año actual el proceso de este calculo if (DecimoCuarto != null) { //Salario Mínimo Mensual por 10 Meses (Según SAR) Exceso = SalarioMinimo * 10; //Validar si el Décimo Cuarto es mayor al Exceso if (DecimoCuarto.dcm_Monto > Exceso) { ExcesoDecimoCuarto = DecimoCuarto.dcm_Monto - Exceso; } else { ExcesoDecimoCuarto = 0; } } ////----------------------------------------------------------------------------------------------------------------------------- ////----------------------------------------------------------------------------------------------------------------------------- //Exceso Vacaciones //Variable para las Vacaciones Pagadas del Historial de Ingresos de Pago var objVacaciones = db.tbHistorialVacaciones.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hvac_AnioVacaciones && x.hvac_DiasPagados == true).Select(x => x.hvac_CantDias).FirstOrDefault(); //Validar si los dias a Pagar es mayor a 30 dias if (objVacaciones > 30) { ExcesoVacaciones = ((objVacaciones - 30) * (TotalSalarioAnual / 360)); } else { ExcesoVacaciones = 0; } #endregion #region Acumulados ISR //Variable para obtener los registros de los Acumulados ISR del empleado actual AcumuladosISR = db.tbAcumuladosISR.Where(x => x.aisr_Activo == true && x.emp_Id == empleadoActual.emp_Id).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.aisr_Monto)).FirstOrDefault(); #endregion #region Otros Ingresos TotalBonos = db.tbHistorialDePago.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hipa_Anio).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.hipa_TotalBonos)).FirstOrDefault(); TotalHrsExtra = db.tbHistorialDePago.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hipa_Anio).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.hipa_TotalHorasExtras)).FirstOrDefault(); TotalComisiones = db.tbHistorialDePago.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hipa_Anio).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.hipa_TotalComisiones)).FirstOrDefault(); TotalIngresosExtras = db.tbHistorialDePago.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hipa_Anio).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.hipa_TotalIngresosIndividuales)).FirstOrDefault(); if (TotalBonos == null) { TotalBonos = 0; } if (TotalHrsExtra == null) { TotalHrsExtra = 0; } if (TotalComisiones == null) { TotalComisiones = 0; } if (TotalIngresosExtras == null) { TotalIngresosExtras = 0; } #endregion #region Otras Deducciones (Posible cálculo para el ISR) #region Deducciones por Equipo de Trabajo //DET = Deducción por Equipo de Trabajo decimal?MontoInicialDET = 0; decimal?MontoRestanteDET = 0; List <tbDeduccionesExtraordinarias> objDeduccionesExtraordinarias = db.tbDeduccionesExtraordinarias.Where(x => x.tbEquipoEmpleados.emp_Id == empleadoActual.emp_Id && x.dex_Activo == true && x.dex_DeducirISR == true) .ToList(); if (objDeduccionesExtraordinarias.Count() > 0) { foreach (var oDET in objDeduccionesExtraordinarias) { MontoInicialDET = MontoInicialDET + oDET.dex_MontoInicial; MontoRestanteDET = MontoRestanteDET + oDET.dex_MontoRestante; } } if (MontoInicialDET > 0 && MontoRestanteDET > 0) { TotalDeduccionesEquipoTrabajo = MontoInicialDET - MontoRestanteDET; } else { TotalDeduccionesEquipoTrabajo = 0; } #endregion #region Deducciones Extras List <tbDeduccionesIndividuales> objDeduccionIndividual = db.tbDeduccionesIndividuales.Where(x => x.emp_Id == empleadoActual.emp_Id && x.dei_Activo == true && x.dei_DeducirISR == true) .ToList(); if (objDeduccionIndividual.Count() > 0) { foreach (var oDeduIndi in objDeduccionIndividual) { if (oDeduIndi.dei_DeducirISR == true) { TotalDeduccionesExtras = db.tbHistorialDePago.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hipa_Anio).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.hipa_TotalDeduccionesIndividuales)).FirstOrDefault(); } } } #endregion #region Deducciones AFP List <tbDeduccionAFP> objDeduccionAFP = db.tbDeduccionAFP.Where(x => x.emp_Id == empleadoActual.emp_Id && x.dafp_Activo == true && x.dafp_DeducirISR == true) .ToList(); if (objDeduccionAFP.Count() > 0) { foreach (var oDeduAFP in objDeduccionAFP) { if (oDeduAFP.dafp_DeducirISR == true) { TotalDeduccionesAFP = db.tbHistorialDePago.Where(x => x.emp_Id == empleadoActual.emp_Id && AnioActual == x.hipa_Anio).GroupBy(x => x.emp_Id).Select(x => x.Sum(y => y.hipa_AFP)).FirstOrDefault(); } } } #endregion #region Deducciones Instituciones Financieras //DIF = Deducción Institución Financiera List <tbDeduccionInstitucionFinanciera> objDeduccionInstitucionFinanciera = db.tbDeduccionInstitucionFinanciera.Where(x => x.emp_Id == empleadoActual.emp_Id && x.deif_Activo == true && x.deif_DeducirISR == true) .ToList(); if (objDeduccionInstitucionFinanciera.Count() > 0) { foreach (var oDIF in objDeduccionInstitucionFinanciera) { if (oDIF.deif_Monto > 0) { TotalDeduccionesInstitucionesFinancieras = TotalDeduccionesInstitucionesFinancieras + oDIF.deif_Monto; } else { TotalDeduccionesInstitucionesFinancieras = 0; } } } #endregion if (TotalDeduccionesEquipoTrabajo == null) { TotalDeduccionesEquipoTrabajo = 0; } if (TotalDeduccionesExtras == null) { TotalDeduccionesExtras = 0; } if (TotalDeduccionesAFP == null) { TotalDeduccionesAFP = 0; } if (TotalDeduccionesInstitucionesFinancieras == null) { TotalDeduccionesInstitucionesFinancieras = 0; } #endregion #region Calculo del ISR //----------------------------------------------------------------------------------------------------------------------------- //Total Ingresos Gravables TotalIngresosGravables = TotalSalarioAnual + (Decimal)ExcesoDecimoTercer + (Decimal)ExcesoDecimoCuarto + (Decimal)ExcesoVacaciones + (Decimal)TotalBonos + (Decimal)TotalHrsExtra + (Decimal)TotalComisiones + (Decimal)TotalIngresosExtras; //Total Deducciones Gravables TotalDeduccionesGravables = (Decimal)AcumuladosISR + (Decimal)TotalDeduccionesEquipoTrabajo + (Decimal)TotalDeduccionesExtras + (Decimal)TotalDeduccionesAFP + (Decimal)TotalDeduccionesInstitucionesFinancieras; //Renta Neta Gravable RentaNetaGravable = TotalIngresosGravables - TotalDeduccionesGravables; #region Tabla Progresiva ISR //Tabla Progresiva ISR //Variable para validar que entre primero en la primera parte de la fórmula del ISR y luego en la segunda parte string VI = "FirstRange"; //Variable de tipo Lista para obtener los registros de la tabla progresiva de mayor a menor List <tbISR> objDeduccionISR = db.tbISR.Where(x => x.isr_Activo == true) .OrderByDescending(x => x.isr_RangoInicial) .ToList(); foreach (var oISR in objDeduccionISR) { if (objDeduccionISR.Count() > 0) { if (RentaNetaGravable >= oISR.isr_RangoInicial) { if (VI == "FirstRange") { totalISR = totalISR + (RentaNetaGravable - oISR.isr_RangoInicial) * (((oISR.isr_Porcentaje)) / 100); VI = "No"; } else if (VI == "No") { VI = "SecondRange"; } if (VI == "SecondRange") { totalISR = totalISR + ((oISR.isr_RangoFinal) - oISR.isr_RangoInicial) * ((oISR.isr_Porcentaje) / 100); VI = "No"; } } else { totalISR = 0; } } } if (totalISR > 0) { totalISR = totalISR / 12; totalISR = totalISR / 30; totalISR = totalISR * dias; } #endregion #endregion } catch (Exception ex) { ex.Message.ToString(); } #endregion return(totalISR); }
public bool agregarEmpleado(ClsEempleado empleado) { tbEmpleados tbl = tbEmpleados.crear(empleado.DniEmpleado, empleado.Nombres, empleado.Apellidos, empleado.Direccion, empleado.Correo, empleado.Telefono, empleado.Codigo_Cargo, empleado.idTurno, empleado.Estado, empleado.Usuario, empleado.Contraseña); return(datos.agregarEmpleado(tbl)); }
public static void EnviarComprobanteDePagoColaborador(string moneda, bool?enviarEmail, DateTime fechaInicio, DateTime fechaFin, General utilities, ref List <IngresosDeduccionesVoucher> ListaIngresosVoucher, ref List <IngresosDeduccionesVoucher> ListaDeduccionesVoucher, ComprobantePagoModel oComprobantePagoModel, List <ViewModelListaErrores> listaErrores, ref int errores, ERP_GMEDINAEntities db, tbEmpleados empleadoActual, decimal?totalIngresosEmpleado, decimal?totalDeduccionesEmpleado, decimal?netoAPagarColaborador, V_InformacionColaborador InformacionDelEmpleadoActual) { #region Enviar comprobante de pago por email if (enviarEmail != null && enviarEmail == true) { oComprobantePagoModel.moneda = moneda; oComprobantePagoModel.EmailAsunto = "Comprobante de pago"; oComprobantePagoModel.NombreColaborador = empleadoActual.tbPersonas.per_Nombres + " " + empleadoActual.tbPersonas.per_Apellidos; oComprobantePagoModel.idColaborador = empleadoActual.emp_Id; oComprobantePagoModel.EmailDestino = empleadoActual.tbPersonas.per_CorreoElectronico; oComprobantePagoModel.PeriodoPago = $"{fechaInicio.ToString("dd/MM/yyyy")}- {fechaFin.ToString("dd/MM/yyyy")}"; oComprobantePagoModel.Ingresos = ListaIngresosVoucher; oComprobantePagoModel.Deducciones = ListaDeduccionesVoucher; oComprobantePagoModel.totalIngresos = totalIngresosEmpleado; oComprobantePagoModel.totalDeducciones = totalDeduccionesEmpleado; oComprobantePagoModel.NetoPagar = netoAPagarColaborador; // enviar comprobante de pago try { if (!utilities.SendEmail(oComprobantePagoModel)) { listaErrores.Add(new ViewModelListaErrores { Identidad = InformacionDelEmpleadoActual.per_Identidad, NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos, Error = "Error al Enviar comprobante de pago.", PosibleSolucion = "Verifique que la información del perfil del colaborador esté completa y/o correcta." }); errores++; } else { ListaDeduccionesVoucher = new List <IngresosDeduccionesVoucher>(); ListaIngresosVoucher = new List <IngresosDeduccionesVoucher>(); } } catch (Exception ex) { listaErrores.Add(new ViewModelListaErrores { Identidad = InformacionDelEmpleadoActual.per_Identidad, NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos, Error = "Error al Enviar comprobante de pago.", PosibleSolucion = "Verifique que la información del perfil del colaborador esté completa y/o correcta." }); errores++; } } #endregion }
// se usa este actualmente public static void PrevisualizarProcesarDeducciones(int monedaDeducciones, List <ViewModelTasasDeCambio> objMonedas, int userId, DateTime fechaInicio, DateTime fechaFin, 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, V_InformacionColaborador InformacionDelEmpleadoActual) { #region Procesar deducciones // instancia del helper 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) { try { decimal?porcentajeColaborador = iterDeducciones.cde_PorcentajeColaborador; decimal?porcentajeEmpresa = iterDeducciones.cde_PorcentajeEmpresa; decimal?montoDeduccionColaborador = SalarioBase; // 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) { try { if (SalarioBase > techosDeduccionesIter.tddu_Techo) { montoDeduccionColaborador = techosDeduccionesIter.tddu_Techo; porcentajeColaborador = techosDeduccionesIter.tddu_PorcentajeColaboradores; porcentajeEmpresa = techosDeduccionesIter.tddu_PorcentajeEmpresa; } } catch (Exception ex) { listaErrores.Add(new ViewModelListaErrores { Identidad = InformacionDelEmpleadoActual.per_Identidad, NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos, Error = $"Error al cargar techo de la deducción: {iterDeducciones.cde_DescripcionDeduccion}. Detalles del techo: Techo {techosDeduccionesIter.tddu_Techo}, porcentaje colaborador : {techosDeduccionesIter.tddu_PorcentajeColaboradores}, porcentaje empresa: {techosDeduccionesIter.tddu_PorcentajeEmpresa}.", PosibleSolucion = "Verifique que la información de esta deducción y sus respectivos techos 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); } } } catch (Exception ex) { listaErrores.Add(new ViewModelListaErrores { Identidad = InformacionDelEmpleadoActual.per_Identidad, NombreColaborador = InformacionDelEmpleadoActual.per_Nombres + " " + InformacionDelEmpleadoActual.per_Apellidos, Error = $"Error al cargar techos de la deducción: {iterDeducciones.cde_DescripcionDeduccion}.", PosibleSolucion = "Verifique que la información de esta deducción y sus respectivos techos esté completa y/o correcta." }); errores++; } //sumar las deducciones colaboradorDeducciones += Math.Round((decimal)(montoDeduccionColaborador * porcentajeColaborador) / 100, 2); } 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++; } } } //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); } 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 comentados de deduccion afp // af.dafp_Pagado != true && // 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); } 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 por equipo de trabajo 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; } 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); } 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) .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; } 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 }
public static void ReporteColaboradorPlanilla(string moneda, ref ReportePlanillaViewModel oPlanillaEmpleado, tbEmpleados empleadoActual, decimal SalarioBase, int horasTrabajadas, decimal salarioHora, decimal totalSalario, decimal?totalComisiones, int horasExtrasTrabajadas, decimal?totalHorasExtras, decimal?totalHorasPermiso, decimal?totalBonificaciones, decimal?totalIngresosIndivuales, decimal?totalVacaciones, decimal?totalIngresosEmpleado, decimal totalISR, decimal?colaboradorDeducciones, decimal totalAFP, decimal?totalInstitucionesFinancieras, decimal?totalOtrasDeducciones, decimal?adelantosSueldo, decimal?totalDeduccionesEmpleado, decimal?totalDeduccionesIndividuales, decimal?netoAPagarColaborador, V_InformacionColaborador InformacionDelEmpleadoActual) { oPlanillaEmpleado.CodColaborador = InformacionDelEmpleadoActual.emp_Id.ToString(); oPlanillaEmpleado.NombresColaborador = $"{empleadoActual.tbPersonas.per_Nombres} {empleadoActual.tbPersonas.per_Apellidos}"; oPlanillaEmpleado.Moneda = moneda; oPlanillaEmpleado.SalarioBase = SalarioBase; oPlanillaEmpleado.horasTrabajadas = horasTrabajadas; oPlanillaEmpleado.SalarioHora = salarioHora; oPlanillaEmpleado.totalSalario = totalSalario; oPlanillaEmpleado.tipoPlanilla = empleadoActual.tbCatalogoDePlanillas.cpla_DescripcionPlanilla; oPlanillaEmpleado.totalComisiones = totalComisiones; oPlanillaEmpleado.horasExtras = horasExtrasTrabajadas; oPlanillaEmpleado.totalHorasPermiso = totalHorasPermiso; oPlanillaEmpleado.TotalIngresosHorasExtras = totalHorasExtras; oPlanillaEmpleado.totalBonificaciones = totalBonificaciones; oPlanillaEmpleado.totalIngresosIndivuales = totalIngresosIndivuales; oPlanillaEmpleado.totalVacaciones = totalVacaciones; oPlanillaEmpleado.totalIngresos = Math.Round((decimal)totalIngresosEmpleado, 2); oPlanillaEmpleado.totalISR = totalISR; oPlanillaEmpleado.totalDeduccionesColaborador = colaboradorDeducciones; oPlanillaEmpleado.totalAFP = totalAFP; oPlanillaEmpleado.totalInstitucionesFinancieras = totalInstitucionesFinancieras; oPlanillaEmpleado.otrasDeducciones = Math.Round((decimal)totalOtrasDeducciones, 2); oPlanillaEmpleado.adelantosSueldo = Math.Round((decimal)adelantosSueldo, 2); oPlanillaEmpleado.totalDeduccionesIndividuales = totalDeduccionesIndividuales; oPlanillaEmpleado.totalDeducciones = Math.Round((decimal)totalDeduccionesEmpleado, 2); oPlanillaEmpleado.totalAPagar = Math.Round((decimal)netoAPagarColaborador, 2); }
public static void ProcesarDeduccionesParaPrevisualizacion(DateTime fechaInicio, DateTime fechaFin, 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) { #region Procesar deducciones // deducciones de la planilla foreach (var iterDeducciones in oDeducciones) { decimal?porcentajeColaborador = iterDeducciones.cde_PorcentajeColaborador; decimal?porcentajeEmpresa = iterDeducciones.cde_PorcentajeEmpresa; decimal?montoDeduccionColaborador = SalarioBase; // 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 (SalarioBase > techosDeduccionesIter.tddu_Techo) { montoDeduccionColaborador = techosDeduccionesIter.tddu_Techo; porcentajeColaborador = techosDeduccionesIter.tddu_PorcentajeColaboradores; porcentajeEmpresa = techosDeduccionesIter.tddu_PorcentajeEmpresa; } } } //sumar las deducciones colaboradorDeducciones += (montoDeduccionColaborador * porcentajeColaborador) / 100; } //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) { totalInstitucionesFinancieras += oDeduInstiFinancierasIterador.deif_Monto; } } // deducciones afp List <tbDeduccionAFP> oDeduccionAfp = db.tbDeduccionAFP .Where(af => af.emp_Id == empleadoActual.emp_Id && af.dafp_Pagado != true && af.dafp_Activo == true && af.dafp_FechaCrea >= fechaInicio && af.dafp_FechaCrea <= fechaFin) .ToList(); if (oDeduccionAfp.Count > 0) { // sumarlas todas foreach (var oDeduccionAfpIter in oDeduccionAfp) { totalAFP += oDeduccionAfpIter.dafp_AporteLps; } } // 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) { totalOtrasDeducciones += oDeduccionesExtrasColaboradorIterador.dex_MontoRestante <= oDeduccionesExtrasColaboradorIterador.dex_Cuota ? oDeduccionesExtrasColaboradorIterador.dex_MontoRestante : oDeduccionesExtrasColaboradorIterador.dex_Cuota; } } // 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) { adelantosSueldo += oAdelantosSueldoIterador.adsu_Monto; } } // 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) .ToList(); if (oDeduccionesIndiColaborador.Count > 0) { // sumarlas todas foreach (var oDeduccionesIndiColaboradorIterador in oDeduccionesIndiColaborador) { totalDeduccionesIndividuales += oDeduccionesIndiColaboradorIterador.dei_Monto <= oDeduccionesIndiColaboradorIterador.dei_MontoCuota ? oDeduccionesIndiColaboradorIterador.dei_MontoCuota : oDeduccionesIndiColaboradorIterador.dei_MontoCuota; } } // totales totalDeduccionesEmpleado = totalOtrasDeducciones + totalInstitucionesFinancieras + colaboradorDeducciones + totalAFP + adelantosSueldo + totalDeduccionesIndividuales; netoAPagarColaborador = Math.Round((decimal)totalIngresosEmpleado.Value - totalDeduccionesEmpleado.Value, 2); #endregion }
public static int GuardarHistorialDePago(DateTime fechaInicio, DateTime fechaFin, List <ViewModelListaErrores> listaErrores, ref int errores, string codigoDePlanillaGenerada, ERP_GMEDINAEntities db, ref int contador, ref int idDetalleDeduccionHisotorialesContador, ref int idDetalleIngresoHisotorialesContador, tbEmpleados empleadoActual, decimal totalSalario, decimal?totalComisiones, int horasExtrasTrabajadas, int cantidadUnidadesBonos, decimal?totalHorasExtras, decimal?totalHorasPermiso, decimal?totalBonificaciones, decimal?totalIngresosIndivuales, decimal?totalVacaciones, decimal totalISR, decimal totalAFP, decimal?adelantosSueldo, decimal?totalDeduccionesIndividuales, decimal?netoAPagarColaborador, ref IEnumerable <object> listHistorialPago, ref string MensajeError, List <tbHistorialDeduccionPago> lisHistorialDeducciones, List <tbHistorialDeIngresosPago> lisHistorialIngresos, V_InformacionColaborador InformacionDelEmpleadoActual, decimal resultSeptimoDia) { #region guardar en el historial de pago int idHistorialPago = db.tbHistorialDePago .Select(x => x.hipa_IdHistorialDePago) .DefaultIfEmpty(0) .Max(); int idUser = (int)HttpContext.Current.Session["UserLogin"]; try { tbHistorialDePago oHistorialPagoEncabezado = new tbHistorialDePago(); oHistorialPagoEncabezado.hipa_IdHistorialDePago = idHistorialPago + contador; oHistorialPagoEncabezado.emp_Id = empleadoActual.emp_Id; oHistorialPagoEncabezado.hipa_SueldoNeto = Math.Round((decimal)netoAPagarColaborador, 2); oHistorialPagoEncabezado.hipa_FechaInicio = fechaInicio; oHistorialPagoEncabezado.hipa_FechaFin = fechaFin; oHistorialPagoEncabezado.hipa_FechaPago = DateTime.Now; oHistorialPagoEncabezado.hipa_Anio = DateTime.Now.Year; oHistorialPagoEncabezado.hipa_Mes = DateTime.Now.Month; oHistorialPagoEncabezado.peri_IdPeriodo = 1; oHistorialPagoEncabezado.hipa_UsuarioCrea = idUser; oHistorialPagoEncabezado.hipa_FechaCrea = DateTime.Now; oHistorialPagoEncabezado.hipa_TotalISR = totalISR; oHistorialPagoEncabezado.hipa_ISRPendiente = true; oHistorialPagoEncabezado.hipa_AFP = totalAFP; //Nuevos campos oHistorialPagoEncabezado.hipa_TotalHorasConPermisoJustificado = totalHorasPermiso; oHistorialPagoEncabezado.hipa_TotalComisiones = totalComisiones; oHistorialPagoEncabezado.hipa_TotalHorasExtras = totalHorasExtras; oHistorialPagoEncabezado.hipa_TotalVacaciones = totalVacaciones; oHistorialPagoEncabezado.hipa_TotalSeptimoDia = resultSeptimoDia; oHistorialPagoEncabezado.hipa_AdelantoSueldo = adelantosSueldo; oHistorialPagoEncabezado.hipa_TotalSalario = totalSalario; // nuevos campos oHistorialPagoEncabezado.hipa_TotalDeduccionesIndividuales = totalDeduccionesIndividuales; oHistorialPagoEncabezado.hipa_TotalIngresosIndividuales = totalIngresosIndivuales; oHistorialPagoEncabezado.hipa_TotalSueldoBruto = totalSalario; oHistorialPagoEncabezado.hipa_CantidadUnidadesHorasExtras = horasExtrasTrabajadas; oHistorialPagoEncabezado.hipa_CantidadUnidadesBonos = cantidadUnidadesBonos; oHistorialPagoEncabezado.hipa_TotalBonos = totalBonificaciones; //Ejecutar el procedimiento almacenado listHistorialPago = db.UDP_Plani_tbHistorialDePago_Insert(oHistorialPagoEncabezado.emp_Id, oHistorialPagoEncabezado.hipa_SueldoNeto, oHistorialPagoEncabezado.hipa_FechaInicio, oHistorialPagoEncabezado.hipa_FechaFin, oHistorialPagoEncabezado.hipa_FechaPago, oHistorialPagoEncabezado.hipa_Anio, oHistorialPagoEncabezado.hipa_Mes, oHistorialPagoEncabezado.peri_IdPeriodo, oHistorialPagoEncabezado.hipa_UsuarioCrea, oHistorialPagoEncabezado.hipa_FechaCrea, oHistorialPagoEncabezado.hipa_TotalISR, oHistorialPagoEncabezado.hipa_ISRPendiente, oHistorialPagoEncabezado.hipa_AFP, // nuevos campos oHistorialPagoEncabezado.hipa_TotalHorasConPermisoJustificado, oHistorialPagoEncabezado.hipa_TotalComisiones, oHistorialPagoEncabezado.hipa_TotalHorasExtras, oHistorialPagoEncabezado.hipa_TotalVacaciones, oHistorialPagoEncabezado.hipa_TotalSeptimoDia, oHistorialPagoEncabezado.hipa_AdelantoSueldo, oHistorialPagoEncabezado.hipa_TotalSalario, // nuevos campos oHistorialPagoEncabezado.hipa_TotalDeduccionesIndividuales, // deducciones individuales oHistorialPagoEncabezado.hipa_TotalIngresosIndividuales, // ingresos individuales oHistorialPagoEncabezado.hipa_TotalSueldoBruto, // sueldo bruto oHistorialPagoEncabezado.hipa_CantidadUnidadesHorasExtras, // cantidad unidades horas extras oHistorialPagoEncabezado.hipa_CantidadUnidadesBonos, // cantidad unidades bonos oHistorialPagoEncabezado.hipa_TotalBonos, // total bonos codigoDePlanillaGenerada // codigo identificador de la planilla ); // obtener resultado del procedimiento almacenado foreach (UDP_Plani_tbHistorialDePago_Insert_Result Resultado in listHistorialPago) { MensajeError = Resultado.MensajeError; } if (MensajeError.StartsWith("-1")) { // el procedimiento almacenado falló errores++; } // si el encabezado del historial de pago se registró correctamente, guardar los detalles else { // guardar en el detalle de deducciones del historial de pago foreach (var hisorialDeduccioneIterado in lisHistorialDeducciones) { int idDetalle = db.tbHistorialDeduccionPago .Select(x => x.hidp_IdHistorialdeDeduPago) .DefaultIfEmpty(0) .Max(); hisorialDeduccioneIterado.hidp_IdHistorialdeDeduPago = idDetalle + idDetalleDeduccionHisotorialesContador; hisorialDeduccioneIterado.hipa_IdHistorialDePago = int.Parse(MensajeError); hisorialDeduccioneIterado.hidp_UsuarioCrea = idUser; hisorialDeduccioneIterado.hidp_FechaCrea = DateTime.Now; db.tbHistorialDeduccionPago.Add(hisorialDeduccioneIterado); idDetalleDeduccionHisotorialesContador++; } // guardar en el detalle de ingresos del historial de pago foreach (var hisorialIngresosIterado in lisHistorialIngresos) { int idDetalle = db.tbHistorialDeIngresosPago .Select(x => x.hip_IdHistorialDeIngresosPago) .DefaultIfEmpty(0) .Max(); hisorialIngresosIterado.hip_IdHistorialDeIngresosPago = idDetalle + idDetalleIngresoHisotorialesContador; hisorialIngresosIterado.hipa_IdHistorialDePago = int.Parse(MensajeError); hisorialIngresosIterado.hip_FechaInicio = fechaInicio; hisorialIngresosIterado.hip_FechaFinal = fechaFin; hisorialIngresosIterado.hip_UsuarioCrea = idUser; hisorialIngresosIterado.hip_FechaCrea = DateTime.Now; db.tbHistorialDeIngresosPago.Add(hisorialIngresosIterado); idDetalleIngresoHisotorialesContador++; } } } catch (Exception ex) { listaErrores.Add(new ViewModelListaErrores { Identidad = InformacionDelEmpleadoActual.per_Identidad, NombreColaborador = InformacionDelEmpleadoActual.per_Nombres, Error = "Error al guardar en el historial de pago", PosibleSolucion = "Verifique que la información del perfil del colaborador esté completa y/o correcta." }); errores++; } contador++; #endregion return(idHistorialPago); }