Ejemplo n.º 1
0
        public ActionResult Editar(EmpleadoView empleado)
        {
            try {
                db.UpdateEmpleado(empleado.Empleado.Id, empleado.Empleado.NoEmpleado, empleado.Empleado.IdProveedor, empleado.Empleado.Nombre, empleado.Empleado.ApellidoMaterno,
                                  empleado.Empleado.ApellidoPaterno, empleado.Empleado.IdUsuario, empleado.Empleado.Email, empleado.Empleado.FechaNacimiento, empleado.Empleado.FechaInicioRelLaboral,
                                  empleado.Empleado.RFC, empleado.Empleado.CURP, empleado.Empleado.HuellaDactilar, empleado.Empleado.Foto, empleado.Empleado.INE, empleado.Empleado.NumeroSeguridadSocial,
                                  empleado.Empleado.Departamento, empleado.Empleado.Direccion, empleado.Empleado.Puesto, empleado.Empleado.RiesgoPuesto, empleado.Empleado.TipoContrato.Trim(), empleado.Empleado.TipoJornada,
                                  empleado.Empleado.SalarioDiario, empleado.Empleado.Banco, empleado.Empleado.CuentaBancaria, empleado.Empleado.ClaveEntFed, empleado.Empleado.GradoEstudios, empleado.Empleado.Telefono,
                                  empleado.Empleado.TelefonoEmergencia, empleado.Empleado.Firma, empleado.Empleado.TipoSangre, empleado.Empleado.CUIP, empleado.Empleado.NumeroDeLicencia, empleado.Empleado.NumeroDeAutorizacion,
                                  empleado.NominaHistorial.Id, true);
                NominaHistorial               NominaHistorial               = db.NominaHistorial.Where(x => x.Id == empleado.NominaHistorial.Id).FirstOrDefault();
                NominaPercepciones            NominaPercepciones            = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
                NominaJubilacionPensionRetiro NominaJubilacionPensionRetiro = db.NominaJubilacionPensionRetiro.Where(x => x.Id == NominaPercepciones.IdJubilacionPensionRetiro).FirstOrDefault();
                NominaSeparacionIndemnizacion NominaSeparacionIndemnizacion = db.NominaSeparacionIndemnizacion.Where(x => x.Id == NominaPercepciones.IdJubilacionPensionRetiro).FirstOrDefault();
                List <NominaPercepcion>       NominaPercepcion              = db.NominaPercepcion.Where(x => x.IdPercepciones == NominaPercepciones.Id).ToList();
                List <NominaDeduccion>        NominaDeduccion               = db.NominaDeduccion.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
                List <NominaIncapacidad>      NominaIncapacidad             = db.NominaIncapacidad.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
                List <NominaOtrosPago>        NominaOtrosPagos              = db.NominaOtrosPago.Where(x => x.IdNominaHistorial == NominaHistorial.Id).ToList();
                Guid IdUsuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).First().Id;
                if (empleado.JubilacionPensionRetiro == null)
                {
                    if (NominaJubilacionPensionRetiro != null)
                    {
                        //Delete Jubilacion Pension Retiro & Update NominaPercepciones
                        db.DeleteNominaJubilacionPensionRetiro(NominaJubilacionPensionRetiro.Id);
                        db.UpdateNominaPercepciones(NominaPercepciones.Id, NominaSeparacionIndemnizacion.Id, null);
                    }
                }
                else
                {
                    if (NominaJubilacionPensionRetiro != null)
                    {
                        //Update Jubilacion Pension Retirol
                        db.UpdateNominaJubilacionPensionRetiro(empleado.JubilacionPensionRetiro.Id, empleado.JubilacionPensionRetiro.TotalUnaExhibicion, empleado.JubilacionPensionRetiro.TotalParcialidad, empleado.JubilacionPensionRetiro.MontoDiario,
                                                               empleado.JubilacionPensionRetiro.IngresoAcumulable, empleado.JubilacionPensionRetiro.IngresoNoAcumulable);
                    }
                    else
                    {
                        //Insert Jubilacion Pension Retiro & Update NominaPercepciones
                        NominaPercepciones Percepciones = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
                        db.InsertNominaJubilacionPensionRetiro(empleado.JubilacionPensionRetiro.Id, empleado.JubilacionPensionRetiro.TotalUnaExhibicion, empleado.JubilacionPensionRetiro.TotalParcialidad, empleado.JubilacionPensionRetiro.MontoDiario, empleado.JubilacionPensionRetiro.IngresoAcumulable, empleado.JubilacionPensionRetiro.IngresoNoAcumulable, DateTime.Now, IdUsuario);
                        db.UpdateNominaPercepciones(Percepciones.Id, Percepciones.IdSeparacionIndemnizacion, empleado.JubilacionPensionRetiro.Id);
                    }
                }
                if (empleado.SeparacionIndemnizacion == null)
                {
                    if (NominaSeparacionIndemnizacion != null)
                    {
                        //Delete SeparacionIndemnizacion & Update NominaPercepciones
                        NominaPercepciones Percepciones = db.NominaPercepciones.Where(x => x.Id == NominaHistorial.IdPercepciones).FirstOrDefault();
                        db.DeleteNominaSeparacionIndemnizacion(NominaSeparacionIndemnizacion.Id);
                        db.UpdateNominaPercepciones(Percepciones.Id, null, Percepciones.IdJubilacionPensionRetiro);
                    }
                }
                else
                {
                    if (NominaSeparacionIndemnizacion != null)
                    {
                        //Update SeparacionIndemnizacion
                        db.UpdateNominaSeparacionIndemnizacion(empleado.SeparacionIndemnizacion.Id, empleado.SeparacionIndemnizacion.TotalPagado, empleado.SeparacionIndemnizacion.NumAñosServicio,
                                                               empleado.SeparacionIndemnizacion.UltimoSueldoMensOrd, empleado.SeparacionIndemnizacion.IngresoAcumulable, empleado.SeparacionIndemnizacion.IngresoNoAcumulable);
                    }
                    else
                    {
                        //Insert SeparacionIndemnizacion & Update NominaPercepciones
                        db.InsertNominaSeparacionIndemnizacion(empleado.SeparacionIndemnizacion.Id, empleado.SeparacionIndemnizacion.TotalPagado, empleado.SeparacionIndemnizacion.NumAñosServicio,
                                                               empleado.SeparacionIndemnizacion.UltimoSueldoMensOrd, empleado.SeparacionIndemnizacion.IngresoAcumulable, empleado.SeparacionIndemnizacion.IngresoNoAcumulable, DateTime.Now, IdUsuario);
                        db.UpdateNominaPercepciones(NominaPercepciones.Id, empleado.SeparacionIndemnizacion.Id, NominaPercepciones.IdJubilacionPensionRetiro);
                    }
                }

                foreach (var percepcion in empleado.NominaPercepcion)
                {
                    if (NominaPercepcion.Where(x => x.Id == percepcion.Id).Any())
                    {
                        List <NominaHorasExtras> HorasExtras = db.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id).ToList();
                        foreach (var HoraExtra in empleado.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id))
                        {
                            if (HorasExtras.Where(x => x.Id == HoraExtra.Id).Any())
                            {
                                //Update NominaHorasExtras
                                db.UpdateNominaHorasExtras(HoraExtra.Id, HoraExtra.Dias, HoraExtra.Tipos, HoraExtra.HorasExtras, HoraExtra.ImportePagado);
                            }
                            else
                            {
                                //Insert NominaHorasExtras
                                db.InsertNominaHorasExtras(HoraExtra.Id, HoraExtra.IdPercepcion, HoraExtra.Dias, HoraExtra.Tipos, HoraExtra.HorasExtras, HoraExtra.ImportePagado, DateTime.Now, IdUsuario);
                            }
                        }
                        foreach (var HoraExtra in HorasExtras)
                        {
                            if (!empleado.NominaHorasExtras.Where(x => x.Id == HoraExtra.Id).Any())
                            {
                                //Delete Nomina HoraExtra
                                db.DeleteNominaHorasExtras(HoraExtra.Id);
                            }
                        }
                        //Update NominaPercepcion
                        db.UpdateNominaPercepcion(percepcion.Id, percepcion.Tipo, percepcion.Clave, percepcion.Concepto, percepcion.ImporteExcento, percepcion.ImporteGravado, percepcion.ValorMercado, percepcion.PrecioOrtorgarse);
                    }
                    else
                    {
                        //Inset NominaPercepcion
                        db.InsertNominaPercepcion(percepcion.Id, percepcion.IdPercepciones, percepcion.Tipo, percepcion.Clave, percepcion.Concepto, percepcion.ImporteExcento, percepcion.ImporteGravado, percepcion.ValorMercado, percepcion.PrecioOrtorgarse, DateTime.Now, IdUsuario);
                    }
                }
                foreach (var percepcion in NominaPercepcion)
                {
                    if (!empleado.NominaPercepcion.Where(x => x.Id == percepcion.Id).Any())
                    {
                        List <NominaHorasExtras> HorasExtras = db.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id).ToList();
                        foreach (var HoraExtra in HorasExtras)
                        {
                            //Delete NominaHorasExtras
                            db.DeleteNominaHorasExtras(HoraExtra.Id);
                        }
                        //Delete NominaPercecion
                        db.DeleteNominaPercepcion(percepcion.Id);
                    }
                }
                foreach (var deduccion in empleado.NominaDeducion)
                {
                    if (NominaDeduccion.Where(x => x.Id == deduccion.Id).Any())
                    {
                        //Update NominaDeduccion
                        db.UpdateNominaDeduccion(deduccion.Id, deduccion.Tipo, deduccion.Clave, deduccion.Concepto, deduccion.Importe);
                    }
                    else
                    {
                        //Insert Deduccion
                        db.InsertNominaDeduccion(deduccion.Id, NominaHistorial.Id, deduccion.Tipo, deduccion.Concepto, deduccion.Importe, IdUsuario, DateTime.Now);
                    }
                }
                foreach (var deduccion in NominaDeduccion)
                {
                    if (!empleado.NominaDeducion.Where(x => x.Id == deduccion.Id).Any())
                    {
                        //Delete deduccion
                        db.DeleteNominaDeduccion(deduccion.Id);
                    }
                }

                foreach (var incapacidad in empleado.NominaIncapacidad)
                {
                    if (NominaIncapacidad.Where(x => x.Id == incapacidad.Id).Any())
                    {
                        //Update NominaIncapacidad
                        db.UpdateNominaIncapacidad(incapacidad.Id, incapacidad.DiasIncapacidad, incapacidad.Tipo, incapacidad.Importe);
                    }
                    else
                    {
                        //Insert NominaIncapacidad
                        db.InsertNominaIncapacidad(incapacidad.Id, NominaHistorial.Id, incapacidad.Tipo, incapacidad.DiasIncapacidad, incapacidad.Importe, IdUsuario, DateTime.Now);
                    }
                }
                foreach (var incapacidad in NominaIncapacidad)
                {
                    if (!empleado.NominaIncapacidad.Where(x => x.Id == incapacidad.Id).Any())
                    {
                        //Delete NominaIncapacidad
                        db.DeleteNominaIncapacidad(incapacidad.Id);
                    }
                }

                foreach (var OtroPago in empleado.NominaOtroPago)
                {
                    if (NominaOtrosPagos.Where(x => x.Id == OtroPago.Id).Any())
                    {
                        //Update NominaOtrosPagos
                        db.UpdateNominaOtrosPago(OtroPago.Id, OtroPago.Tipo, OtroPago.Clave, OtroPago.Concepto, OtroPago.Importe, OtroPago.SubsidioCausado, OtroPago.SaldoAFavor, OtroPago.Año, OtroPago.RemanenteSalFav);
                    }
                    else
                    {
                        //Insert NominaOtrosPagos
                        db.InsertNominaOtrosPagos(OtroPago.Id, OtroPago.IdNominaHistorial, OtroPago.Tipo, OtroPago.Importe, OtroPago.Concepto, OtroPago.SubsidioCausado, OtroPago.SaldoAFavor, OtroPago.Año, OtroPago.RemanenteSalFav);
                    }
                }
                foreach (var OtroPago in NominaOtrosPagos)
                {
                    if (!empleado.NominaOtroPago.Where(x => x.Id == OtroPago.Id).Any())
                    {
                        //Delete NominaOtrosPagos
                        db.DeleteNominaOtrosPago(OtroPago.Id);
                    }
                }

                return(Json(new { error = false }, JsonRequestBehavior.AllowGet));
            } catch (Exception ex) {
                return(Json(new { error = ex.InnerException, Message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }