public GastoDevengar(int iContaEgresoID) { InitializeComponent(); this.Icon = Properties.Resources.Ico_ControlRefaccionaria_Ant; this.oEgreso = Datos.GetEntity <ContaEgreso>(c => c.ContaEgresoID == iContaEgresoID); }
public GastoDevengar(int iContaEgresoID) { InitializeComponent(); this.Icon = Properties.Resources.Ico_ControlRefaccionaria_Ant; this.oEgreso = Datos.GetEntity<ContaEgreso>(c => c.ContaEgresoID == iContaEgresoID); }
public GastoContable(int iEgresoID) { this.InitializeComponent(); this.oEgreso = Datos.GetEntity <ContaEgreso>(c => c.ContaEgresoID == iEgresoID); this.EsMod = true; }
public GastoContable(int iEgresoID) { this.InitializeComponent(); this.oEgreso = Datos.GetEntity<ContaEgreso>(c => c.ContaEgresoID == iEgresoID); this.EsMod = true; }
public static void CrearPolizasDeGastoContable(ContaEgreso oGasto) { ContaPoliza oPoliza = null; var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == oGasto.ContaCuentaAuxiliarID); // Se verifica lo devengado, para hacer una póliza por cada devengado var oDev = Datos.GetListOf<ContaEgresoDevengado>(c => c.ContaEgresoID == oGasto.ContaEgresoID); // Si no hay devengados, se agrega uno con el importe del gasto, para que sí se haga la póliza del gasto if (oDev.Count == 0) oDev.Add(new ContaEgresoDevengado() { SucursalID = oGasto.SucursalID, Importe = oGasto.Importe }); // Se comienzan a hacer las pólizas correspondientes foreach (var oReg in oDev) { // Si el importe es cero, no se hace nada if (oReg.Importe == 0) continue; // Se crea la póliza normal del gasto, después se ajusta el importe. if (oGasto.TipoDocumentoID == Cat.TiposDeDocumento.Factura) { if (oGasto.TipoFormaPagoID == Cat.FormasDePago.Efectivo) { oPoliza = ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.GastoFacturadoEfectivo, oGasto.ContaEgresoID, oGasto.FolioFactura , oGasto.Observaciones, oReg.SucursalID, oGasto.Fecha); } else { if (oGasto.BancoCuentaID == Cat.CuentasBancarias.Banamex || oGasto.BancoCuentaID == Cat.CuentasBancarias.Scotiabank) oPoliza = ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.GastoFacturadoBanco, oGasto.ContaEgresoID, oGasto.FolioFactura , oGasto.Observaciones, oReg.SucursalID, oGasto.Fecha); else oPoliza = ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.GastoContableFacturadoBancoCpcp, oGasto.ContaEgresoID , oGasto.FolioFactura, oGasto.Observaciones, oReg.SucursalID, oGasto.Fecha); } } else { oPoliza = ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.GastoNotaEfectivo, oGasto.ContaEgresoID, oGasto.FolioFactura , (oCuentaAux.CuentaAuxiliar + " / " + oGasto.Observaciones), oReg.SucursalID, oGasto.Fecha); } // Se ajusta el importe según el devengado que sea, si es diferente if (oReg.Importe != oGasto.Importe) ContaProc.ModificarImportePoliza(oPoliza.ContaPolizaID, oGasto.Importe, oReg.Importe); } }
public static void GastoVerDevengarAutomaticamente(ContaEgreso oEgreso) { var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == oEgreso.ContaCuentaAuxiliarID); if (oCuentaAux.DevengarAut.Valor()) { decimal mPorTotal = 0, mImporteDev = 0; var oDevAut = Datos.GetListOf<ContaCuentaAuxiliarDevengadoAutomatico>(c => c.ContaCuentaAuxiliarID == oEgreso.ContaCuentaAuxiliarID); foreach (var oReg in oDevAut) { mPorTotal += oReg.Porcentaje; decimal mImporte = Math.Round(oEgreso.Importe * (oReg.Porcentaje / 100), 2); if (mPorTotal == 100) mImporte = (oEgreso.Importe - mImporteDev); ContaProc.GastoDevengar(oEgreso.ContaEgresoID, oReg.SucursalID, mImporte, oEgreso.Fecha); mImporteDev += mImporte; } } // Se verifica si se debe hacer un devengado especial else if (oCuentaAux.DevengarAutEsp.Valor()) { var oDevEsp = Datos.GetEntity<ContaCuentaAuxiliarDevengadoEspecial>(c => c.ContaCuentaAuxiliarID == oEgreso.ContaCuentaAuxiliarID); if (oDevEsp != null) ContaProc.GastoDevengarEspecial(oEgreso.ContaEgresoID, oDevEsp.DuenioID, oEgreso.Importe, oEgreso.Fecha); } }
public static ResAcc<int> GastoCrear(ContaEgreso oGasto) { Datos.Guardar<ContaEgreso>(oGasto); // Se manda devengar, sólo se afecta si aplica, si no no ContaProc.GastoVerDevengarAutomaticamente(oGasto); return new ResAcc<int>(true, oGasto.ContaEgresoID); }
public bool AccionGuardar() { // Se valida if (!this.Validar()) { return(false); } Cargando.Mostrar(); // Se guardan los datos // DateTime dAhora = DateTime.Now; int?iDocID = Util.Entero(this.cmbDocumento.SelectedValue); // Se guarda el gasto ContaEgreso oGasto = (this.EsMod ? this.oEgreso : new ContaEgreso()); oGasto.ContaCuentaAuxiliarID = Util.Entero(this.cmbCuentaAuxiliar.SelectedValue); oGasto.Fecha = this.dtpFecha.Value; oGasto.Importe = Util.Decimal(this.txtImporte.Text); oGasto.TipoFormaPagoID = Util.Entero(this.cmbFormaDePago.SelectedValue); oGasto.FolioDePago = this.txtFolioDePago.Text; oGasto.FolioFactura = this.txtFolioFactura.Text; oGasto.BancoCuentaID = (int?)this.cmbCuentaBancaria.SelectedValue; oGasto.TipoDocumentoID = (iDocID > 0 ? iDocID : null); oGasto.EsFiscal = this.chkEsFiscal.Checked; oGasto.Observaciones = this.txtObservaciones.Text; oGasto.RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID; oGasto.SucursalID = GlobalClass.SucursalID; Datos.Guardar <ContaEgreso>(oGasto); // Se guarda el detalle, si aplica foreach (DataGridViewRow Fila in this.dgvDetalle.Rows) { if (Fila.IsNewRow) { continue; } int iCambioID = Util.Entero(Fila.Cells["_Cambio"].Value); if (iCambioID == Cat.TiposDeAfectacion.SinCambios) { continue; } ContaEgresoDetalle oGastoDet; if (iCambioID == Cat.TiposDeAfectacion.Agregar) { oGastoDet = new ContaEgresoDetalle(); oGastoDet.ContaEgresoID = oGasto.ContaEgresoID; } else { oGastoDet = (Fila.Tag as ContaEgresoDetalle); if (iCambioID == Cat.TiposDeAfectacion.Borrar) { Datos.Eliminar <ContaEgresoDetalle>(oGastoDet, true); continue; } } oGastoDet.ContaConsumibleID = Util.Entero(Fila.Cells["ContaConsumibleID"].Value); oGastoDet.Cantidad = Util.Decimal(Fila.Cells["Cantidad"].Value); oGastoDet.Importe = Util.Decimal(Fila.Cells["Precio"].Value); Datos.Guardar <ContaEgresoDetalle>(oGastoDet); } // Se manda devengar automáticamente, si aplica ContaProc.GastoVerDevengarAutomaticamente(oGasto); // Se ejecutan procesos para gastos nuevos únicamente if (!this.EsMod) { // Se crean la pólizas contable correspondientes (AfeConta), ContaProc.CrearPolizasDeGastoContable(oGasto); // Se crea el movimiento bancario correspondiente, si aplica // Como se afecta la cuenta de bancos, se crea el movimiento bancario para mandarlo a conciliación y así llevar el control de todos los // movimientos bancarios if (oGasto.TipoFormaPagoID == Cat.FormasDePago.Cheque || oGasto.TipoFormaPagoID == Cat.FormasDePago.Tarjeta || oGasto.TipoFormaPagoID == Cat.FormasDePago.Transferencia) { var oMovBanc = new BancoCuentaMovimiento() { BancoCuentaID = oGasto.BancoCuentaID, EsIngreso = false, Fecha = oGasto.Fecha, FechaAsignado = oGasto.Fecha, SucursalID = oGasto.SucursalID, Importe = oGasto.Importe, Concepto = oGasto.Observaciones, Referencia = oGasto.FolioFactura, TipoFormaPagoID = oGasto.TipoFormaPagoID, RelacionTabla = Cat.Tablas.ContaEgreso, RelacionID = oGasto.ContaEgresoID }; ContaProc.RegistrarMovimientoBancario(oMovBanc); } } Cargando.Cerrar(); // Se muestra una notificación this.RestaurarControles(); UtilLocal.MostrarNotificacion("Proceso completado correctamente."); return(true); }
private void ImpAccionGuardar() { if (!this.ImpValidar()) return; Cargando.Mostrar(); // Se inserta el pago de impuesto var oImpuesto = new NominaImpuesto() { ContaCuentaDeMayorID = Util.Entero(this.cmbImpTipo.SelectedValue), Fecha = this.dtpImpFecha.Value, Periodo = Util.Entero(this.cmbImpPeriodo.SelectedValue), BancoCuentaID = Util.Entero(this.cmbImpCuenta.SelectedValue), TipoFormaPagoID = Util.Entero(this.cmbImpFormaDePago.SelectedValue), FolioDePago = this.txtImpFolioDePago.Text }; Datos.Guardar<NominaImpuesto>(oImpuesto); string sPeriodo = this.cmbImpPeriodo.Text; decimal mImporteTotal = 0; foreach (DataGridViewRow oFila in this.dgvImpDatos.Rows) { if (!Util.Logico(oFila.Cells["imp_Sel"].Value)) continue; // Se inserta el impuesto usuario var oImpUsuario = new NominaImpuestoUsuario() { NominaImpuestoID = oImpuesto.NominaImpuestoID, IdUsuario = Util.Entero(oFila.Cells["imp_UsuarioID"].Value), SucursalID = Util.Entero(oFila.Cells["imp_SucursalID"].Value), Retenido = Util.Decimal(oFila.Cells["imp_Retenido"].Value), Total = Util.Decimal(oFila.Cells["imp_Total"].Value) }; Datos.Guardar<NominaImpuestoUsuario>(oImpUsuario); mImporteTotal += oImpUsuario.Total; // Se inserta el gasto contable var oCuentaAux = Datos.GetEntity<ContaCuentaAuxiliar>(c => c.ContaCuentaDeMayorID == oImpuesto.ContaCuentaDeMayorID && c.RelacionID == oImpUsuario.IdUsuario); if (oCuentaAux == null) { UtilLocal.MensajeAdvertencia("El usuario " + Util.Cadena(oFila.Cells["imp_Usuario"].Value) + " no tiene una cuenta auxiliar relacionada. No se generará el gasto contable."); } else { var oEgreso = new ContaEgreso() { ContaCuentaAuxiliarID = oCuentaAux.ContaCuentaAuxiliarID, Fecha = oImpuesto.Fecha, Importe = oImpUsuario.Total, TipoFormaPagoID = oImpuesto.TipoFormaPagoID, FolioDePago = oImpuesto.FolioDePago, TipoDocumentoID = Cat.TiposDeDocumento.Factura, EsFiscal = true, Observaciones = ("PAGO " + this.cmbImpTipo.Text + " " + sPeriodo), SucursalID = oImpUsuario.SucursalID, RealizoUsuarioID = GlobalClass.UsuarioGlobal.UsuarioID, FolioFactura = sPeriodo, BancoCuentaID = oImpuesto.BancoCuentaID }; ContaProc.GastoCrear(oEgreso); } // Se registra la póliza correspondiente (AfeConta) switch (oImpuesto.ContaCuentaDeMayorID) { case Cat.ContaCuentasDeMayor.Nomina2Por: ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.Pago2Por, oImpUsuario.NominaImpuestoUsuarioID, oImpuesto.FolioDePago , ("PAGO 2% " + sPeriodo), oImpuesto.Fecha); break; case Cat.ContaCuentasDeMayor.Imss: ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.PagoImss, oImpUsuario.NominaImpuestoUsuarioID, oImpuesto.FolioDePago , ("PAGO IMSS " + sPeriodo), oImpuesto.Fecha); break; case Cat.ContaCuentasDeMayor.Infonavit: ContaProc.CrearPolizaAfectacion(Cat.ContaAfectaciones.PagoInfonavit, oImpUsuario.NominaImpuestoUsuarioID, oImpuesto.FolioDePago , ("PAGO INFONAVIT " + sPeriodo), oImpuesto.Fecha); break; } } // Se inserta el movimiento bancario var oMov = new BancoCuentaMovimiento() { BancoCuentaID = oImpuesto.BancoCuentaID, EsIngreso = false, Fecha = oImpuesto.Fecha, FechaAsignado = oImpuesto.Fecha, SucursalID = Cat.Sucursales.Matriz, Importe = mImporteTotal, Concepto = ("PAGO IMPUESTO " + this.cmbImpTipo.Text + " " + sPeriodo), Referencia = GlobalClass.UsuarioGlobal.NombreUsuario, TipoFormaPagoID = oImpuesto.TipoFormaPagoID, DatosDePago = oImpuesto.FolioDePago, RelacionTabla = Cat.Tablas.NominaImpuesto, RelacionID = oImpuesto.NominaImpuestoID }; ContaProc.RegistrarMovimientoBancario(oMov); Cargando.Cerrar(); UtilLocal.MensajeInformacion("Proceso completado exitosamente."); }
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; }
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; }
private bool Gastos() { CajaGastos oGastos = this.ctlCajaGeneral.ctlGastos; // Se obtiene la lista de los cambios necesarios var oIngresos = oGastos.GenerarListaDeIngresos(); var oEgresos = oGastos.GenerarListaDeEgresos(); var oIngresosBorrados = oGastos.GenerarListaDeIngresosBorrados(); var oEgresosBorrados = oGastos.GenerarListaDeEgresosBorrados(); // Se verifica si hay cambios necesarios bool bCambios = (oIngresos.Count > 0 || oEgresos.Count > 0 || oIngresosBorrados.Count > 0 || oEgresosBorrados.Count > 0); if (!bCambios) return false; // Se solicita la validación del usuario var oResUs = UtilLocal.ValidarObtenerUsuario(new List<string>() { "Ventas.Ingresos.Agregar", "Ventas.Ingresos.Borrar", "Ventas.Egresos.Agregar", "Ventas.Egresos.Borrar" }, true); if (oResUs.Error) return false; int iRealizoUsuarioID = oResUs.Respuesta.UsuarioID; // Se solicita la autorización var ResAut = UtilLocal.ValidarObtenerUsuario(new List<string>() { "Autorizaciones.Ventas.Ingresos.Agregar", "Autorizaciones.Ventas.Ingresos.Borrar", "Autorizaciones.Ventas.Egresos.Agregar", "Autorizaciones.Ventas.Egresos.Borrar" }, true, "Autorización"); int iAutorizoID = (ResAut.Respuesta == null ? 0 : ResAut.Respuesta.UsuarioID); // Se procede a guardar los datos DateTime dAhora = DateTime.Now; // Se guardan los Ingresos foreach (var oMov in oIngresos) { oMov.RealizoUsuarioID = iRealizoUsuarioID; Datos.Guardar<CajaIngreso>(oMov); // Si es un refuerzo, se elimina la póliza correspondiente if (oMov.CajaTipoIngresoID == Cat.CajaTiposDeIngreso.Refuerzo) { var oPoliza = Datos.GetEntity<ContaPoliza>(c => c.RelacionTabla == Cat.Tablas.CajaIngreso && c.RelacionID == oMov.CajaIngresoID); ContaProc.BorrarPoliza(oPoliza.ContaPolizaID); } // Se genera la autorización VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.OtrosIngresos, Cat.Tablas.CajaIngreso, oMov.CajaIngresoID, iAutorizoID); } // Se guardan los ingresos borrados foreach (var oMov in oIngresosBorrados) { oMov.Estatus = false; Datos.Guardar<CajaIngreso>(oMov); // Se genera la autorización VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.OtrosIngresosBorrar, Cat.Tablas.CajaIngreso, oMov.CajaIngresoID, iAutorizoID); } // Se guardan los Egresos bool bGastoCaja = false; var oGastosCaja = new List<int>(); foreach (var oMov in oEgresos) { // Referente a lo contable // Validación de importe máximo (5000) para gastos de sueldos de Isidro padre e hijo (durazo) int iCuentaAuxiliarID = Util.Entero(oMov["CategoriaID"]); if (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.SueldoIsidroPadre || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.SueldoIsidroHijo) { var oFechas = UtilDatos.FechasDeComisiones(DateTime.Now); var oContaEgresos = Datos.GetListOf<ContaEgreso>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && (c.Fecha >= oFechas.Valor1 && c.Fecha <= oFechas.Valor2)); if (oContaEgresos.Count > 0 && oContaEgresos.Sum(c => c.Importe) >= 5000) iCuentaAuxiliarID = (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.SueldoIsidroPadre ? Cat.ContaCuentasAuxiliares.UtilidadesIsidroPadre : Cat.ContaCuentasAuxiliares.UtilidadesIsidroHijo); } // // Se genera el Gasto Contable var oGastoConta = new ContaEgreso() { ContaCuentaAuxiliarID = iCuentaAuxiliarID, Fecha = dAhora, Importe = Util.Decimal(oMov["Importe"]), TipoFormaPagoID = Cat.FormasDePago.Efectivo, Observaciones = Util.Cadena(oMov["Concepto"]), RealizoUsuarioID = iRealizoUsuarioID, SucursalID = Util.Entero(oMov["SucursalID"]) }; Datos.Guardar<ContaEgreso>(oGastoConta); // Se manda devengar automáticamente, si aplica ContaProc.GastoVerDevengarAutomaticamente(oGastoConta); // Se genera el gasto de caja (CajaEgreso) var oEgreso = new CajaEgreso() { CajaTipoEgresoID = Cat.CajaTiposDeEgreso.CuentaAuxiliar, Concepto = oGastoConta.Observaciones, Importe = oGastoConta.Importe, Fecha = dAhora, SucursalID = oGastoConta.SucursalID, RealizoUsuarioID = iRealizoUsuarioID, ContaEgresoID = oGastoConta.ContaEgresoID }; Datos.Guardar<CajaEgreso>(oEgreso); // Si es un gasto de la cuenta deudores diversos, se genera la póliza correspondiente (AfeConta) if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.DeudoresDiversos)) { ContaProc.CrearPoliza(Cat.ContaTiposDePoliza.Egreso, "PRÉSTAMO", iCuentaAuxiliarID, Cat.ContaCuentasAuxiliares.Caja, oGastoConta.Importe , oResUs.Respuesta.NombreUsuario, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID); // Se marca el gasto como ya afectado en pólizas, para que no aparezca en gastos pendientes oEgreso.AfectadoEnPolizas = true; Datos.Guardar<CajaEgreso>(oEgreso); } // Se verifica si es una gasto de Reparto utilidades, para hacer un refuerzo por la misma cantidad if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.ReparteDeUtilidades)) { var oRef = VentasProc.GenerarRefuerzo(oEgreso.Importe, oEgreso.SucursalID); oRef.Fecha = oEgreso.Fecha; Datos.Guardar<CajaIngreso>(oRef); } // Se verifica si es un gasto de casco, para afectar la existencia if (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoChico || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoMediano || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoGrande || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoExtragrande) { int iCascoParteID = 0; switch (iCuentaAuxiliarID) { case Cat.ContaCuentasAuxiliares.CascoChico: iCascoParteID = Cat.Partes.DepositoCascoChico; break; case Cat.ContaCuentasAuxiliares.CascoMediano: iCascoParteID = Cat.Partes.DepositoCascoMediano; break; case Cat.ContaCuentasAuxiliares.CascoGrande: iCascoParteID = Cat.Partes.DepositoCascoGrande; break; case Cat.ContaCuentasAuxiliares.CascoExtragrande: iCascoParteID = Cat.Partes.DepositoCascoExtragrande; break; } var oSucursal = Datos.GetEntity<Sucursal>(c => c.SucursalID == GlobalClass.SucursalID && c.Estatus); AdmonProc.AfectarExistenciaYKardex(iCascoParteID, GlobalClass.SucursalID, Cat.OperacionesKardex.EntradaInventario, oEgreso.CajaEgresoID.ToString() , iRealizoUsuarioID, "----", "Gasto por Casco", oSucursal.NombreSucursal, 1, oGastoConta.Importe, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID); } // Se genera la autorización VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.Gastos, Cat.Tablas.CajaEgreso, oEgreso.CajaEgresoID, iAutorizoID); // Bandera para saber si se realizó un gasto oGastosCaja.Add(oEgreso.CajaEgresoID); bGastoCaja = true; } // Se guardan los egresos borrados foreach (var oMov in oEgresosBorrados) { // Se guarda el borrado del gasto de caja (CajaEgreso) int iEgresoID = oMov.ContaEgresoID.Valor(); Datos.Eliminar<CajaEgreso>(oMov); // Ahora se borra definitivamente, pues el gasto contable no tiene campo de "Estatus" // Se guarda el borrado del Gasto Contable, si hubiera int iCuentaAuxiliarID = 0; if (iEgresoID > 0) { var oContaEgreso = Datos.GetEntity<ContaEgreso>(c => c.ContaEgresoID == iEgresoID); iCuentaAuxiliarID = oContaEgreso.ContaCuentaAuxiliarID; ContaProc.GastoEliminar(iEgresoID); } // Si es un resguardo, se elimina la póliza correspondiente if (oMov.CajaTipoEgresoID == Cat.CajaTiposDeEgreso.Resguardo) { var oPoliza = Datos.GetEntity<ContaPoliza>(c => c.RelacionTabla == Cat.Tablas.CajaEgreso && c.RelacionID == oMov.CajaEgresoID); ContaProc.BorrarPoliza(oPoliza.ContaPolizaID); } // Si es un gasto de la cuenta deudores diversos, se verifica y elimina la póliza (AfeConta) if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.DeudoresDiversos)) { var oPoliza = Datos.GetEntity<ContaPoliza>(c => c.RelacionTabla == Cat.Tablas.CajaEgreso && c.RelacionID == oMov.CajaEgresoID); ContaProc.BorrarPoliza(oPoliza.ContaPolizaID); } // Se verifica si es una gasto de Reparto utilidades, para borrar el refuerzo creado if (Datos.Exists<ContaCuentaAuxiliar>(c => c.ContaCuentaAuxiliarID == iCuentaAuxiliarID && c.ContaCuentaDeMayorID == Cat.ContaCuentasDeMayor.ReparteDeUtilidades)) { var oRef = Datos.GetEntity<CajaIngreso>(c => c.CajaTipoIngresoID == Cat.CajaTiposDeIngreso.Refuerzo && c.Importe == oMov.Importe && c.Fecha == oMov.Fecha); Datos.Eliminar<CajaIngreso>(oRef, true); } // Se verifica si es un gasto de casco, para afectar la existencia if (iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoChico || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoMediano || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoGrande || iCuentaAuxiliarID == Cat.ContaCuentasAuxiliares.CascoExtragrande) { int iCascoParteID = 0; switch (iCuentaAuxiliarID) { case Cat.ContaCuentasAuxiliares.CascoChico: iCascoParteID = Cat.Partes.DepositoCascoChico; break; case Cat.ContaCuentasAuxiliares.CascoMediano: iCascoParteID = Cat.Partes.DepositoCascoMediano; break; case Cat.ContaCuentasAuxiliares.CascoGrande: iCascoParteID = Cat.Partes.DepositoCascoGrande; break; case Cat.ContaCuentasAuxiliares.CascoExtragrande: iCascoParteID = Cat.Partes.DepositoCascoExtragrande; break; } var oSucursal = Datos.GetEntity<Sucursal>(c => c.SucursalID == GlobalClass.SucursalID && c.Estatus); AdmonProc.AfectarExistenciaYKardex(iCascoParteID, GlobalClass.SucursalID, Cat.OperacionesKardex.SalidaInventario, oMov.CajaEgresoID.ToString() , iRealizoUsuarioID, "----", "Gasto por Casco", oSucursal.NombreSucursal, -1, oMov.Importe, Cat.Tablas.CajaEgreso, oMov.CajaEgresoID); } // Se genera la autorización VentasProc.GenerarAutorizacion(Cat.AutorizacionesProcesos.GastosBorrar, Cat.Tablas.CajaEgreso, oMov.CajaEgresoID, iAutorizoID); } // Se pregunta si se debe mostrar el ticket, cuando hubo gastos if (bGastoCaja) { if (UtilLocal.MensajePregunta("¿Deseas imprimir los Tickets de Gasto correspondientes?") == DialogResult.Yes) { foreach (int iEgresoID in oGastosCaja) VentasLoc.GenerarTicketGasto(iEgresoID); } } // Se muestra una notifiación con el resultado UtilLocal.MostrarNotificacion("Procedimiento completado correctamente."); return true; }