Exemplo n.º 1
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);
            }
        }