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); }
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; }