{ =============================================================================== Copyright (©) 2002. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 05-12-2002 Versión actual: 1.0.0 Fecha versión actual: 05-12-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit PagoProveedor; interface uses Windows, Db, StdCtrls, SysUtils, RdxMemo, RdxCampos, RdxTitulos, Forms, RdxPaneles, RdxBotones, Controls, ExtCtrls, RdxBarras, Classes, RdxFramePagos, RdxFrame, RXDBCtrl, ComCtrls, RdxComboBox, RxMemDS, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData, cxClasses, cxControls, cxCalendar, cxDBEdit, cxContainer, cxTextEdit, cxMaskEdit, cxButtonEdit, AdvPanel, cxMemo, cxDropDownEdit, Menus, am2000menuitem, am2000popupmenu, am2000, cxSpinEdit, IBCustomDataSet, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, TablaPagosProveedor, Entidades, RdxEmpresaActiva; type TfrPagoProveedor = class(TRdxFramePagos) dsPago: TDataSource; Titulo: TRdxPanelTituloOperacion; brDoble: TRdxBarraInferior; bAceptar: TRdxBoton; bCancelar: TRdxBoton; brSimple: TRdxBarraInferior; bSalir: TRdxBoton; pnlCuerpo: TPanel; pnlDatosProveedor: TAdvPanel; pnlDatosPago: TAdvPanel; eFecha: TLabel; eCodigo: TLabel; Fecha: TcxDBDateEdit; Codigo: TcxDBButtonEdit; Label1: TLabel; CodProveedor: TcxDBButtonEdit; eNIFCIF: TLabel; NIFCIF: TcxDBTextEdit; eNombre: TLabel; Nombre: TcxDBTextEdit; eDireccion: TLabel; Calle: TcxDBTextEdit; eProvincia: TLabel; Provincia: TcxDBButtonEdit; ePoblacion: TLabel; Poblacion: TcxDBButtonEdit; eTelefono1: TLabel; Telefono1: TcxDBTextEdit; eMovil1: TLabel; Movil1: TcxDBTextEdit; Movil2: TcxDBTextEdit; eMovil2: TLabel; eTelefono2: TLabel; Telefono2: TcxDBTextEdit; eFax: TLabel; Fax: TcxDBTextEdit; eCodigoPostal: TLabel; CodigoPostal: TcxDBTextEdit; eNumero: TLabel; Numero: TcxDBTextEdit; ePiso: TLabel; Piso: TcxDBTextEdit; eFormaPago: TLabel; cbxFormaPago: TcxDBComboBox; eImporte: TLabel; eCaja: TLabel; eDescripcion: TLabel; Descripcion: TcxDBMemo; cbxCaja: TcxDBLookupComboBox; dsLibros: TDataSource; Importe: TcxDBTextEdit; procedure bAceptarClick(Sender: TObject); procedure bCancelarClick(Sender: TObject); procedure bSalirClick(Sender: TObject); procedure CodigoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure CodProveedorExit(Sender: TObject); procedure CodProveedorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure PoblacionPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private FCodigoProvincia : Variant; FCodigoPoblacion : Variant; FCodigoProveedor : Variant; FCodigoLibro: Variant; FDatosPago : TDatosPagoProveedor; FTablaLibros : TIBDataSet; procedure rellenarDatosPago; protected procedure ActivarModoAnadir; override; procedure ActivarModoModificar; override; procedure ActivarModoConsultar; override; procedure ActivarModoEliminar; override; function AnadirDatos : Boolean; override; function ModificarDatos : Boolean; override; function EliminarDatos : Boolean; override; function CancelarAnadir : Boolean; override; function CancelarModificar : Boolean; override; function CancelarEliminar : Boolean; override; function ComprobarDatos : Boolean; override; procedure VerModal; override; procedure FreeContenido; override; procedure BuscarPago; override; procedure SetCodigoPago (Value : Variant); override; procedure SetCodigoProvincia (Value : Variant); procedure SetCodigoPoblacion (Value : Variant); procedure SetCodigoProveedor (Value : Variant); procedure ImporteSetText(Sender: TField; const Text: String); public property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia; property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion; property CodigoProveedor : Variant read FCodigoProveedor write SetCodigoProveedor; constructor Create (AOwner : TComponent); override; destructor Destroy; override; published end; var frPagoProveedor: TfrPagoProveedor; implementation {$R *.DFM} uses Mensajes, IB, Colores, IBDatabase, BaseDatos, StrFunc, Excepciones, IBErrorCodes, Variants, NumFunc, TablaFamilias, Literales, configuracion, TablaPropiedadesArticulo, TablaPropiedades, TablaLibros, TablaFormasPago, TablaProveedores, TablaProvincias, TablaPoblaciones, Proveedores, Provincias, Poblaciones, RdxFrameProvincias, RdxFramePoblaciones, RdxFrameProveedores, PagosProveedores, Constantes, TablaEmpresas; //////////////////////////////////////////////////////////////////////////////// // PUBLIC //////////////////////////////////////////////////////////////////////////////// constructor TfrPagoProveedor.Create (AOwner : TComponent); begin inherited Create(AOwner); FCodigoProvincia := NULL; FCodigoPoblacion := NULL; FCodigoProveedor := NULL; FDatosPago := Nil; BaseDatos := dmBaseDatos.BD; Transaccion := dmBaseDatos.Transaccion; TablaPagos := TIBDataSet.Create(Self); dsPago.DataSet := TablaPagos; with TablaPagos do begin Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaPagosProveedor.sqlConsultar); InsertSQL.Assign(dmTablaPagosProveedor.sqlInsertar); ModifySQL.Assign(dmTablaPagosProveedor.sqlModificar); DeleteSQL.Assign(dmTablaPagosProveedor.sqlEliminar); RefreshSQL.Assign(dmTablaPagosProveedor.sqlConsultar); end; FTablaLibros := TIBDataSet.Create(Self); dsLibros.DataSet := FTablaLibros; with FTablaLibros do begin Database := BaseDatos; Transaction := Transaccion; SelectSQL.Assign(dmTablaLibros.sqlConsultarLibros); ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; Prepare; Open; end; cbxFormaPago.Properties.Items := dmTablaFormasPago.darFormasPago; bCancelar.Cancel := True; bSalir.Cancel := True; end; destructor TfrPagoProveedor.Destroy; begin TablaPagos.Close; TablaPagos.UnPrepare; TablaPagos.Free; FTablaLibros.Close; FTablaLibros.UnPrepare; FTablaLibros.Free; if FDatosPago <> nil then FDatosPago.Free; inherited; end; function TfrPagoProveedor.AnadirDatos : Boolean; var lsNumEntrada : Variant; begin Result := False; try //Pago lsNumEntrada := dmTablaLibros.darNumEntrada(TablaPagos.FieldByName('TIPOLIBRO').AsString); if (esCadenaVacia(lsNumEntrada)) then begin Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; end; TablaPagos.FieldByName('NUMENTRADA').AsString := lsNumEntrada; case Entidad of entPagoProveedor : TablaPagos.FieldByName('TIPOPAGO').AsString := CTE_PAGO; entAbonoProveedor : TablaPagos.FieldByName('TIPOPAGO').AsString := CTE_ABONO; else begin VerMensaje('Log: la entidad no se corresponde con ningun tipo de pago'); Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; end; end; rellenarDatosPago; if dmTablaLibros.anadirEntradaLibro(Entidad, Modo, FDatosPago) then begin dmTablaPagosProveedor.IncrementarCodigo; TablaPagos.Post; Commit; FCodigoPago := TablaPagos.FieldByName('CODIGO').AsString; TablaPagos.Close; Result := True; end else begin Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; end; except on E : EIBError do begin if E.IBErrorCode = isc_unique_key_violation then begin Rollback; VerMensajeFmt(msgProvCodPagRepetido, [Codigo.DataBinding.Field.AsString]); TablaPagos.Edit; end else Rollback; TratarExcepcion(E); TablaPagos.Edit; end; on E : Exception do begin Rollback; TratarExcepcion(E); TablaPagos.Edit; end; end; end; function TfrPagoProveedor.EliminarDatos : Boolean; begin Result := False; try rellenarDatosPago; if not dmTablaLibros.anularEntradaLibro(Entidad, Modo, FDatosPago) then begin VerMensaje(msgCliErrorOp); Rollback; Exit; end; TablaPagos.Delete; Commit; TablaPagos.Close; Result := True; except on E : EIBError do begin case E.IBErrorCode of isc_lock_conflict : VerMensajeFmt(msgProvPagBloqueado, [Codigo.DataBinding.Field.AsString]); else begin Rollback; TratarExcepcion(E); end; end; end; on E : Exception do begin Rollback; TratarExcepcion(E); end; end; end; function TfrPagoProveedor.CancelarAnadir: Boolean; begin Result := False; try RollBack; TablaPagos.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrPagoProveedor.CancelarEliminar: Boolean; begin Result := False; try RollBack; TablaPagos.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; function TfrPagoProveedor.ComprobarDatos: Boolean; begin Result := False; if (Modo in [Anadir, Modificar]) then begin if EsCadenaVacia(Descripcion.Text) then begin VerMensaje(msgProvFaltaDescPag); Descripcion.SetFocus; Exit; end; if EsCadenaVacia(CodProveedor.Text) then begin VerMensaje(msgProvFaltaProPag); CodProveedor.SetFocus; Exit; end; end; Result := True; end; procedure TfrPagoProveedor.VerModal; begin if (ContenidoModal is TRdxFramePoblaciones) then (ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := CodigoProvincia; if (ContenidoModal is TRdxFrameProveedores) then (ContenidoModal as TRdxFrameProveedores).CodigoProveedor := CodigoProveedor; if (ContenidoModal is TRdxFramePagos) then (ContenidoModal as TRdxFramePagos).CodigoPago := CodigoPago; inherited; end; procedure TfrPagoProveedor.FreeContenido; begin if (ContenidoModal is TRdxFramePagos) then begin CodigoPago := (ContenidoModal as TRdxFramePagos).CodigoPago; ActivarModo; end; if (ContenidoModal is TRdxFrameProveedores) then FCodigoProveedor := (ContenidoModal as TRdxFrameProveedores).CodigoProveedor; if (ContenidoModal is TRdxFrameProvincias) then CodigoProvincia := (ContenidoModal as TRdxFrameProvincias).CodigoProvincia; if (ContenidoModal is TRdxFramePoblaciones) then begin CodigoProvincia := (ContenidoModal as TRdxFramePoblaciones).CodigoProvincia; CodigoPoblacion := (ContenidoModal as TRdxFramePoblaciones).CodigoPoblacion; end; inherited FreeContenido; end; procedure TfrPagoProveedor.BuscarPago; begin if Transaccion = NIL then Exit; try TablaPagos.DisableControls; TablaPagos.Close; // Buscar la fila a tratar si es necesario if not EsCadenaVacia(CodigoPago) then begin TablaPagos.ParamByName('CODIGO').AsString := CodigoPago; TablaPagos.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; end; TablaPagos.Prepare; TablaPagos.Open; TablaPagos.EnableControls; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoProveedor.SetCodigoProvincia(Value: Variant); begin if (not EsCadenaVacia(Value)) then begin FCodigoProvincia := Value; Provincia.DataBinding.Field.AsString := dmTablaProvincias.DarNombreProvincia(FCodigoProvincia); end; end; procedure TfrPagoProveedor.SetCodigoPoblacion(Value: Variant); begin if (not EsCadenaVacia(Value)) then begin FCodigoPoblacion := Value; Poblacion.DataBinding.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion); end; end; procedure TfrPagoProveedor.SetCodigoProveedor(Value: Variant); var DatosProveedor : TDatosProveedor; begin if EsCadenaVacia(Value) then exit; FCodigoProveedor := Value; DatosProveedor := TDatosProveedor.Create(FCodigoProveedor); try CodProveedor.DataBinding.Field.AsString := DatosProveedor.Codigo; NIFCIF.DataBinding.Field.AsString := DatosProveedor.Nifcif; Nombre.DataBinding.Field.AsString := DatosProveedor.Nombre; Calle.DataBinding.Field.AsString := DatosProveedor.Calle; Numero.DataBinding.Field.AsString := DatosProveedor.Numero; Piso.DataBinding.Field.AsString := DatosProveedor.Piso; Provincia.DataBinding.Field.AsString := DatosProveedor.Provincia; FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(DatosProveedor.Provincia); Poblacion.DataBinding.Field.AsString := DatosProveedor.Poblacion; CodigoPostal.DataBinding.Field.AsString := DatosProveedor.CodigoPostal; Telefono1.DataBinding.Field.AsString := DatosProveedor.Telefono1; Telefono2.DataBinding.Field.AsString := DatosProveedor.Telefono2; Movil1.DataBinding.Field.AsString := DatosProveedor.Movil1; Movil2.DataBinding.Field.AsString := DatosProveedor.Movil2; Fax.DataBinding.Field.AsString := DatosProveedor.Fax; finally DatosProveedor.Free; end; end; procedure TfrPagoProveedor.ImporteSetText(Sender: TField; const Text: String); begin if EsCadenaVacia(Text) then begin Sender.AsString := '0'; exit; end; try if (Entidad = entAbonoProveedor) then begin if (StrToFloat(Text) < 0) then Sender.AsFloat := (-1) * StrToFloat(Text) else Sender.AsString := Text end else if (Entidad = entPagoProveedor) then begin if (StrToFloat(Text) < 0) then Sender.AsString := Text else Sender.AsFloat := (-1) * StrToFloat(Text) end; except on E : EConvertError do begin Sender.AsString := '0' end; end; end; procedure TfrPagoProveedor.bAceptarClick(Sender: TObject); begin if (RealizarOperacion) then CloseFrame; end; procedure TfrPagoProveedor.bCancelarClick(Sender: TObject); begin if (TratarCambios = IDOK) then CloseFrame; end; procedure TfrPagoProveedor.bSalirClick(Sender: TObject); begin try Rollback; CloseFrame; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoProveedor.CodigoPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin if (TratarCambios = IDCANCEL) then Exit; { Esto es porque en modo 'Modificar' hacemos un cambio y pulsamos este botón se cierra la tabla y si en el frame hijo (el del grid) damos a cancelar, FCodigoPago es NULL y da error al activar modo porque no se inicializa los parámetros de la sql. Lo hace BuscarPago. } if not TablaPagos.Active then BuscarPago; ContenidoModal := TfrPagosProveedores.Create(Self); end; procedure TfrPagoProveedor.CodProveedorExit(Sender: TObject); begin if not (Modo in [Anadir, Modificar]) then Exit; if EsCadenaVacia(CodProveedor.Text) then exit; if (dmTablaProveedores.validarCodigo(CodProveedor.Text)) then begin CodProveedor.DataBinding.Field.AsString := dmTablaProveedores.formatearCodigo(CodProveedor.Text); if (dmTablaProveedores.existeCodigo(CodProveedor.Text)) then CodigoProveedor := CodProveedor.Text else begin VerMensajeFmt(msgProvCodProvNoExiste, [CodProveedor.Text]); CodProveedor.SetFocus; end; end else begin VerMensajeFmt(msgProvCodProvIncorrecto, [CodProveedor.Text]); CodProveedor.SetFocus; end; end; procedure TfrPagoProveedor.CodProveedorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin ContenidoModal := TfrProveedores.Create(Self); CodigoProveedor := FCodigoProveedor; end; procedure TfrPagoProveedor.ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin CaptionModal := msgListaProvincias; WidthModal := 280; HeightModal := 460; ContenidoModal := TfrProvincias.Create(Self); end; procedure TfrPagoProveedor.PoblacionPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin if EsCadenaVacia(CodigoProvincia) then begin VerMensaje(msgSinProvincia); Provincia.SetFocus; Exit; end; CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.darNombreProvincia(CodigoProvincia)]); WidthModal := 280; HeightModal := 460; ContenidoModal := TfrPoblaciones.Create(Self); end; //////////////////////////////////////////////////////////////////////////////// // PRIVATE //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // PROTECTED //////////////////////////////////////////////////////////////////////////////// procedure TfrPagoProveedor.ActivarModoAnadir; var CodNuevo : Variant; i : Integer; begin dsPago.AutoEdit := True; Codigo.Properties.Buttons[0].Visible := False; Codigo.Enabled := False; CodProveedor.Properties.Buttons[0].Visible := True; Poblacion.Properties.Buttons[0].Visible := True; Provincia.Properties.Buttons[0].Visible := True; try CodNuevo := dmTablaPagosProveedor.DarNuevoCodigo; with TablaPagos do begin Close; Prepare; Open; Insert; FieldByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo; FieldByName('CODIGO').AsString := CodNuevo; FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha; FieldByName('USUARIO').AsString := dmBaseDatos.Usuario; FieldByName('FECHAPAGO').AsDateTime := dmBaseDatos.DarFecha; FieldByName('TIPOLIBRO').AsString := EmpresaActiva.LibroDefecto; case Entidad of entPagoProveedor : FieldByName('TIPOPAGO').AsString := CTE_PAGO; entAbonoProveedor : FieldByName('TIPOPAGO').AsString := CTE_ABONO; else verMensaje('LOG: error entidad erronea'); end; FieldByName('IMPORTE').AsFloat := 0; FieldByName('IMPORTE').OnSetText := ImporteSetText; end; dmTablaPagosProveedor.InicializarTablaPagosProveedores(@TablaPagos); Visible := True; Importe.SetFocus; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoProveedor.ActivarModoConsultar; begin dsPago.AutoEdit := False; Codigo.Properties.Buttons[0].Visible := True; Codigo.Enabled := True; CodProveedor.Properties.Buttons[0].Visible := False; Poblacion.Properties.Buttons[0].Visible := False; Provincia.Properties.Buttons[0].Visible := False; try with TablaPagos do begin Prepare; Open; if RecordCount = 0 then begin VerMensajeFmt(msgProvNoExistePag, [CodigoPago]); CloseFrame; Exit; end; Cancel; end; dmTablaPagosProveedor.InicializarTablaPagosProveedores(@TablaPagos); Visible := True; bSalir.SetFocus; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoProveedor.ActivarModoEliminar; begin dsPago.AutoEdit := False; Codigo.Properties.Buttons[0].Visible := True; Codigo.Enabled := True; CodProveedor.Properties.Buttons[0].Visible := False; Poblacion.Properties.Buttons[0].Visible := False; Provincia.Properties.Buttons[0].Visible := False; try with TablaPagos do begin Prepare; Open; if RecordCount = 0 then begin VerMensajeFmt(msgProvNoExistePag, [CodigoPago]); CancelarEliminar; CloseFrame; Exit; end; Cancel; end; dmTablaPagosProveedor.InicializarTablaPagosProveedores(@TablaPagos); Visible := True; bAceptar.SetFocus; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoProveedor.rellenarDatosPago; begin if FDatosPago <> nil then FDatosPago.Free; FDatosPago := TDatosPagoProveedor.Create; FDatosPago.Codigo := TablaPagos.FieldByName('CODIGO').AsString; FDatosPago.FechaAlta := TablaPagos.FieldByName('FECHAALTA').AsString; FDatosPago.Usuario := TablaPagos.FieldByName('USUARIO').AsString; FDatosPago.FechaPago := TablaPagos.FieldByName('FECHAPAGO').AsString; FDatosPago.TipoLibro := TablaPagos.FieldByName('TIPOLIBRO').AsString; FDatosPago.NumEntrada := TablaPagos.FieldByName('NUMENTRADA').AsString; FDatosPago.TipoPago := TablaPagos.FieldByName('TIPOPAGO').AsString; FDatosPago.Importe := TablaPagos.FieldByName('IMPORTE').AsFloat; FDatosPago.FormaPago := TablaPagos.FieldByName('FORMAPAGO').AsString; FDatosPago.Descripcion := TablaPagos.FieldByName('DESCRIPCION').AsString; FDatosPago.CodigoProveedor := TablaPagos.FieldByName('CODIGOPROVEEDOR').AsString; FDatosPago.NIFCIF := TablaPagos.FieldByName('NIFCIF').AsString; FDatosPago.Nombre := TablaPagos.FieldByName('NOMBRE').AsString; FDatosPago.Calle := TablaPagos.FieldByName('CALLE').AsString; FDatosPago.Numero := TablaPagos.FieldByName('NUMERO').AsString; FDatosPago.Piso := TablaPagos.FieldByName('PISO').AsString; FDatosPago.CodigoPostal := TablaPagos.FieldByName('CODIGOPOSTAL').AsString; FDatosPago.Poblacion := TablaPagos.FieldByName('POBLACION').AsString; FDatosPago.Provincia := TablaPagos.FieldByName('PROVINCIA').AsString; FDatosPago.Telefono1 := TablaPagos.FieldByName('TELEFONO1').AsString; FDatosPago.Telefono2 := TablaPagos.FieldByName('TELEFONO2').AsString; FDatosPago.Movil1 := TablaPagos.FieldByName('MOVIL1').AsString; FDatosPago.Movil2 := TablaPagos.FieldByName('MOVIL2').AsString; FDatosPago.Fax := TablaPagos.FieldByName('FAX').AsString; FDatosPago.Correo := TablaPagos.FieldByName('CORREO').AsString; end; procedure TfrPagoProveedor.ActivarModoModificar; begin dsPago.AutoEdit := True; Codigo.Properties.Buttons[0].Visible := False; Codigo.Enabled := False; CodProveedor.Properties.Buttons[0].Visible := True; Poblacion.Properties.Buttons[0].Visible := True; Provincia.Properties.Buttons[0].Visible := True; try with TablaPagos do begin Open; if RecordCount = 0 then begin VerMensajeFmt(msgProvNoExistePag, [CodigoPago]); CancelarModificar; CloseFrame; Exit; end; Edit; Post; Edit; FieldByName('IMPORTE').OnSetText := ImporteSetText; end; dmTablaPagosProveedor.InicializarTablaPagosProveedores(@TablaPagos); { if (CTE_PAGO = TablaPagos.FieldByName('TIPOPAGO').AsString) then Entidad := entPagoProveedor else Entidad := entAbonoProveedor; } //Guardamos los datos del pago origen // rellenarDatosPago; Visible := True; Importe.SetFocus; except on E : EIBError do begin case E.IBErrorCode of isc_lock_conflict : begin VerMensajeFmt(msgProvPagBloqueado, [CodigoPago]); CancelarModificar; CloseFrame; Exit; end else TratarExcepcion(E); end; end; on E : Exception do TratarExcepcion(E); end; end; function TfrPagoProveedor.ModificarDatos: Boolean; begin Result := False; try TablaPagos.Post; if (FDatosPago.Importe <> TablaPagos.FieldByName('IMPORTE').AsFloat) or (FDatosPago.TipoLibro <> TablaPagos.FieldByName('TIPOLIBRO').AsString) then begin if not dmTablaLibros.anularEntradaLibro(Entidad, Modo, FDatosPago) then begin Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; exit; end; rellenarDatosPago; FDatosPago.NumEntrada := dmTablaLibros.darNumEntrada(FDatosPago.TipoLibro); if (esCadenaVacia(FDatosPago.NumEntrada)) then begin Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; exit; end; if not dmTablaLibros.anadirEntradaLibro(Entidad, Modo, FDatosPago) then begin Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; exit; end; TablaPagos.Edit; TablaPagos.FieldByName('NUMENTRADA').AsString := FDatosPago.NumEntrada; TablaPagos.Post; end; Commit; TablaPagos.Close; Result := True; except on E : EIBError do begin Rollback; TratarExcepcion(E); TablaPagos.Edit; end; on E : Exception do begin Rollback; TratarExcepcion(E); TablaPagos.Edit; end; end; end; function TfrPagoProveedor.CancelarModificar: Boolean; begin Result := False; try RollBack; TablaPagos.Close; Result := True; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoProveedor.SetCodigoPago(Value: Variant); begin inherited; if not EsCadenaVacia(Value) then begin if (Modo <> Anadir) then begin if (CTE_PAGO = TablaPagos.FieldByName('TIPOPAGO').AsString) then Entidad := entPagoProveedor else Entidad := entAbonoProveedor; rellenarDatosPago; end; end; end; end.