Esempio n. 1
0
        private bool GuardarDomingo()
        {
            Cargando.Mostrar();

            // Se guarda la nómina
            int iBancoCuentaID = Util.Entero(this.cmbCuentaBancaria.SelectedValue);
            string sDia = DateTime.Now.ToString("yyMMdd");
            var oNomina = new Nomina()
            {
                Semana = DateTime.Now,
                Fecha = DateTime.Now,
                BancoCuentaID = iBancoCuentaID,
                Domingo = true
            };
            Datos.Guardar<Nomina>(oNomina);

            // Se guarda el detalle
            foreach (DataGridViewRow oFila in this.dgvDatos.Rows)
            {
                if (!Util.Logico(oFila.Cells["Sel"].Value))
                    continue;

                int iUsuarioID = Util.Entero(oFila.Cells["UsuarioID"].Value);
                int iSucursalID = Util.Entero(oFila.Cells["SucursalID"].Value);
                // Se guardan los datos
                var oNominaFijo = new NominaUsuario()
                {
                    NominaID = oNomina.NominaID,
                    IdUsuario = iUsuarioID,
                    SucursalID = Util.Entero(oFila.Cells["SucursalID"].Value),
                    Adicional = Util.Decimal(oFila.Cells["Adicional"].Value),
                    Tickets = Util.Decimal(oFila.Cells["Tickets"].Value),
                    Adelanto = Util.Decimal(oFila.Cells["Adelanto"].Value),
                    MinutosTarde = Util.Decimal(oFila.Cells["MinutosTarde"].Value),
                    Otros = Util.Decimal(oFila.Cells["Otros"].Value)
                };
                Datos.Guardar<NominaUsuario>(oNominaFijo);

                // Se genera el gasto contable por la diferencia, si aplica
                decimal mDiferencia = Util.Decimal(oFila.Cells["Diferencia"].Value);
                if (mDiferencia != 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.Salarios && c.RelacionID == iUsuarioID);
                    if (oCuentaAux != null)
                    {
                        var oGasto = new ContaEgreso()
                        {
                            ContaCuentaAuxiliarID = oCuentaAux.ContaCuentaAuxiliarID,
                            Fecha = DateTime.Now,
                            Importe = mDiferencia,
                            TipoFormaPagoID = Cat.FormasDePago.Efectivo,
                            TipoDocumentoID = Cat.TiposDeDocumento.Nota,
                            EsFiscal = false,
                            Observaciones = "NÓMINA DOMINGO",
                            SucursalID = iSucursalID,
                            RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID,
                            FolioFactura = sDia,
                        };
                        ContaProc.GastoCrear(oGasto);
                    }
                }
            }

            // Se generan las pólizas contables correspondientes (AfeConta)
            var oNominaUsuariosV = Datos.GetListOf<NominaUsuariosView>(c => c.NominaID == oNomina.NominaID);
            foreach (var oReg in oNominaUsuariosV)
            {
                // Se crea la póliza de la diferencia, si aplica
                if (oReg.Diferencia != 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.Salarios && c.RelacionID == oReg.UsuarioID);
                    if (oCuentaAux == null)
                    {
                        UtilLocal.MensajeAdvertencia("No se encontró la cuenta auxiliar: Salarios -> " + oReg.Usuario + ". No se creará la póliza de Complemento Nómina.");
                        continue;
                    }
                    ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "NÓMINA DOMINGO"
                        , oCuentaAux.ContaCuentaAuxiliarID, Cat.ContaCuentasAuxiliares.ReservaNomina, oReg.Diferencia.Valor(), oReg.Usuario
                        , Cat.Tablas.NominaUsuario, oReg.NominaID.Valor());
                }

                // Se crea la póliza del adelanto, si aplica
                DateTime dAhora = DateTime.Now;
                if (oReg.Adelanto > 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.DeudoresDiversos
                        && c.RelacionID == oReg.UsuarioID);
                    if (oCuentaAux != null)
                    {
                        ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "ADELANTO", Cat.ContaCuentasAuxiliares.Caja, oCuentaAux.ContaCuentaAuxiliarID
                            , oReg.Adelanto, oReg.Usuario, Cat.Tablas.NominaUsuario, oReg.NominaID.Valor(), oReg.SucursalID);
                        // Se crea adicionalmente, un ingreso de caja por el importe del adelanto
                        var oIngreso = new CajaIngreso()
                        {
                            CajaTipoIngresoID = Cat.CajaTiposDeIngreso.Otros,
                            Concepto = ("PAGO ADELANTO " + oReg.Usuario),
                            Importe = oReg.Adelanto,
                            Fecha = dAhora,
                            SucursalID = oReg.SucursalID,
                            RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID
                        };
                        Datos.Guardar<CajaIngreso>(oIngreso);
                    }
                }
                // Se crea la póliza de minutos tarde y otros, si aplica
                if (oReg.MinutosTarde > 0 || oReg.Otros > 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.Salarios
                        && c.RelacionID == oReg.UsuarioID);
                    if (oCuentaAux != null)
                    {
                        if (oReg.MinutosTarde > 0)
                            ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "MINUTOS TARDE", Cat.ContaCuentasAuxiliares.ReservaNomina, oCuentaAux.ContaCuentaAuxiliarID
                                , oReg.MinutosTarde, oReg.Usuario, Cat.Tablas.NominaUsuario, oReg.NominaID.Valor());
                        if (oReg.Otros > 0)
                            ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "OTROS DESCUENTOS", Cat.ContaCuentasAuxiliares.ReservaNomina, oCuentaAux.ContaCuentaAuxiliarID
                                , oReg.Otros, oReg.Usuario, Cat.Tablas.NominaUsuario, oReg.NominaID.Valor());
                    }
                }
            }

            // Se manda a imprimir la nómina de cada usuario
            var oRep = new Report();
            oRep.Load(UtilLocal.RutaReportes("NominaDomingo.frx"));
            oRep.RegisterData(new List<Nomina>() { oNomina }, "Nomina");
            oRep.RegisterData(oNominaUsuariosV, "Usuarios");

            Cargando.Cerrar();
            UtilLocal.EnviarReporteASalida("Reportes.NominaDomingo.Salida", oRep);

            UtilLocal.MostrarNotificacion("Proceso completado.");
            this.btnDomingo_Click(this, null);

            return true;
        }
