Ejemplo n.º 1
0
        public ActionResult Nuevo(EmpleadoView empleado, HttpPostedFileBase Foto)
        {
            try
            {
                Guid IdUsuario = db.Usuarios.Where(x => x.Usuario == User.Identity.Name).FirstOrDefault().Id;
                Guid IdPlantilla = Guid.NewGuid(), PercepcionesId = Guid.NewGuid();

                byte[] Photo = null;
                if (Foto != null)
                {
                    Photo = Helpers.StreamHelper.HttpPostedFileBaseToByte(Foto);
                }
                var filename   = Path.GetFileName(Foto.FileName);
                var ext        = Path.GetExtension(Foto.FileName);
                int NoEmpleado = 1;
                if (db.Empleados.Where(x => x.IdProveedor == empleado.Empleado.IdProveedor).Count() > 0)
                {
                    NoEmpleado = db.Empleados.Where(x => x.IdProveedor == empleado.Empleado.IdProveedor).Max(x => x.NoEmpleado) + 1;
                }
                db.InsertEmpleados(empleado.Empleado.Id, NoEmpleado, empleado.Empleado.IdProveedor, empleado.Empleado.Nombre, empleado.Empleado.ApellidoMaterno,
                                   empleado.Empleado.ApellidoPaterno, null, empleado.Empleado.Email, empleado.Empleado.FechaNacimiento, empleado.Empleado.FechaInicioRelLaboral,
                                   empleado.Empleado.RFC, empleado.Empleado.CURP, empleado.Empleado.HuellaDactilar, null, empleado.Empleado.INE, empleado.Empleado.NumeroSeguridadSocial,
                                   empleado.Empleado.Departamento, empleado.Empleado.Direccion, empleado.Empleado.Puesto, empleado.Empleado.RiesgoPuesto, empleado.Empleado.TipoContrato, 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,
                                   IdPlantilla, true, IdUsuario, DateTime.Now);

                db.InsertNominaHistorial(IdPlantilla, empleado.Empleado.IdProveedor, empleado.Empleado.Id, empleado.NominaHistorial.TipoNomina, DateTime.Now,
                                         DateTime.Now, DateTime.Now, 0, empleado.NominaHistorial.TipoRegimen, "MXN",
                                         empleado.NominaHistorial.PeriodicidadPago, empleado.NominaHistorial.LugarExpedicion, PercepcionesId, DateTime.Now, User.Identity.Name);
                if (empleado.NominaPercepciones == null)
                {
                    db.InsertNominaPercepciones(PercepcionesId, null, null, DateTime.Now, IdUsuario);
                }

                else
                {
                    if (empleado.JubilacionPensionRetiro != null)
                    {
                        db.InsertNominaJubilacionPensionRetiro(empleado.JubilacionPensionRetiro.Id, empleado.JubilacionPensionRetiro.TotalUnaExhibicion, empleado.JubilacionPensionRetiro.TotalParcialidad, empleado.JubilacionPensionRetiro.MontoDiario,
                                                               empleado.JubilacionPensionRetiro.IngresoAcumulable, empleado.JubilacionPensionRetiro.IngresoNoAcumulable, DateTime.Now, IdUsuario);
                    }

                    if (empleado.SeparacionIndemnizacion != null)
                    {
                        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.InsertNominaPercepciones(PercepcionesId, empleado.NominaPercepciones.IdSeparacionIndemnizacion, empleado.NominaPercepciones.IdJubilacionPensionRetiro, DateTime.Now, IdUsuario);
                }
                foreach (var percepcion in empleado.NominaPercepcion)
                {
                    db.InsertNominaPercepcion(percepcion.Id, PercepcionesId, percepcion.Tipo, percepcion.Clave, percepcion.Concepto, percepcion.ImporteExcento,
                                              percepcion.ImporteGravado, percepcion.ValorMercado, percepcion.PrecioOrtorgarse, DateTime.Now, IdUsuario);
                    if (empleado.NominaHorasExtras != null)
                    {
                        foreach (var horasExtras in empleado.NominaHorasExtras.Where(x => x.IdPercepcion == percepcion.Id))
                        {
                            db.InsertNominaHorasExtras(horasExtras.Id, percepcion.Id, horasExtras.Dias, horasExtras.Tipos, horasExtras.HorasExtras, horasExtras.ImportePagado, DateTime.Now, IdUsuario);
                        }
                    }
                }
                if (empleado.NominaDeducion != null)
                {
                    foreach (var deduccion in empleado.NominaDeducion)
                    {
                        db.InsertNominaDeduccion(deduccion.Id, IdPlantilla, deduccion.Tipo, deduccion.Concepto, deduccion.Importe, IdUsuario, DateTime.Now);
                    }
                }
                if (empleado.NominaIncapacidad != null)
                {
                    foreach (var incapacidad in empleado.NominaIncapacidad)
                    {
                        db.InsertNominaIncapacidad(Guid.NewGuid(), IdPlantilla, incapacidad.Tipo, incapacidad.DiasIncapacidad, incapacidad.Importe, IdUsuario, DateTime.Now);
                    }
                }
                if (empleado.NominaOtroPago != null)
                {
                    foreach (var otroPago in empleado.NominaOtroPago)
                    {
                        db.InsertNominaOtrosPagos(Guid.NewGuid(), IdPlantilla, otroPago.Tipo, otroPago.Importe, otroPago.Concepto, otroPago.SubsidioCausado, otroPago.SaldoAFavor, otroPago.Año, otroPago.RemanenteSalFav);
                    }
                }
                return(Json(new { error = false }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex) {
                return(Json(new { error = true, Description = ex.InnerException, Message = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }