Ejemplo n.º 1
0
        private static string IdseRegistroCambioSalario(Empresa emp, Empleado e, Empleado_Contrato con, Kardex kardex)
        {
            var registro = "                                                                                                                                                                                     ";

            //logitud de la cadena 169

            registro = registro.Insert(0, emp.RegistroPatronal);
            registro = registro.Insert(11, e.NSS);
            registro = registro.Insert(22, e.APaterno.ToUpper());
            registro = registro.Insert(49, e.AMaterno.ToUpper());
            registro = registro.Insert(76, e.Nombres.ToUpper());
            registro = registro.Insert(103, con.SDI.ToIdseFormat());
            registro = registro.Insert(109, "      ");
            registro = registro.Insert(115, " ");
            registro = registro.Insert(116, "2");                               //tipo salario segun rh
            registro = registro.Insert(117, "0");                               //semna jornada - cristian dijo que por default sera 0
            registro = registro.Insert(118, kardex.Fecha.ToString("ddMMyyyy")); //Cambiar a la fecha de cambios de salario
            registro = registro.Insert(126, "     ");
            registro = registro.Insert(131, "07");                              //cambio de salario
            registro = registro.Insert(133, emp.Guia);
            registro = registro.Insert(138, e.IdEmpleado.ToString());
            registro = registro.Insert(148, " ");
            registro = registro.Insert(149, e.CURP);
            registro = registro.Insert(167, "9");
            registro = registro.TrimEnd();
            return(registro);
        }
Ejemplo n.º 2
0
        public static NOM_Nomina_Detalle PensionAlimenticiaMonto(decimal monto, Empleado_Contrato contratoActual)
        {
            decimal porcentajePension      = contratoActual.PensionAlimenticiaPorcentaje != null ? (decimal)contratoActual.PensionAlimenticiaPorcentaje.Value : 0;
            var     tipoSueldo             = contratoActual.PensionAlimenticiaSueldo ?? 0;//Tipo de sueldo SD o SDI
            decimal sueldo                 = 0;
            decimal pagoPensionAlimenticia = 0;

            if (monto <= 0)
            {
                return(null);
            }


            pagoPensionAlimenticia = ((monto) * (porcentajePension / 100));

            NOM_Nomina_Detalle item = new NOM_Nomina_Detalle()
            {
                Id                  = 0,
                IdNomina            = 0,
                IdConcepto          = 48,
                Total               = Utils.TruncateDecimales(pagoPensionAlimenticia),
                GravadoISR          = Utils.TruncateDecimales(pagoPensionAlimenticia),
                ExentoISR           = 0,
                IntegraIMSS         = 0,
                ImpuestoSobreNomina = 0,
                Complemento         = false
            };

            return(item);
        }
Ejemplo n.º 3
0
        private static string IdseRegistroAltaReingreso(Empresa emp, Empleado e, Empleado_Contrato con)
        {
            var registro = "                                                                                                                                                                                     ";

            //logitud de la cadena 169

            registro = registro.Insert(0, emp.RegistroPatronal);
            registro = registro.Insert(11, e.NSS ?? "NoTieneNSS");
            registro = registro.Insert(22, e.APaterno);
            registro = registro.Insert(49, e.AMaterno);
            registro = registro.Insert(76, e.Nombres);
            registro = registro.Insert(103, con.SBC.ToIdseFormat());
            registro = registro.Insert(109, "      ");
            registro = registro.Insert(115, "1");                                                      //El que le asigna RH tipo de contrato
            registro = registro.Insert(116, "2");                                                      //El que le asigna RH
            registro = registro.Insert(117, "0");                                                      //Semana o jornada reducida
            registro = registro.Insert(118, con.FechaIMSS.ToStringOrEmptyDate <DateTime>("ddMMyyyy")); // cambiar al formato DDMMAAAA
            registro = registro.Insert(126, con.UMF ?? "");                                            //si no tiene ?
            registro = registro.Insert(129, "  ");

            registro = registro.Insert(131, "08");
            registro = registro.Insert(133, emp.Guia);//Guia es por Lugar MTY 34400 CUN 07400

            registro = registro.Insert(138, e.IdEmpleado.ToString());
            registro = registro.Insert(148, " ");
            registro = registro.Insert(149, e.CURP);
            registro = registro.Insert(167, "9");
            registro = registro.TrimEnd();
            return(registro);
        }
Ejemplo n.º 4
0
        public ActionResult Recontratar(Empleado_Contrato model)
        {
            var idUsuario = SessionHelpers.GetIdUsuario();
            var response  = ctx.Recontratacion(model, idUsuario);

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 5
0
        public JsonResult UpdateContrato(Empleado_Contrato model)
        {
            var idUsuario = SessionHelpers.GetIdUsuario();
            var response  = ctx.UpdateContrato2(model, idUsuario);

            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 6
0
        public void IMSS(Empleado_Contrato contrato)
        {
            var cd = GetDatosPersonales(contrato.IdEmpleado);

            cd.Fecha_IMSS = contrato.FechaIMSS.Value.ToString("dd-MM-yyyy");
            var titulo = GetTitulo(cd);

            NotificacionesCommon.CreateNotification(titulo, DateTime.Now, SessionHelpers.GetIdUsuario(), TiposNotificacion.Cambio_Fecha_IMSS, cd.IdCliente, cd, cd.IdSucursal, contrato.IdContrato, contrato.FechaAlta.ToString("dd-MM-yyyy"));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Pension ALimenticia = 48
        /// </summary>
        /// <param name="nomina"></param>
        /// <param name="contratoActual"></param>
        /// <param name="isImpuestoSobreNomina"></param>
        /// <param name="porcentaje"></param>
        /// <returns></returns>
        public static NOM_Nomina_Detalle PensionAlimenticia(NOM_Nomina nomina, Empleado_Contrato contratoActual, bool isImpuestoSobreNomina = false, decimal porcentaje = 0)
        {
            decimal porcentajePension      = contratoActual.PensionAlimenticiaPorcentaje != null ? (decimal)contratoActual.PensionAlimenticiaPorcentaje.Value : 0;
            var     tipoSueldo             = contratoActual.PensionAlimenticiaSueldo ?? 0;//Tipo de sueldo SD o SDI
            decimal sueldo                 = 0;
            decimal pagoPensionAlimenticia = 0;

            switch (tipoSueldo)
            {
            case 1:
                sueldo = nomina.SD;
                break;

            case 2:
                sueldo = nomina.SDI;
                break;
            }

            if (sueldo > 0 && porcentajePension > 0)
            {
                pagoPensionAlimenticia = ((sueldo * nomina.Dias_Laborados) * (porcentajePension / 100));

                //  GuardarConcepto(nomina.IdNomina, 48, pagoPensionAlimenticia, pagoPensionAlimenticia, impuestoNomina: 0);

                NOM_Nomina_Detalle item = new NOM_Nomina_Detalle()
                {
                    Id                  = 0,
                    IdNomina            = nomina.IdNomina,
                    IdConcepto          = 48,
                    Total               = Utils.TruncateDecimales(pagoPensionAlimenticia),
                    GravadoISR          = Utils.TruncateDecimales(pagoPensionAlimenticia),
                    ExentoISR           = 0,
                    IntegraIMSS         = 0,
                    ImpuestoSobreNomina = 0,
                    Complemento         = false
                };

                return(item);
            }

            return(null);
        }
Ejemplo n.º 8
0
        private static string IdseRegistroBaja(Empresa emp, Empleado e, Empleado_Contrato con)
        {
            var registro = "                                                                                                                                                                                     ";

            //logitud de la cadena 169

            registro = registro.Insert(0, emp.RegistroPatronal);
            registro = registro.Insert(11, e.NSS);
            registro = registro.Insert(22, e.APaterno);
            registro = registro.Insert(49, e.AMaterno);
            registro = registro.Insert(76, e.Nombres);
            registro = registro.Insert(103, "000000000000000");
            registro = registro.Insert(118, con.BajaIMSS.ToStringOrEmptyDate <DateTime>("ddMMyyyy"));
            registro = registro.Insert(131, "02");//02 es baja
            registro = registro.Insert(133, emp.Guia);
            registro = registro.Insert(138, e.IdEmpleado.ToString());
            registro = registro.Insert(148, "1");//Causa Baja segun lo capturado por RH
            registro = registro.Insert(149, "                  ");
            registro = registro.Insert(167, "9");
            registro = registro.TrimEnd();
            return(registro);
        }
Ejemplo n.º 9
0
        public void UploadRecords(DataTable data, int idSucursal, int idCliente, int idUsuario)
        {
            int       columnas = data.Columns.Count;
            Empleados ctx      = new Empleados();

            DataView dv = data.DefaultView;

            dv.Sort = "Paterno asc";//desc
            DataTable sortedDT = dv.ToTable();

            foreach (DataRow row in sortedDT.Rows)
            {
                if (validateRow(row))
                {
                    //Datos Personales
                    Empleado empleado = new Empleado();
                    empleado.Nombres         = row["Nombres"].ToString();
                    empleado.APaterno        = row["Paterno"].ToString();
                    empleado.AMaterno        = row["Materno"].ToString();
                    empleado.FechaNacimiento = Convert.ToDateTime(row["Fecha de Nacimiento"].ToString());
                    empleado.Sexo            = row["Sexo"].ToString().Equals("Hombre") ? "H" : "M";
                    empleado.RFC             = row["RFC"].ToString().Trim();
                    empleado.CURP            = row["CURP"].ToString().Trim();
                    empleado.NSS             = row["NSS"].ToString();
                    empleado.Nacionalidad    = row["Nacionalidad"].ToString();
                    empleado.Estado          = row["Estado de Origen"].ToString();
                    empleado.Telefono        = row["Teléfono"].ToString();
                    empleado.Celular         = row["Celular"].ToString();
                    empleado.Email           = row["Email"].ToString();
                    //Se guarda la dirección del empleado
                    empleado.Direccion = row["Dirección"].ToString();
                    //si la direccion es null se coloca en la celda de dirección "No proporcionada"
                    if (row["Dirección"] == DBNull.Value)
                    {
                        empleado.Direccion = "Dirección no proporcionada";
                    }
                    else
                    {
                        empleado.Direccion = row["Dirección"].ToString();
                    }
                    empleado.IdSucursal     = idSucursal;
                    empleado.EstadoCivil    = row["Edo Civil"].ToString();
                    empleado.Status         = true;
                    empleado.RFCValidadoSAT = 2;

                    var idEmpleado = ctx.CrearEmpleado(empleado, idUsuario);

                    if (idEmpleado > 0)
                    {
                        //Datos de Contratación
                        Empleado_Contrato contrato = new Empleado_Contrato();
                        contrato.IdEmpleado = idEmpleado;
                        contrato.FechaAlta  = Convert.ToDateTime(row["Fecha Alta"].ToString());
                        contrato.FechaReal  = Convert.ToDateTime(row["Fecha Real"].ToString());
                        if (row["Fecha IMSS"] != DBNull.Value)
                        {
                            contrato.FechaIMSS = Convert.ToDateTime(row["Fecha IMSS"].ToString());
                        }
                        if (row["UMF"] != DBNull.Value)
                        {
                            contrato.UMF = row["UMF"].ToString();
                        }
                        contrato.TipoContrato = row["Tipo Contrato"].ToString().Equals("Temporal") ? 2 : 1;
                        if (contrato.TipoContrato == 2)
                        {
                            contrato.Vigencia     = Convert.ToDateTime(row["Vigencia"].ToString());
                            contrato.DiasContrato = Convert.ToInt32(row["Días Contrato"]);
                        }
                        Puestos ctxPuestos = new Puestos();
                        contrato.IdPuesto           = ctxPuestos.ObtenerPuestoPorDescripcion(row["Puesto"].ToString());
                        contrato.Turno              = UtilsEmpleados.SeleccionarTurno(row["Turno"].ToString());
                        contrato.DiaDescanso        = UtilsEmpleados.selectDay(row["Descanso"].ToString());
                        contrato.IdPeriodicidadPago = UtilsEmpleados.SeleccionarPeriodicidadDePago(row["Periodicidad de pago"].ToString());
                        contrato.FormaPago          = UtilsEmpleados.SeleccionarFormaPago(row["Método Pago"].ToString());
                        contrato.PagoElectronico    = (contrato.FormaPago == 3 || contrato.FormaPago == 4 || contrato.FormaPago == 5 || contrato.FormaPago == 6 || contrato.FormaPago == 7) ? true : false;
                        contrato.SD                = Convert.ToDecimal(row["SD"].ToString());
                        contrato.SDI               = Convert.ToDecimal(row["SDI"].ToString());
                        contrato.SBC               = Convert.ToDecimal(row["SBC"].ToString());
                        contrato.SalarioReal       = Convert.ToDecimal(row["Salario Real"].ToString());
                        contrato.IdTipoJornada     = UtilsEmpleados.SeleccionarTipoNomina(row["Tipo de Jornada"].ToString());
                        contrato.TipoSalario       = UtilsEmpleados.SeleccionarTipoSalario(row["Tipo Salario"].ToString());
                        contrato.EntidadDeServicio = (row["Entidad de Servicio"].ToString());
                        contrato.Sindicalizado     = (row["Sindicalizado"].ToString().ToUpper().Equals("SI")) ? true : false;
                        contrato.Status            = true;
                        contrato.IdSucursal        = idSucursal;



                        Empresas ctxRP              = new Empresas();
                        int      idEmpresaFiscal    = 0;
                        int      idEmpresaAsimilado = 0;

                        if (row["Empresa Fiscal"] != DBNull.Value)
                        {
                            idEmpresaFiscal = ctxRP.GetIdByRazonSocial(row["Empresa Fiscal"].ToString(), idCliente);

                            contrato.IdEmpresaFiscal = idEmpresaFiscal;
                        }

                        if (row["Empresa Complemento"] != DBNull.Value)
                        {
                            contrato.IdEmpresaComplemento = ctxRP.GetIdByRazonSocial(row["Empresa Complemento"].ToString(), idCliente);
                        }

                        if (row["Empresa Sindicato"] != DBNull.Value)
                        {
                            contrato.IdEmpresaSindicato = ctxRP.GetIdByRazonSocial(row["Empresa Sindicato"].ToString(), idCliente);
                        }

                        if (row["Empresa Asimilado"] != DBNull.Value)
                        {
                            idEmpresaAsimilado          = ctxRP.GetIdByRazonSocial(row["Empresa Asimilado"].ToString(), idCliente);
                            contrato.IdEmpresaAsimilado = idEmpresaAsimilado;
                        }

                        //Tipo Regimen
                        contrato.IdTipoRegimen = idEmpresaAsimilado > 0 ? 8 : 1;//Asimilado Honorarios sino Sueldo

                        //Tipo Jornada
                        contrato.IdTipoJornada = 3;

                        //Crea el contrato en la base de datos
                        //factorfx
                        ctx.CrearContrato(contrato, idUsuario);

                        DatosBancarios bancarios = new DatosBancarios();
                        bancarios.IdEmpleado = idEmpleado;
                        Bancos bllBancos = new Bancos();

                        if (row["Banco"].ToString().Trim() != "")
                        {
                            bancarios.IdBanco = bllBancos.ObtenerIdBancoPorDescripcion(row["Banco"].ToString());
                        }

                        int numDatosBancarios = 0;
                        if (row["No Siga Fiscal"] != DBNull.Value)
                        {
                            if (row["No Siga Fiscal"].ToString().Trim() != "")
                            {
                                bancarios.NoSigaF = Convert.ToInt32(row["No Siga Fiscal"]);
                                numDatosBancarios++;
                            }
                        }
                        if (row["No Siga Complemento"] != DBNull.Value)
                        {
                            if (row["No Siga Complemento"].ToString().Trim() != "")
                            {
                                bancarios.NoSigaC = Convert.ToInt32(row["No Siga Complemento"]);
                                numDatosBancarios++;
                            }
                        }


                        if (row["Cuenta Bancaria"] != DBNull.Value)
                        {
                            bancarios.CuentaBancaria = row["Cuenta Bancaria"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["# Tarjeta"] != DBNull.Value)
                        {
                            bancarios.NumeroTarjeta = row["# Tarjeta"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["Clabe"] != DBNull.Value)
                        {
                            bancarios.Clabe = row["Clabe"].ToString();
                            numDatosBancarios++;
                        }


                        #region BENEFICIARIOS

                        if (row["Nombre Beneficiario"] != DBNull.Value)
                        {
                            bancarios.NombreBeneficiario = row["Nombre Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["RFC Beneficiario"] != DBNull.Value)
                        {
                            bancarios.RFCBeneficiario = row["RFC Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["CURP Beneficiario"] != DBNull.Value)
                        {
                            bancarios.CURPBeneficiario = row["CURP Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["Parentezco Beneficiario"] != DBNull.Value)
                        {
                            bancarios.ParentezcoBeneficiario = row["Parentezco Beneficiario"].ToString();
                            numDatosBancarios++;
                        }

                        if (row["Domicilio Beneficiario"] != DBNull.Value)
                        {
                            bancarios.DomicilioBeneficiario = row["Domicilio Beneficiario"].ToString();
                            numDatosBancarios++;
                        }
                        #endregion



                        bancarios.Status = true;

                        if (numDatosBancarios > 0)
                        {
                            ctx.NewDatosBancarios(bancarios, idUsuario, false);
                        }

                        var noti = new Notificaciones();
                        noti.Alta(idEmpleado);

                        //Asignar conceptos Default
                        ConceptosNomina.AsignarConceptosDefaultByEmpleado(idSucursal, idEmpleado);
                    }
                }
            }
        }
Ejemplo n.º 10
0
 public void CreateContrato(Empleado_Contrato contrato)
 {
     TempData["contrato"] = contrato;
 }
Ejemplo n.º 11
0
        private void PlantillaVacaciones(string file, string newPath, int[] vacaciones)
        {
            var             empresadoc = "";
            VacacionesClase vacas      = new VacacionesClase();

            foreach (var item in vacaciones)
            {
                using (var documento = DocX.Load(file))
                {
                    Empleado_Contrato empresa = new Empleado_Contrato();
                    var _vacas = vacas.WordDoc(item);
                    empresa = vacas.EmpresaEmpleado(_vacas.IdEmpleado);
                    if (empresa.IdEmpresaFiscal == null || empresa.IdEmpresaFiscal == 0)
                    {
                        if (empresa.IdEmpresaAsimilado == null || empresa.IdEmpresaAsimilado == 0)
                        {
                            if (empresa.IdEmpresaComplemento == null || empresa.IdEmpresaComplemento == 0)
                            {
                                empresadoc = _ctx.Empresa.Where(x => x.IdEmpresa == empresa.IdEmpresaSindicato).Select(x => x.RazonSocial).FirstOrDefault();
                            }
                            else
                            {
                                empresadoc = _ctx.Empresa.Where(x => x.IdEmpresa == empresa.IdEmpresaComplemento).Select(x => x.RazonSocial).FirstOrDefault();
                            }
                        }
                        else
                        {
                            empresadoc = _ctx.Empresa.Where(x => x.IdEmpresa == empresa.IdEmpresaAsimilado).Select(x => x.RazonSocial).FirstOrDefault();
                        }
                    }
                    else
                    {
                        empresadoc = _ctx.Empresa.Where(x => x.IdEmpresa == empresa.IdEmpresaFiscal).Select(x => x.RazonSocial).FirstOrDefault();
                    }
                    var nombre    = "Constancia_Vacaciones_" + _vacas.Paterno + "_" + _vacas.Materno + "_" + _vacas.Nombres;
                    var newDoc    = newPath + nombre + ".docx";
                    int sumatoria = vacas.sumatoria(_vacas.idvacaciones, _vacas.IdPeriodo);


                    var dias           = Convert.ToString(_vacas.Dias);
                    var anio           = Convert.ToString(_vacas.Inicio.Year);
                    var tomados        = Convert.ToString(sumatoria);
                    var pendientes     = _vacas.DiasTotales - (_vacas.Dias + sumatoria);
                    var DiasPendientes = Convert.ToString(pendientes);

                    documento.ReplaceText("<<Empleado_Empresa>>", empresadoc);
                    documento.ReplaceText("<<Nombres>>", _vacas.Nombres);
                    documento.ReplaceText("<<Paterno>>", _vacas.Paterno);
                    documento.ReplaceText("<<Materno>>", _vacas.Materno);
                    documento.ReplaceText("<<FechaDeAlta>>", _vacas.Alta.ToString("dd/MM/yyyy"));
                    documento.ReplaceText("<<Departamento>>", _vacas.Depa);
                    documento.ReplaceText("<<Puesto>>", _vacas._Puesto);
                    documento.ReplaceText("<<FechaActual>>", DateTime.Today.ToString("dd/MM/yyyy"));
                    documento.ReplaceText("<<Periodo>>", _vacas.PerioVaca);
                    documento.ReplaceText("<<Vacaciones_Anio>>", anio);
                    documento.ReplaceText("<<FechaInicio>>", _vacas.Inicio.ToString("dd/MM/yyyy"));
                    documento.ReplaceText("<<FechaFin>>", _vacas.Fin.ToString("dd/MM/yyyy"));
                    documento.ReplaceText("<<Presentarse>>", _vacas.Presentarse.ToString("dd/MM/yyyy"));
                    documento.ReplaceText("<<Dias>>", dias);
                    documento.ReplaceText("<<DiasTomados>>", tomados);
                    documento.ReplaceText("<<DiasPendientes>>", DiasPendientes);
                    documento.SaveAs(newDoc);
                }
            }
        }
Ejemplo n.º 12
0
        public CalculoInfonavit calcularInfonavit(Empleado_Infonavit infonavit)
        {
            //Obtener el contrato relacionado al credito
            Empleado_Contrato itemContrato = new Empleado_Contrato();

            using (var context = new RHEntities())
            {
                itemContrato =
                    context.Empleado_Contrato.FirstOrDefault(x => x.IdContrato == infonavit.IdEmpleadoContrato);
            }

            CalculoInfonavit calculo = new CalculoInfonavit();

            calculo.FechaInicio        = infonavit.FechaInicio;
            calculo.IdEmpleadoContrato = infonavit.IdEmpleadoContrato;
            calculo.IdInfonavit        = infonavit.Id;
            calculo.NumCredito         = infonavit.NumCredito;
            calculo.Salario            = infonavit.Salario;

            if (itemContrato != null)
            {//si el contrato tiene nuevo sdi, tomará el valor de ese nuevo sdi
                calculo.Salario = itemContrato.SDI;
            }

            calculo.FactorDescuento = infonavit.FactorDescuento;
            calculo.FechaSuspension = infonavit.FechaSuspension;
            calculo.Status          = infonavit.Status;
            calculo.TipoCredito     = infonavit.TipoCredito;

            if (calculo.FechaInicio < DateTime.Today)
            {
                calculo.FechaAplicada = DateTime.Today;
            }
            else
            {
                calculo.FechaAplicada = calculo.FechaInicio;
            }

            var numBimestre = Utils.GetBimestre(calculo.FechaAplicada.Value.Month);

            calculo.DiasBimestre = Utils.GetDiasDelBimestre(calculo.FechaAplicada.Value.Year, numBimestre);

            decimal salarioCalculo = 0;
            var     zonaSalario    = GetZonaSalario();

            switch (infonavit.TipoCredito)
            {
            case 1:     //Cuota Fijam
                calculo.DescuentoBimestral = calcularCuotaFija(calculo.FactorDescuento);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 2:     // Porcentaje//tomar el sdi del contrato
                calculo.DescuentoDiario    = calcularPorcentaje(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoBimestral = (calculo.DescuentoDiario * calculo.DiasBimestre) + 15;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 3:     //VSM

                if (infonavit.UsarUMA)
                {
                    salarioCalculo = zonaSalario.UMA;
                }
                else
                {
                    salarioCalculo = zonaSalario.SMG;
                }

                //calculo.Salario = sm != calculo.Salario ? sm : calculo.Salario;
                calculo.Salario = salarioCalculo != calculo.Salario ? salarioCalculo : calculo.Salario;

                calculo.DescuentoBimestral = calcularVSM(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            case 4:     //VSM



                if (infonavit.UsarUMA)
                {
                    salarioCalculo = zonaSalario.UMA;
                }
                else
                {
                    salarioCalculo = zonaSalario.SMG;
                }

                //calculo.Salario = sm != calculo.Salario ? sm : calculo.Salario;
                calculo.Salario = salarioCalculo != calculo.Salario ? salarioCalculo : calculo.Salario;

                calculo.DescuentoBimestral = calcularVSM(calculo.FactorDescuento, calculo.Salario.Value);
                calculo.DescuentoDiario    = calculo.DescuentoBimestral / calculo.DiasBimestre;
                calculo.TipoCredito        = infonavit.TipoCredito;
                break;

            default:
                break;
            }
            var iniBim = new DateTime(calculo.FechaAplicada.Value.Year, (numBimestre * 2) - 1, 1);
            var finBim = new DateTime(calculo.FechaAplicada.Value.Year, (numBimestre * 2), 1);

            calculo.BimestreAplicado = iniBim.ToString("MMMM") + " - " + finBim.ToString("MMMM");

            calculo.DescuentoBimestral = calculo.DescuentoBimestral; //Math.Round(calculo.DescuentoBimestral, 2);
            calculo.DescuentoDiario    = calculo.DescuentoDiario;    //Math.Round(calculo.DescuentoDiario, 2);
            return(calculo);
        }
Ejemplo n.º 13
0
        //public bool UploadRecords(DataTable data, int idSucursal, int idCliente, int idUsuario)
        //{
        //    Empleados ctx = new Empleados();

        //    foreach (DataRow row in data.Rows)
        //    {
        //        //Datos Personales
        //        Empleado empleado = new Empleado();
        //        empleado.Nombres = row["Nombres"].ToString();
        //        empleado.APaterno = row["Paterno"].ToString();
        //        empleado.AMaterno = row["Materno"].ToString();
        //        empleado.FechaNacimiento = Convert.ToDateTime(row["Fecha de Nacimiento"].ToString());
        //        empleado.Sexo = row["Sexo"].ToString().Equals("Hombre") ? "H" : "M";
        //        empleado.RFC = row["RFC"].ToString().Trim();
        //        empleado.CURP = row["CURP"].ToString().Trim();
        //        empleado.NSS = row["NSS"].ToString();
        //        empleado.Nacionalidad = row["Nacionalidad"].ToString();
        //        empleado.Estado = row["Estado de Origen"].ToString();
        //        empleado.Telefono = row["Teléfono"].ToString();
        //        empleado.Celular = row["Celular"].ToString();
        //        empleado.Email = row["Email"].ToString();
        //        empleado.Direccion = (row["Dirección"] == DBNull.Value) ? "Dirección no proporcionada" : row["Dirección"].ToString();
        //        empleado.IdSucursal = idSucursal;
        //        empleado.EstadoCivil = row["Edo Civil"].ToString();
        //        empleado.Status = true;
        //        empleado.RFCValidadoSAT = 2;

        //        var idEmpleado = ctx.CrearEmpleado(empleado, idUsuario);

        //        if (idEmpleado > 0)
        //        {
        //            //Datos de Contratación
        //            Empleado_Contrato contrato = new Empleado_Contrato();
        //            contrato.IdEmpleado = idEmpleado;
        //            contrato.FechaAlta = Convert.ToDateTime(row["Fecha Alta"].ToString());
        //            contrato.FechaReal = Convert.ToDateTime(row["Fecha Real"].ToString());
        //            if (row["Fecha IMSS"] != DBNull.Value)
        //                contrato.FechaIMSS = Convert.ToDateTime(row["Fecha IMSS"].ToString());
        //            if (row["UMF"] != DBNull.Value)
        //                contrato.UMF = row["UMF"].ToString();
        //            contrato.TipoContrato = row["Tipo Contrato"].ToString().Equals("Temporal") ? 2 : 1;
        //            if (contrato.TipoContrato == 2)
        //            {
        //                contrato.Vigencia = Convert.ToDateTime(row["Vigencia"].ToString());
        //                contrato.DiasContrato = Convert.ToInt32(row["Días Contrato"]);
        //            }
        //            Puestos ctxPuestos = new Puestos();
        //            contrato.IdPuesto = ctxPuestos.ObtenerPuestoPorDescripcion(row["Puesto"].ToString());
        //            contrato.Turno = UtilsEmpleados.SeleccionarTurno(row["Turno"].ToString());
        //            contrato.DiaDescanso = UtilsEmpleados.selectDay(row["Descanso"].ToString());
        //            contrato.IdPeriodicidadPago = UtilsEmpleados.SeleccionarPeriodicidadDePago(row["Periodicidad de pago"].ToString());
        //            contrato.FormaPago = UtilsEmpleados.SeleccionarFormaPago(row["Método Pago"].ToString());
        //            contrato.PagoElectronico = (contrato.FormaPago == 3 || contrato.FormaPago == 4 || contrato.FormaPago == 5 || contrato.FormaPago == 6 || contrato.FormaPago == 7) ? true : false;
        //            contrato.SD = Convert.ToDecimal(row["SD"].ToString());
        //            contrato.SDI = Convert.ToDecimal(row["SDI"].ToString());
        //            contrato.SBC = Convert.ToDecimal(row["SBC"].ToString());
        //            contrato.SalarioReal = Convert.ToDecimal(row["Salario Real"].ToString());
        //            contrato.IdTipoJornada = UtilsEmpleados.SeleccionarTipoNomina(row["Tipo de Jornada"].ToString());
        //            contrato.TipoSalario = UtilsEmpleados.SeleccionarTipoSalario(row["Tipo Salario"].ToString());
        //            contrato.EntidadDeServicio = (row["Entidad de Servicio"].ToString());
        //            contrato.Sindicalizado = (row["Sindicalizado"].ToString().ToUpper().Equals("SI")) ? true : false;
        //            contrato.Status = true;
        //            contrato.IdSucursal = idSucursal;



        //            Empresas ctxRP = new Empresas();
        //            int idEmpresaFiscal = 0;
        //            int idEmpresaAsimilado = 0;

        //            if (row["Empresa Fiscal"] != DBNull.Value)
        //            {
        //                idEmpresaFiscal = ctxRP.GetIdByRazonSocial(row["Empresa Fiscal"].ToString(), idCliente);

        //                contrato.IdEmpresaFiscal = idEmpresaFiscal;
        //            }

        //            if (row["Empresa Complemento"] != DBNull.Value)
        //                contrato.IdEmpresaComplemento = ctxRP.GetIdByRazonSocial(row["Empresa Complemento"].ToString(), idCliente);

        //            if (row["Empresa Sindicato"] != DBNull.Value)
        //                contrato.IdEmpresaSindicato = ctxRP.GetIdByRazonSocial(row["Empresa Sindicato"].ToString(), idCliente);

        //            if (row["Empresa Asimilado"] != DBNull.Value)
        //            {
        //                idEmpresaAsimilado = ctxRP.GetIdByRazonSocial(row["Empresa Asimilado"].ToString(), idCliente);
        //                contrato.IdEmpresaAsimilado = idEmpresaAsimilado;
        //            }

        //            //Tipo Regimen
        //            contrato.IdTipoRegimen = idEmpresaAsimilado > 0 ? 8 : 1;//Asimilado Honorarios sino Sueldo

        //            //Tipo Jornada
        //            contrato.IdTipoJornada = 3;

        //            //Crea el contrato en la base de datos
        //            ctx.CrearContrato(contrato);

        //            DatosBancarios bancarios = new DatosBancarios();
        //            bancarios.IdEmpleado = idEmpleado;
        //            Bancos bllBancos = new Bancos();

        //            if (row["Banco"].ToString().Trim() != "")
        //            {
        //                bancarios.IdBanco = bllBancos.ObtenerIdBancoPorDescripcion(row["Banco"].ToString());
        //            }

        //            int numDatosBancarios = 0;
        //            if (row["No Siga Fiscal"] != DBNull.Value)
        //            {
        //                if (row["No Siga Fiscal"].ToString().Trim() != "")
        //                {
        //                    bancarios.NoSigaF = Convert.ToInt32(row["No Siga Fiscal"]);
        //                    numDatosBancarios++;
        //                }
        //            }
        //            if (row["No Siga Complemento"] != DBNull.Value)
        //            {
        //                if (row["No Siga Complemento"].ToString().Trim() != "")
        //                {
        //                    bancarios.NoSigaC = Convert.ToInt32(row["No Siga Complemento"]);
        //                    numDatosBancarios++;
        //                }
        //            }


        //            if (row["Cuenta Bancaria"] != DBNull.Value)
        //            {
        //                bancarios.CuentaBancaria = row["Cuenta Bancaria"].ToString();
        //                numDatosBancarios++;
        //            }

        //            if (row["# Tarjeta"] != DBNull.Value)
        //            {
        //                bancarios.NumeroTarjeta = row["# Tarjeta"].ToString();
        //                numDatosBancarios++;
        //            }

        //            if (row["Clabe"] != DBNull.Value)
        //            {
        //                bancarios.Clabe = row["Clabe"].ToString();
        //                numDatosBancarios++;
        //            }


        //            #region BENEFICIARIOS

        //            if (row["Nombre Beneficiario"] != DBNull.Value)
        //            {
        //                bancarios.NombreBeneficiario = row["Nombre Beneficiario"].ToString();
        //                numDatosBancarios++;
        //            }

        //            if (row["RFC Beneficiario"] != DBNull.Value)
        //            {
        //                bancarios.RFCBeneficiario = row["RFC Beneficiario"].ToString();
        //                numDatosBancarios++;
        //            }

        //            if (row["CURP Beneficiario"] != DBNull.Value)
        //            {
        //                bancarios.CURPBeneficiario = row["CURP Beneficiario"].ToString();
        //                numDatosBancarios++;
        //            }

        //            if (row["Parentezco Beneficiario"] != DBNull.Value)
        //            {
        //                bancarios.ParentezcoBeneficiario = row["Parentezco Beneficiario"].ToString();
        //                numDatosBancarios++;
        //            }

        //            if (row["Domicilio Beneficiario"] != DBNull.Value)
        //            {
        //                bancarios.DomicilioBeneficiario = row["Domicilio Beneficiario"].ToString();
        //                numDatosBancarios++;
        //            }
        //            #endregion



        //            bancarios.Status = true;

        //            if (numDatosBancarios > 0)
        //                ctx.NewDatosBancarios(bancarios, false);

        //            var noti = new Notificaciones();
        //            noti.Alta(idEmpleado);

        //            //Asignar conceptos Default
        //            ConceptosNomina.AsignarConceptosDefaultByEmpleado(idSucursal, idEmpleado);
        //        }
        //        else
        //        {
        //            return false;
        //        }
        //    }
        //    return true;
        //}

        public bool UploadRecords(DataTable data, int idSucursal, int idCliente, int idUsuario)
        {
            try {
                List <Empleado>          listaEmpleados = new List <Empleado>();
                List <Empleado_Contrato> listaContratos = new List <Empleado_Contrato>();
                List <DatosBancarios>    listaBancarios = new List <DatosBancarios>();
                List <Puesto>            puestos        = new List <Puesto>();
                List <Empresa>           empresas       = new List <Empresa>();
                List <C_Banco_SAT>       bancos         = new List <C_Banco_SAT>();

                using (var context = new RHEntities())
                {
                    puestos  = context.Puesto.ToList();
                    empresas = context.Empresa.ToList();
                    bancos   = context.C_Banco_SAT.ToList();
                }

                Empleados ctx = new Empleados();

                #region Regitro de datos personal de empleados
                foreach (DataRow row in data.Rows)
                {
                    //Datos Empleado
                    Empleado empleado = new Empleado();
                    empleado.Nombres         = row["Nombres"].ToString();
                    empleado.APaterno        = row["Paterno"].ToString();
                    empleado.AMaterno        = row["Materno"].ToString();
                    empleado.FechaNacimiento = Convert.ToDateTime(row["Fecha de Nacimiento"].ToString());
                    empleado.Sexo            = row["Sexo"].ToString().Equals("Hombre") ? "H" : "M";
                    empleado.RFC             = row["RFC"].ToString().Trim();
                    empleado.CURP            = row["CURP"].ToString().Trim();
                    empleado.NSS             = row["NSS"].ToString();
                    empleado.Nacionalidad    = row["Nacionalidad"].ToString();
                    empleado.Estado          = row["Estado de Origen"].ToString();
                    empleado.Telefono        = row["Teléfono"].ToString();
                    empleado.Celular         = row["Celular"].ToString();
                    empleado.Email           = row["Email"].ToString();
                    empleado.Direccion       = (row["Dirección"] == DBNull.Value) ? "Dirección no proporcionada" : row["Dirección"].ToString();
                    empleado.IdSucursal      = idSucursal;
                    empleado.EstadoCivil     = row["Edo Civil"].ToString();
                    empleado.Status          = true;
                    empleado.RFCValidadoSAT  = 2;
                    empleado.FechaReg        = DateTime.Now;
                    empleado.IdUsuarioReg    = idUsuario;

                    listaEmpleados.Add(empleado);
                }
                // se registran todos los datos personales del empleado a ecxepcion de los de contrato y bancarios
                ctx.CrearEmpleados(listaEmpleados);
                #endregion

                #region REGISTRO DE CONTRATOS - DATOS BANCARIOS
                foreach (DataRow row in data.Rows)
                {
                    #region DATOS CONTRATO
                    var rfcComparacion = row["RFC"].ToString().Trim();
                    var idEmpleado     = listaEmpleados.Where(x => x.RFC == rfcComparacion).Select(x => x.IdEmpleado).FirstOrDefault();

                    if (idEmpleado == 0)
                    {
                        continue;
                    }

                    //Datos de Contratación
                    Empleado_Contrato contrato = new Empleado_Contrato();

                    contrato.IdEmpleado = idEmpleado;
                    contrato.FechaAlta  = Convert.ToDateTime(row["Fecha Alta"].ToString());
                    contrato.FechaReal  = Convert.ToDateTime(row["Fecha Real"].ToString());
                    if (row["Fecha IMSS"] != DBNull.Value)
                    {
                        contrato.FechaIMSS = Convert.ToDateTime(row["Fecha IMSS"].ToString());
                    }
                    if (row["UMF"] != DBNull.Value)
                    {
                        contrato.UMF = row["UMF"].ToString();
                    }
                    contrato.TipoContrato = row["Tipo Contrato"].ToString().Equals("Temporal") ? 2 : 1;
                    if (contrato.TipoContrato == 2)
                    {
                        contrato.Vigencia     = Convert.ToDateTime(row["Vigencia"].ToString());
                        contrato.DiasContrato = Convert.ToInt32(row["Días Contrato"]);
                    }

                    var puestoDatatable = row["Puesto"].ToString();
                    contrato.IdPuesto           = puestos.Where(x => x.Descripcion == puestoDatatable).Select(x => x.IdPuesto).FirstOrDefault();
                    contrato.Turno              = UtilsEmpleados.SeleccionarTurno(row["Turno"].ToString());
                    contrato.DiaDescanso        = UtilsEmpleados.selectDay(row["Descanso"].ToString());
                    contrato.IdPeriodicidadPago = UtilsEmpleados.SeleccionarPeriodicidadDePago(row["Periodicidad de pago"].ToString());
                    contrato.FormaPago          = UtilsEmpleados.SeleccionarFormaPago(row["Método Pago"].ToString());
                    contrato.PagoElectronico    = (contrato.FormaPago == 3 || contrato.FormaPago == 4 || contrato.FormaPago == 5 || contrato.FormaPago == 6 || contrato.FormaPago == 7) ? true : false;
                    contrato.SD                = Convert.ToDecimal(row["SD"].ToString());
                    contrato.SDI               = Convert.ToDecimal(row["SDI"].ToString());
                    contrato.SBC               = Convert.ToDecimal(row["SBC"].ToString());
                    contrato.SalarioReal       = Convert.ToDecimal(row["Salario Real"].ToString());
                    contrato.IdTipoJornada     = UtilsEmpleados.SeleccionarTipoNomina(row["Tipo de Jornada"].ToString());
                    contrato.TipoSalario       = UtilsEmpleados.SeleccionarTipoSalario(row["Tipo Salario"].ToString());
                    contrato.EntidadDeServicio = (row["Entidad de Servicio"].ToString());
                    contrato.Sindicalizado     = (row["Sindicalizado"].ToString().ToUpper().Equals("SI")) ? true : false;
                    contrato.Status            = true;
                    contrato.IdSucursal        = idSucursal;

                    int idEmpresaAsimilado = 0;

                    if (row["Empresa Fiscal"] != DBNull.Value)
                    {
                        var empresaFiscalDatatable = row["Empresa Fiscal"].ToString();
                        contrato.IdEmpresaFiscal = empresas.Where(x => x.RazonSocial == empresaFiscalDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                    }

                    if (row["Empresa Complemento"] != DBNull.Value)
                    {
                        var empresaComplementoDatatable = row["Empresa Complemento"].ToString();
                        contrato.IdEmpresaComplemento = empresas.Where(x => x.RazonSocial == empresaComplementoDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                    }

                    if (row["Empresa Sindicato"] != DBNull.Value)
                    {
                        var empresaSindicatoDatatable = row["Empresa Sindicato"].ToString();
                        contrato.IdEmpresaSindicato = empresas.Where(x => x.RazonSocial == empresaSindicatoDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                    }

                    if (row["Empresa Asimilado"] != DBNull.Value)
                    {
                        var empresaAsimiladoDatatable = row["Empresa Asimilado"].ToString();
                        idEmpresaAsimilado          = empresas.Where(x => x.RazonSocial == empresaAsimiladoDatatable).Select(x => x.IdEmpresa).FirstOrDefault();
                        contrato.IdEmpresaAsimilado = idEmpresaAsimilado;
                    }

                    //Tipo Regimen
                    contrato.IdTipoRegimen = idEmpresaAsimilado > 0 ? 8 : 1;//Asimilado Honorarios sino Sueldo

                    //Tipo Jornada
                    contrato.IdTipoJornada = 3;
                    contrato.FechaReg      = DateTime.Now;
                    contrato.IdUsuarioReg  = idUsuario;

                    #endregion
                    #region DATOS BANCARIOS

                    DatosBancarios bancarios = new DatosBancarios();
                    bancarios.IdEmpleado = idEmpleado;

                    if (row["Banco"].ToString().Trim() != "")
                    {
                        var bancoDatatable = row["Banco"].ToString();
                        bancarios.IdBanco = bancos.Where(x => x.Descripcion == bancoDatatable).Select(x => x.IdBanco).FirstOrDefault();
                    }

                    if (row["No Siga Fiscal"] != DBNull.Value)
                    {
                        if (row["No Siga Fiscal"].ToString().Trim() != "")
                        {
                            bancarios.NoSigaF = Convert.ToInt32(row["No Siga Fiscal"]);
                        }
                    }
                    if (row["No Siga Complemento"] != DBNull.Value)
                    {
                        if (row["No Siga Complemento"].ToString().Trim() != "")
                        {
                            bancarios.NoSigaC = Convert.ToInt32(row["No Siga Complemento"]);
                        }
                    }

                    if (row["Cuenta Bancaria"] != DBNull.Value)
                    {
                        bancarios.CuentaBancaria = row["Cuenta Bancaria"].ToString();
                    }

                    if (row["# Tarjeta"] != DBNull.Value)
                    {
                        bancarios.NumeroTarjeta = row["# Tarjeta"].ToString();
                    }

                    if (row["Clabe"] != DBNull.Value)
                    {
                        bancarios.Clabe = row["Clabe"].ToString();
                    }

                    #region BENEFICIARIOS

                    if (row["Nombre Beneficiario"] != DBNull.Value)
                    {
                        bancarios.NombreBeneficiario = row["Nombre Beneficiario"].ToString();
                    }

                    if (row["RFC Beneficiario"] != DBNull.Value)
                    {
                        bancarios.RFCBeneficiario = row["RFC Beneficiario"].ToString();
                    }

                    if (row["CURP Beneficiario"] != DBNull.Value)
                    {
                        bancarios.CURPBeneficiario = row["CURP Beneficiario"].ToString();
                    }

                    if (row["Parentezco Beneficiario"] != DBNull.Value)
                    {
                        bancarios.ParentezcoBeneficiario = row["Parentezco Beneficiario"].ToString();
                    }

                    if (row["Domicilio Beneficiario"] != DBNull.Value)
                    {
                        bancarios.DomicilioBeneficiario = row["Domicilio Beneficiario"].ToString();
                    }
                    #endregion

                    bancarios.Status = true;

                    //se agregan a las listas
                    listaContratos.Add(contrato);
                    listaBancarios.Add(bancarios);

                    #endregion
                }//fin del segundo for

                //se guardan los datos en DB
                ctx.CrearContratosDatosB(listaContratos, listaBancarios);

                #endregion

                var noti             = new Notificaciones();
                var arrayIdsEmpleado = listaEmpleados.Select(x => x.IdEmpleado).ToArray();
                //noti.Alta(idEmpleado);
                noti.Alta(arrayIdsEmpleado, idUsuario);

                KardexEmpleado kardex = new KardexEmpleado();
                kardex.AltaByArray(arrayIdsEmpleado, idUsuario);

                //Asignar conceptos Default
                ConceptosNomina.AsignarConceptosDefaultByEmpleados(idSucursal, arrayIdsEmpleado);
                //ConceptosNomina.AsignarConceptosDefaultByEmpleado(idSucursal, idEmpleado);

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Ejemplo n.º 14
0
        public static NOM_Nomina_Detalle PensionAlimenticiaComplemento(NOM_Nomina nomina, Empleado_Contrato contratoActual, bool isImpuestoSobreNomina = false, decimal porcentaje = 0)
        {
            decimal porcentajePension      = contratoActual.PensionAlimenticiaPorcentaje != null ? (decimal)contratoActual.PensionAlimenticiaPorcentaje.Value : 0;
            var     tipoSueldo             = contratoActual.PensionAlimenticiaSueldo ?? 0;
            decimal sueldo                 = nomina.SDReal;
            decimal pagoPensionAlimenticia = 0;

            //switch (tipoSueldo)
            //{
            //    case 1:
            //        sueldo = nomina.SD;
            //        break;
            //    case 2:
            //        sueldo = nomina.SDI;
            //        break;
            //}

            if (sueldo > 0 && porcentajePension > 0)
            {
                pagoPensionAlimenticia = (porcentajePension * sueldo) * (porcentajePension / 100);

                // GuardarConcepto(nomina.IdNomina, 48, pagoPensionAlimenticia, pagoPensionAlimenticia, impuestoNomina: 0, isComplemento: true);

                NOM_Nomina_Detalle item = new NOM_Nomina_Detalle()
                {
                    Id                  = 0,
                    IdNomina            = nomina.IdNomina,
                    IdConcepto          = 48,
                    Total               = pagoPensionAlimenticia,
                    GravadoISR          = pagoPensionAlimenticia,
                    ExentoISR           = 0,
                    IntegraIMSS         = 0,
                    ImpuestoSobreNomina = 0,
                    Complemento         = false
                };

                return(item);
            }

            return(null);
        }
Ejemplo n.º 15
0
        private static byte[] GetDatosEmpleadosPdf(int idEmpleado)
        {
            byte[]       byteInfo;
            MemoryStream ms     = new MemoryStream();
            Document     doc    = new Document(PageSize.LETTER, 50, 50, 25, 25);
            PdfWriter    writer = PdfWriter.GetInstance(doc, ms);

            writer.CloseStream = false;
            doc.Open();

            try
            {
                Empleado          itemEmpleado   = new Empleado();
                Empleado_Contrato itemContrato   = new Empleado_Contrato();
                Cliente           itemCliente    = new Cliente();
                Sucursal          itemSucursal   = new Sucursal();
                List <Empresa>    listaEmpresas  = new List <Empresa>();
                DatosBancarios    itemBancarios  = new DatosBancarios();
                Puesto            itemPuesto     = new Puesto();
                C_Banco_SAT       itemBancoSat   = new C_Banco_SAT();
                string            empFiscal      = "";
                string            empComplemento = "";
                SYA_Usuarios      usuario        = new SYA_Usuarios();

                using (var context = new RHEntities())
                {
                    itemEmpleado = context.Empleado.FirstOrDefault(x => x.IdEmpleado == idEmpleado);

                    itemContrato =
                        context.Empleado_Contrato.Where(x => x.IdEmpleado == idEmpleado)
                        .OrderByDescending(x => x.IdContrato)
                        .FirstOrDefault();

                    if (itemContrato == null)
                    {
                        return(null);
                    }

                    itemSucursal = context.Sucursal.FirstOrDefault(x => x.IdSucursal == itemEmpleado.IdSucursal);

                    itemCliente = context.Cliente.FirstOrDefault(x => x.IdCliente == itemSucursal.IdCliente);

                    listaEmpresas = context.Empresa.ToList();

                    itemPuesto = context.Puesto.FirstOrDefault(x => x.IdPuesto == itemContrato.IdPuesto);

                    itemBancarios = context.DatosBancarios.FirstOrDefault(x => x.IdEmpleado == idEmpleado);

                    itemBancoSat = context.C_Banco_SAT.FirstOrDefault(x => x.IdBanco == itemBancarios.IdBanco);

                    usuario = context.SYA_Usuarios.FirstOrDefault(x => x.IdUsuario == itemContrato.IdUsuarioReg);
                }


                if (itemContrato.IdEmpresaFiscal != null)
                {
                    Empresa itemEmpF = listaEmpresas.FirstOrDefault(x => x.IdEmpresa == itemContrato.IdEmpresaFiscal.Value);
                    empFiscal = itemEmpF != null ? itemEmpF.RazonSocial : "na";
                }

                if (itemContrato.IdEmpresaComplemento != null)
                {
                    Empresa itemEmpC = listaEmpresas.FirstOrDefault(x => x.IdEmpresa == itemContrato.IdEmpresaComplemento.Value);
                    empComplemento = itemEmpC != null ? itemEmpC.RazonSocial : "na";
                }


                doc.NewPage();


                //// Paragraph to draw line.
                //Paragraph p = new Paragraph(new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK, Element.ALIGN_LEFT, 1)));
                //// call the below to add the line when required.
                //doc.Add(p);

                //doc.Add(Chunk.NEWLINE);

                string strNombre = "";

                strNombre = itemContrato.Status == true ? $" {itemEmpleado.Nombres} {itemEmpleado.APaterno} {itemEmpleado.AMaterno}" : $" {itemEmpleado.Nombres} {itemEmpleado.APaterno} {itemEmpleado.AMaterno} - Baja";

                doc.Add(new Phrase(strNombre, Font14B));
                doc.Add(Chunk.NEWLINE);
                if (usuario != null)
                {
                    string strUsuario =
                        $" Registrado por: {usuario.Nombres} {usuario.ApPaterno} {usuario.ApMaterno}          Fecha Reg: {itemContrato.FechaReg}";
                    doc.Add(new Phrase(strUsuario, Font9));
                }
                //doc.Add(Chunk.NEWLINE);

                // Paragraph to draw line.
                Paragraph p =
                    new Paragraph(
                        new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK,
                                                                             Element.ALIGN_LEFT, 1)));
                // call the below to add the line when required.
                doc.Add(p);

                // LineSeparator line = new LineSeparator(1f, 100f, BaseColor.BLACK, Element.ALIGN_LEFT, 1);
                //doc.Add(line);


                doc.Add(Chunk.NEWLINE);
                SetDataDoc(ref doc, "IdEmpleado : ", itemEmpleado.IdEmpleado.ToString());
                SetDataDoc(ref doc, "Nombre(s) : ", itemEmpleado.Nombres);
                SetDataDoc(ref doc, "Paterno : ", itemEmpleado.APaterno);
                SetDataDoc(ref doc, "Materno : ", itemEmpleado.AMaterno);
                SetDataDoc(ref doc, "NSS : ", itemEmpleado.NSS);
                SetDataDoc(ref doc, "RFC : ", itemEmpleado.RFC);
                SetDataDoc(ref doc, "CURP : ", itemEmpleado.CURP);

                doc.Add(Chunk.NEWLINE);

                SetDataDoc(ref doc, "Cliente   : ", itemCliente.Nombre);
                SetDataDoc(ref doc, "Sucursal : ", itemSucursal.Ciudad);
                SetDataDoc(ref doc, "Puesto : ", itemPuesto.Descripcion);

                doc.Add(Chunk.NEWLINE);
                SetDataDoc(ref doc, "Empresa Fiscal : ", empFiscal);
                SetDataDoc(ref doc, "Empresa Comp : ", empComplemento);
                SetDataDoc(ref doc, "SD : ", itemContrato.SD.ToString());
                SetDataDoc(ref doc, "SDI : ", itemContrato.SDI.ToString());
                SetDataDoc(ref doc, "SDR : ", itemContrato.SalarioReal.ToString());

                SetDataDoc(ref doc, itemContrato.IsReingreso ? "Fecha Reingreso : " : "Fecha Alta : ", itemContrato.FechaAlta.ToString("dd MMM yyyy"));
                SetDataDoc(ref doc, "Fecha Imss : ", itemContrato.FechaIMSS != null ? itemContrato.FechaIMSS.Value.ToString("dd MMM yyyy") : "--");
                SetDataDoc(ref doc, "Fecha Real : ", itemContrato.FechaReal.ToString("dd MMM yyyy"));
                SetDataDoc(ref doc, "Tipo Contrato : ", itemContrato.IsReingreso ? "Reingreso" : "Nuevo");

                SetDataDoc(ref doc, "Estatus contrato : ", itemContrato.Status ? "Vigente" : "Baja");

                if (itemContrato.Status == false)
                {
                    SetDataDoc(ref doc, "Fecha Baja : ", itemContrato.FechaBaja != null ? itemContrato.FechaBaja.Value.ToString("dd MMM yyyy") : "--");
                    SetDataDoc(ref doc, "Baja Imss : ", itemContrato.BajaIMSS != null ? itemContrato.BajaIMSS.Value.ToString("dd MMM yyyy") : "--");
                    SetDataDoc(ref doc, "Motivo Baja : ", itemContrato.MotivoBaja != null ? itemContrato.MotivoBaja : "--");
                    SetDataDoc(ref doc, "Comentario Baja : ", itemContrato.ComentarioBaja != null ? itemContrato.ComentarioBaja : "--");
                }

                doc.Add(Chunk.NEWLINE);

                SetDataDoc(ref doc, "Banco : ", itemBancoSat.Descripcion);
                SetDataDoc(ref doc, "Siga F : ", itemBancarios.NoSigaF.ToString());
                SetDataDoc(ref doc, "Siga C : ", itemBancarios.NoSigaC.ToString());
                SetDataDoc(ref doc, "Cuenta Bancaria : ", itemBancarios.CuentaBancaria);
                SetDataDoc(ref doc, "Num. de Tarjeta  : ", itemBancarios.NumeroTarjeta);
                SetDataDoc(ref doc, "Clabe Interbancaria : ", itemBancarios.Clabe);
                doc.Add(Chunk.NEWLINE);
                SetDataDoc(ref doc, "Beneficiario : ", itemBancarios.NombreBeneficiario);
                SetDataDoc(ref doc, "RFC Beneficiario   : ", itemBancarios.RFCBeneficiario);
                SetDataDoc(ref doc, "CURP Beneficiario : ", itemBancarios.CURPBeneficiario);
                SetDataDoc(ref doc, "Parentezco : ", itemBancarios.ParentezcoBeneficiario);
                SetDataDoc(ref doc, "Domicilio Beneficiario : ", itemBancarios.DomicilioBeneficiario);
            }
            catch (Exception e)
            {
                doc.Add(new Phrase($"Error ? {e.Message}", Font14B));
            }
            finally
            {
                doc.Close();

                byteInfo = ms.ToArray();
                ms.Write(byteInfo, 0, byteInfo.Length);
                ms.Position = 0;
                ms.Flush();
                ms.Dispose();
            }

            return(byteInfo);
        }