Esempio n. 2
0
        private bool AccionGuardar()
        {
            if (!this.Validar())
                return false;

            if (this.bDomingo)
                return this.GuardarDomingo();

            Cargando.Mostrar();

            // Se guarda la nómina
            int iBancoCuentaID = Util.Entero(this.cmbCuentaBancaria.SelectedValue);
            DateTime dAhora = DateTime.Now;
            DateTime dOficial = this.dtpOficial.Value;
            DateTime dComplementaria = this.dtpComplementaria.Value;
            string sDiaOficial = dOficial.ToString("yyMMdd");
            string sDiaComplementaria = dComplementaria.ToString("yyMMdd");
            DateTime dSemana = Util.FechaHora(this.cmbSemana.SelectedValue);
            bool bEsAguinaldo = (this.cmbSemana.Text == "AGUINALDO");
            var oNomina = new Nomina()
            {
                Semana = dSemana,
                Fecha = dAhora,
                BancoCuentaID = iBancoCuentaID,
                EsAguinaldo = bEsAguinaldo
            };
            Datos.Guardar<Nomina>(oNomina);

            // Se guarda el detalle
            decimal mTotalOficial = 0;
            foreach (DataGridViewRow oFila in this.dgvDatos.Rows)
            {
                if (!Util.Logico(oFila.Cells["Sel"].Value))
                    continue;

                int iUsuarioID = Util.Entero(oFila.Cells["UsuarioID"].Value);
                int iSucursalID = Util.Entero(oFila.Cells["SucursalID"].Value);
                // Se llenan los datos de la nómina oficial (dinámico)
                for (int iCol = this.iColumnasFijas; iCol < this.dgvDatos.Columns.Count; iCol++)
                {
                    var oNominaOfCuentaV = (this.dgvDatos.Columns[iCol].Tag as NominaOficialCuentasView);
                    var oNominaOf = new NominaUsuarioOficial()
                    {
                        NominaID = oNomina.NominaID,
                        IdUsuario = iUsuarioID,
                        ContaCuentaDeMayorID = oNominaOfCuentaV.ContaCuentaDeMayorID,
                        Importe = Util.Decimal(oFila.Cells[iCol].Value),
                        Suma = oNominaOfCuentaV.Suma
                    };
                    Datos.Guardar<NominaUsuarioOficial>(oNominaOf);
                }
                // Se guardan los datos no dinámicos
                var oNominaFijo = new NominaUsuario()
                {
                    NominaID = oNomina.NominaID,
                    IdUsuario = iUsuarioID,
                    SucursalID = Util.Entero(oFila.Cells["SucursalID"].Value),
                    SuperoMinimo = (oFila.Cells["SueldoMinimo"].Style.ForeColor == Color.Gray),
                    SueldoFijo = Util.Decimal(oFila.Cells["SueldoFijo"].Value),
                    SueldoVariable = Util.Decimal(oFila.Cells["SueldoVariable"].Value),
                    Sueldo9500 = Util.Decimal(oFila.Cells["Sueldo9500"].Value),
                    SueldoMinimo = Util.Decimal(oFila.Cells["SueldoMinimo"].Value),
                    Bono = Util.Decimal(oFila.Cells["Bono"].Value),
                    Adicional = Util.Decimal(oFila.Cells["Adicional"].Value),
                    Tickets = Util.Decimal(oFila.Cells["Tickets"].Value),
                    Adelanto = Util.Decimal(oFila.Cells["Adelanto"].Value),
                    MinutosTarde = Util.Decimal(oFila.Cells["MinutosTarde"].Value),
                    Otros = Util.Decimal(oFila.Cells["Otros"].Value)
                };
                Datos.Guardar<NominaUsuario>(oNominaFijo);

                // Se generan los gastos contables correspondientes, de lo oficial
                for (int iCol = this.iColumnasFijas; iCol < this.dgvDatos.Columns.Count; iCol++)
                {
                    decimal mImporte = Util.Decimal(oFila.Cells[iCol].Value);
                    var oNominaOfCuentaV = (this.dgvDatos.Columns[iCol].Tag as NominaOficialCuentasView);
                    int iCuentaDeMayorID = oNominaOfCuentaV.ContaCuentaDeMayorID;
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == iCuentaDeMayorID && c.RelacionID == iUsuarioID);
                    if (oCuentaAux == null)
                        continue;
                    var oGasto = new ContaEgreso()
                    {
                        ContaCuentaAuxiliarID = oCuentaAux.ContaCuentaAuxiliarID,
                        Fecha = dOficial,
                        Importe = mImporte,
                        TipoFormaPagoID = Cat.FormasDePago.Transferencia,
                        FolioDePago = sDiaOficial,
                        TipoDocumentoID = Cat.TiposDeDocumento.Factura,
                        EsFiscal = true,
                        Observaciones = ("NÓMINA " + this.cmbSemana.Text),
                        SucursalID = iSucursalID,
                        RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID,
                        FolioFactura = sDiaOficial,
                        BancoCuentaID = iBancoCuentaID
                    };
                    ContaProc.GastoCrear(oGasto);
                }
                // Se genera el gasto contable por la diferencia, si aplica
                decimal mDiferencia = Util.Decimal(oFila.Cells["Diferencia"].Value);
                if (mDiferencia != 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.Salarios && c.RelacionID == iUsuarioID);
                    if (oCuentaAux != null)
                    {
                        var oGasto = new ContaEgreso()
                        {
                            ContaCuentaAuxiliarID = oCuentaAux.ContaCuentaAuxiliarID,
                            Fecha = dComplementaria,
                            Importe = mDiferencia,
                            TipoFormaPagoID = Cat.FormasDePago.Efectivo,
                            TipoDocumentoID = Cat.TiposDeDocumento.Nota,
                            EsFiscal = false,
                            Observaciones = ("CN " + this.cmbSemana.Text),
                            SucursalID = iSucursalID,
                            RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID,
                            FolioFactura = sDiaComplementaria,
                        };
                        ContaProc.GastoCrear(oGasto);
                    }
                }

                mTotalOficial += Util.Decimal(oFila.Cells["TotalOficial"].Value);
            }

            // Se genera el moviemiento bancario, con lo oficial
            var oMov = new BancoCuentaMovimiento()
            {
                BancoCuentaID = iBancoCuentaID,
                EsIngreso = false,
                Fecha = dOficial,
                FechaAsignado = dAhora,
                SucursalID = GlobalClass.SucursalID,
                Importe = mTotalOficial,
                Concepto = "NÓMINA BANCARIA",
                Referencia = GlobalClass.UsuarioGlobal.NombreUsuario,
                TipoFormaPagoID = Cat.FormasDePago.Transferencia,
                RelacionTabla = Cat.Tablas.Nomina,
                RelacionID = oNomina.NominaID
            };
            ContaProc.RegistrarMovimientoBancario(oMov);

            // Se generan las pólizas contables correspondientes (AfeConta)
            var oNominaUsuariosV = Datos.GetListOf<NominaUsuariosView>(c => c.NominaID == oNomina.NominaID);
            var oPolizaBase = new ContaPoliza()
            {
                ContaTipoPolizaID = Cat.ContaTiposDePoliza.Egreso,
                Fecha = dComplementaria,
                Concepto = "",
                RelacionTabla = Cat.Tablas.NominaUsuario,
                RelacionID = oNomina.NominaID
            };
            foreach (var oReg in oNominaUsuariosV)
            {
                // Se crea la póliza de lo oficial
                ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.NominaOficial, oReg.NominaUsuarioID, this.cmbSemana.Text, ("NÓMINA " + this.cmbSemana.Text)
                    , oReg.SucursalID, dOficial);
                // Se crea la póliza de la diferencia, si aplica
                if (oReg.Diferencia != 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.Salarios && c.RelacionID == oReg.UsuarioID);
                    if (oCuentaAux == null)
                    {
                        UtilLocal.MensajeAdvertencia("No se encontró la cuenta auxiliar: Salarios -> " + oReg.Usuario + ". No se creará la póliza de Complemento Nómina.");
                        continue;
                    }
                    var oPoliza = Util.CrearCopia<ContaPoliza>(oPolizaBase);
                    oPoliza.Concepto = ("COMPLEMENTO NÓMINA " + this.cmbSemana.Text);
                    ContaProc.CrearPoliza(oPoliza, oCuentaAux.ContaCuentaAuxiliarID, Cat.ContaCuentasAuxiliares.ReservaNomina, oReg.Diferencia.Valor(), oReg.Usuario
                        , oReg.SucursalID, Cat.Sucursales.Matriz);
                    /* ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, ("COMPLEMENTO NÓMINA " + this.cmbSemana.Text)
                        , oCuentaAux.ContaCuentaAuxiliarID, Cat.ContaCuentasAuxiliares.ReservaNomina, oReg.Diferencia.Valor(), oReg.Usuario
                        , Cat.Tablas.NominaUsuario, oReg.NominaID.Valor());
                    */
                }

                // Se crea la póliza del adelanto, si aplica
                if (oReg.Adelanto > 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.DeudoresDiversos
                        && c.RelacionID == oReg.UsuarioID);
                    if (oCuentaAux != null)
                    {
                        // ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Ingreso, "ADELANTO", Cat.ContaCuentasAuxiliares.Caja, oCuentaAux.ContaCuentaAuxiliarID
                        //    , oReg.Adelanto, oReg.Usuario, Cat.Tablas.NominaUsuario, oReg.NominaID.Valor(), oReg.SucursalID);
                        var oPoliza = Util.CrearCopia<ContaPoliza>(oPolizaBase);
                        oPoliza.ContaTipoPolizaID = Cat.ContaTiposDePoliza.Ingreso;
                        oPoliza.Concepto = "ADELANTO";
                        oPoliza.SucursalID = oReg.SucursalID;
                        ContaProc.CrearPoliza(oPoliza, Cat.ContaCuentasAuxiliares.Caja, oCuentaAux.ContaCuentaAuxiliarID, oReg.Adelanto, oReg.Usuario
                            , Cat.Sucursales.Matriz, oReg.SucursalID);

                        // Se crea adicionalmente, un ingreso de caja por el importe del adelanto
                        var oIngreso = new CajaIngreso()
                        {
                            CajaTipoIngresoID = Cat.CajaTiposDeIngreso.Otros,
                            Concepto = ("PAGO ADELANTO " + oReg.Usuario),
                            Importe = oReg.Adelanto,
                            Fecha = dAhora,
                            SucursalID = oReg.SucursalID,
                            RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID
                        };
                        Datos.Guardar<CajaIngreso>(oIngreso);
                    }
                }
                // Se crea la póliza de minutos tarde y otros, si aplica
                if (oReg.MinutosTarde > 0 || oReg.Otros > 0)
                {
                    var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.Salarios
                        && c.RelacionID == oReg.UsuarioID);
                    if (oCuentaAux != null)
                    {
                        if (oReg.MinutosTarde > 0)
                        {
                            // ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "MINUTOS TARDE", Cat.ContaCuentasAuxiliares.ReservaNomina, oCuentaAux.ContaCuentaAuxiliarID
                            //     , oReg.MinutosTarde, oReg.Usuario, Cat.Tablas.NominaUsuario, oReg.NominaID.Valor());
                            var oPoliza = Util.CrearCopia<ContaPoliza>(oPolizaBase);
                            oPoliza.Concepto = "MINUTOS TARDE";
                            ContaProc.CrearPoliza(oPoliza, Cat.ContaCuentasAuxiliares.ReservaNomina, oCuentaAux.ContaCuentaAuxiliarID, oReg.MinutosTarde, oReg.Usuario
                                , Cat.Sucursales.Matriz, oReg.SucursalID);
                        }
                        if (oReg.Otros > 0)
                        {
                            // ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "OTROS DESCUENTOS", Cat.ContaCuentasAuxiliares.ReservaNomina, oCuentaAux.ContaCuentaAuxiliarID
                            //     , oReg.Otros, oReg.Usuario, Cat.Tablas.NominaUsuario, oReg.NominaID.Valor());
                            var oPoliza = Util.CrearCopia<ContaPoliza>(oPolizaBase);
                            oPoliza.Concepto = "OTROS DESCUENTOS";
                            ContaProc.CrearPoliza(oPoliza, Cat.ContaCuentasAuxiliares.ReservaNomina, oCuentaAux.ContaCuentaAuxiliarID, oReg.Otros, oReg.Usuario
                                , Cat.Sucursales.Matriz, oReg.SucursalID);
                        }
                    }
                }
            }

            // Se genera el resguardo y refuerzo especiales
            /* Este procedimiento hacía crecer el Resguardo, porque el dinero no se tomaba de ReservaNómina y se
             * mandaba a Resguardo cuando en realidad quedaba en el salario de los usuarios 17/11/2015
            var oResguardos = new Dictionary<int, decimal>();
            var oRefuerzos = new Dictionary<int, decimal>();
            foreach (DataGridViewRow oFila in this.dgvDatos.Rows)
            {
                if (!Util.ConvertirBool(oFila.Cells["Sel"].Value))
                    continue;

                int iSucursalID = Util.ConvertirEntero(oFila.Cells["SucursalID"].Value);
                if (!oResguardos.ContainsKey(iSucursalID))
                    oResguardos.Add(iSucursalID, 0);
                if (!oRefuerzos.ContainsKey(iSucursalID))
                    oRefuerzos.Add(iSucursalID, 0);

                decimal mDiferencia = Util.ConvertirDecimal(oFila.Cells["Diferencia"].Value);
                decimal mTickets = Util.ConvertirDecimal(oFila.Cells["Tickets"].Value);
                decimal mMinutosTarde = Util.ConvertirDecimal(oFila.Cells["MinutosTarde"].Value);
                decimal mOtros = Util.ConvertirDecimal(oFila.Cells["Otros"].Value);
                decimal mAdelanto = Util.ConvertirDecimal(oFila.Cells["Adelanto"].Value);
                oRefuerzos[iSucursalID] += (mDiferencia - mMinutosTarde - mOtros);
                // Se quita el adelanto a los resguardos de acuerdo a una nueva petición - Moi 03/08/2015
                // oResguardos[iSucursalID] += (mDiferencia - mMinutosTarde - mOtros + mAdelanto);
                // Se suman ahora los tickets a los resguardos porque no están seguros y están haciendo pruebas - Moi 08/08/2015
                oResguardos[iSucursalID] += (mDiferencia - mMinutosTarde - mOtros + mTickets);
            }
            // Se crean los resguardos / refuerzos y las pólizas correspondientes (AfeConta)
            foreach (var oReg in oResguardos)
            {
                var oResguardo = VentasProc.GenerarResguardo(oReg.Value, oReg.Key);
                ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.Resguardo, oResguardo.CajaEgresoID, "NO MOVER", "NO MOVER DE TIENDA / RESGUARDO", oReg.Key);
            }
            foreach (var oReg in oRefuerzos)
            {
                var oRefuerzo = VentasProc.GenerarRefuerzo(oReg.Value, oReg.Key);
                ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.Refuerzo, oRefuerzo.CajaIngresoID, "REFUERZO", "REFUERZO NÓMINA", oReg.Key);
            }
            */

            // Se manda a imprimir la nómina de cada usuario
            var oNominaUsuariosOfV = Datos.GetListOf<NominaUsuariosOficialView>(c => c.NominaID == oNomina.NominaID);
            var oNominaOficialTotales = oNominaUsuariosOfV.GroupBy(c => c.UsuarioID).Select(c => new
            {
                UsuarioID = c.Key,
                Ingreso = c.Where(s => s.Suma).Sum(s => s.Importe),
                Egreso = c.Where(s => !s.Suma).Sum(s => s.Importe)
            });
            var oRep = new Report();
            oRep.Load(UtilLocal.RutaReportes("Nomina.frx"));
            oRep.RegisterData(new List<Nomina>() { oNomina }, "Nomina");
            oRep.RegisterData(oNominaUsuariosV, "Usuarios");
            oRep.RegisterData(oNominaUsuariosOfV, "UsuariosOficial");
            oRep.RegisterData(oNominaOficialTotales, "UsuariosOficialTotales");

            Cargando.Cerrar();
            UtilLocal.EnviarReporteASalida("Reportes.Nomina.Salida", oRep);

            this.LlenarNomina();
            return true;
        }