{ =============================================================================== 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 PagoCliente; 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, TablaPagosCliente, Entidades, RdxEmpresaActiva, am2000utils; type TfrPagoCliente = class(TRdxFramePagos) dsPago: TDataSource; Titulo: TRdxPanelTituloOperacion; brDoble: TRdxBarraInferior; bAceptar: TRdxBoton; bCancelar: TRdxBoton; brSimple: TRdxBarraInferior; bSalir: TRdxBoton; pnlCuerpo: TPanel; pnlDatosCliente: TAdvPanel; MenuOpciones: TPopupMenu2000; mnuAnadir: TMenuItem2000; mnuEliminar: TMenuItem2000; mnuEliminarTodo: TMenuItem2000; MenuItem1: TMenuItem2000; MenuItem2: TMenuItem2000; pnlDatosPago: TAdvPanel; eFecha: TLabel; eCodigo: TLabel; Fecha: TcxDBDateEdit; Codigo: TcxDBButtonEdit; Label1: TLabel; CodCliente: 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 CodClienteExit(Sender: TObject); procedure CodClientePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure PoblacionPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); private FCodigoProvincia : Variant; FCodigoPoblacion : Variant; FCodigoCliente : Variant; FDatosPago : TDatosPagoCliente; 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 SetCodigoCliente (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 CodigoCliente : Variant read FCodigoCliente write SetCodigoCliente; constructor Create (AOwner : TComponent); override; destructor Destroy; override; published end; var frPagoCliente: TfrPagoCliente; implementation {$R *.DFM} uses Mensajes, IB, Colores, IBDatabase, BaseDatos, StrFunc, Excepciones, IBErrorCodes, Variants, NumFunc, TablaFamilias, Literales, configuracion, TablaPropiedadesArticulo, TablaPropiedades, TablaLibros, TablaFormasPago, TablaClientes, TablaProvincias, TablaPoblaciones, Clientes, Provincias, Poblaciones, RdxFrameProvincias, RdxFramePoblaciones, RdxFrameClientes, PagosClientes, Constantes, ElegirDireccionCliente, TablaEmpresas, TablaPagosProveedor; //////////////////////////////////////////////////////////////////////////////// // PUBLIC //////////////////////////////////////////////////////////////////////////////// constructor TfrPagoCliente.Create (AOwner : TComponent); begin inherited Create(AOwner); FCodigoProvincia := NULL; FCodigoPoblacion := NULL; FCodigoCliente := 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(dmTablaPagosCliente.sqlConsultar); InsertSQL.Assign(dmTablaPagosCliente.sqlInsertar); ModifySQL.Assign(dmTablaPagosCliente.sqlModificar); DeleteSQL.Assign(dmTablaPagosCliente.sqlEliminar); RefreshSQL.Assign(dmTablaPagosCliente.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 TfrPagoCliente.Destroy; begin TablaPagos.Close; TablaPagos.UnPrepare; TablaPagos.Free; FTablaLibros.Close; FTablaLibros.UnPrepare; FTablaLibros.Free; if FDatosPago <> nil then FDatosPago.Free; inherited; end; function TfrPagoCliente.AnadirDatos : Boolean; var lsNumEntrada : Variant; begin Result := False; try 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 entCobroCliente : TablaPagos.FieldByName('TIPOPAGO').AsString := CTE_COBRO; entAbonoCliente : 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 dmTablaPagosCliente.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(msgCliCodPagRepetido, [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 TfrPagoCliente.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(msgCliPagBloqueado, [Codigo.DataBinding.Field.AsString]); else begin Rollback; TratarExcepcion(E); end; end; end; on E : Exception do begin Rollback; TratarExcepcion(E); end; end; end; function TfrPagoCliente.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 TfrPagoCliente.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 TfrPagoCliente.ComprobarDatos: Boolean; begin Result := False; if (Modo in [Anadir, Modificar]) then begin if EsCadenaVacia(Descripcion.Text) then begin VerMensaje(msgCliFaltaDescPag); Descripcion.SetFocus; Exit; end; if EsCadenaVacia(CodCliente.Text) then begin VerMensaje(msgCliFaltaCliPag); CodCliente.SetFocus; Exit; end; end; Result := True; end; procedure TfrPagoCliente.VerModal; begin if (ContenidoModal is TRdxFramePoblaciones) then (ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := CodigoProvincia; if (ContenidoModal is TRdxFrameClientes) then (ContenidoModal as TRdxFrameClientes).CodigoCliente := CodigoCliente; if (ContenidoModal is TRdxFramePagos) then begin // (ContenidoModal as TRdxFramePagos).Serie := Serie; (ContenidoModal as TRdxFramePagos).CodigoPago := CodigoPago; end; inherited; end; procedure TfrPagoCliente.FreeContenido; begin if (ContenidoModal is TRdxFramePagos) then begin CodigoPago := (ContenidoModal as TRdxFramePagos).CodigoPago; ActivarModo; end; if (ContenidoModal is TRdxFrameClientes) then FCodigoCliente := (ContenidoModal as TRdxFrameClientes).CodigoCliente; 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 TfrPagoCliente.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 TfrPagoCliente.SetCodigoProvincia(Value: Variant); begin if (not EsCadenaVacia(Value)) then begin FCodigoProvincia := Value; Provincia.DataBinding.Field.AsString := dmTablaProvincias.DarNombreProvincia(FCodigoProvincia); end; end; procedure TfrPagoCliente.SetCodigoPoblacion(Value: Variant); begin if (not EsCadenaVacia(Value)) then begin FCodigoPoblacion := Value; Poblacion.DataBinding.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvincia, FCodigoPoblacion); end; end; procedure TfrPagoCliente.SetCodigoCliente(Value: Variant); var CodAux : Variant; DatosCliente : TDatosCliente; DireccionElegida : TDireccionElegida; NumSucursal : Integer; begin if EsCadenaVacia(Value) then exit; CodAux := Trim(Value); if (dmTablaClientes.ValidarCodigo(CodAux)) then begin CodAux := dmTablaClientes.FormatearCodigo(CodAux); if (dmTablaClientes.ExisteCodigo(CodAux)) then FCodigoCliente := CodAux else begin raise Exception.CreateFmt(msgCliCodCliNoExiste, [CodAux]); end; end else begin raise Exception.CreateFmt(msgCliCodCliIncorrecto, [CodAux]); end; DatosCliente := TDatosCliente.Create(FCodigoCliente); try CodCliente.DataBinding.Field.AsString := DatosCliente.Codigo; if DatosCliente.Sucursales.Count > 0 then begin frElegirDireccionCliente := TfrElegirDireccionCliente.Create(Self); try frElegirDireccionCliente.Cliente := DatosCliente; frElegirDireccionCliente.ShowModal; DireccionElegida := frElegirDireccionCliente.DireccionSeleccionada; NumSucursal := frElegirDireccionCliente.NumSucursal; finally frElegirDireccionCliente.Free; end; end else DireccionElegida := dePrincipal; CodCliente.DataBinding.Field.AsString := DatosCliente.Codigo; if DireccionElegida = dePrincipal then begin NIFCIF.DataBinding.Field.AsString := DatosCliente.Nifcif; Nombre.DataBinding.Field.AsString := DatosCliente.Nombre; Calle.DataBinding.Field.AsString := DatosCliente.Calle; Numero.DataBinding.Field.AsString := DatosCliente.Numero; Piso.DataBinding.Field.AsString := DatosCliente.Piso; Provincia.DataBinding.Field.AsString := DatosCliente.Provincia; FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(DatosCliente.Provincia); Poblacion.DataBinding.Field.AsString := DatosCliente.Poblacion; CodigoPostal.DataBinding.Field.AsString := DatosCliente.CodigoPostal; Telefono1.DataBinding.Field.AsString := DatosCliente.Telefono1; Telefono2.DataBinding.Field.AsString := DatosCliente.Telefono2; Movil1.DataBinding.Field.AsString := DatosCliente.Movil1; Movil2.DataBinding.Field.AsString := DatosCliente.Movil2; Fax.DataBinding.Field.AsString := DatosCliente.Fax; end else begin with DatosCliente.Sucursales do begin NIFCIF.DataBinding.Field.AsString := Sucursal[NumSucursal].Nifcif; Nombre.DataBinding.Field.AsString := Sucursal[NumSucursal].Nombre; Calle.DataBinding.Field.AsString := Sucursal[NumSucursal].Calle; Numero.DataBinding.Field.AsString := Sucursal[NumSucursal].Numero; Piso.DataBinding.Field.AsString := Sucursal[NumSucursal].Piso; Provincia.DataBinding.Field.AsString := Sucursal[NumSucursal].Provincia; FCodigoProvincia := dmTablaProvincias.DarCodigoProvincia(Sucursal[NumSucursal].Provincia); Poblacion.DataBinding.Field.AsString := Sucursal[NumSucursal].Poblacion; CodigoPostal.DataBinding.Field.AsString := Sucursal[NumSucursal].CodigoPostal; Telefono1.DataBinding.Field.AsString := Sucursal[NumSucursal].Telefono1; Telefono2.DataBinding.Field.AsString := Sucursal[NumSucursal].Telefono2; Movil1.DataBinding.Field.AsString := Sucursal[NumSucursal].Movil1; Movil2.DataBinding.Field.AsString := Sucursal[NumSucursal].Movil2; Fax.DataBinding.Field.AsString := Sucursal[NumSucursal].Fax; end; end; finally DatosCliente.Free; end; end; { procedure TfrPagoCliente.SetCodigoLibro(Value: Variant); begin if not EsCadenaVacia(Value) then begin FCodigoLibro := Value; end end; } procedure TfrPagoCliente.ImporteSetText(Sender: TField; const Text: String); begin if EsCadenaVacia(Text) then begin Sender.AsString := '0'; exit; end; try if (Entidad = entCobroCliente) then begin if (StrToFloat(Text) < 0) then Sender.AsFloat := (-1) * StrToFloat(Text) else Sender.AsString := Text end else if (Entidad = entAbonoCliente) 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 TfrPagoCliente.bAceptarClick(Sender: TObject); begin if (RealizarOperacion) then CloseFrame; end; procedure TfrPagoCliente.bCancelarClick(Sender: TObject); begin if (TratarCambios = IDOK) then CloseFrame; end; procedure TfrPagoCliente.bSalirClick(Sender: TObject); begin try Rollback; CloseFrame; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoCliente.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 := TfrPagosClientes.Create(Self); end; procedure TfrPagoCliente.CodClienteExit(Sender: TObject); begin if not (Modo in [Anadir, Modificar]) then Exit; if EsCadenaVacia(CodCliente.Text) then exit; if (dmTablaClientes.validarCodigo(CodCliente.Text)) then begin CodCliente.DataBinding.Field.AsString := dmTablaClientes.formatearCodigo(CodCliente.Text); if (dmTablaClientes.existeCodigo(CodCliente.Text)) then CodigoCliente := CodCliente.Text else begin VerMensajeFmt(msgCliCodCliNoExiste, [CodCliente.Text]); CodCliente.SetFocus; end; end else begin VerMensajeFmt(msgCliCodCliIncorrecto, [CodCliente.Text]); CodCliente.SetFocus; end; end; procedure TfrPagoCliente.CodClientePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin ContenidoModal := TfrClientes.Create(Self); CodigoCliente := FCodigoCliente; end; procedure TfrPagoCliente.ProvinciaPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin CaptionModal := msgListaProvincias; WidthModal := 280; HeightModal := 460; ContenidoModal := TfrProvincias.Create(Self); end; procedure TfrPagoCliente.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 //////////////////////////////////////////////////////////////////////////////// procedure TfrPagoCliente.rellenarDatosPago; begin if FDatosPago <> nil then FDatosPago.Free; FDatosPago := TDatosPagoCliente.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.CodigoCliente := TablaPagos.FieldByName('CODIGOCLIENTE').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; //////////////////////////////////////////////////////////////////////////////// // PROTECTED //////////////////////////////////////////////////////////////////////////////// procedure TfrPagoCliente.ActivarModoAnadir; var CodNuevo : Variant; i : Integer; begin dsPago.AutoEdit := True; Codigo.Properties.Buttons[0].Visible := False; Codigo.Enabled := False; CodCliente.Properties.Buttons[0].Visible := True; Poblacion.Properties.Buttons[0].Visible := True; Provincia.Properties.Buttons[0].Visible := True; try CodNuevo := dmTablaPagosCliente.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 entCobroCliente : FieldByName('TIPOPAGO').AsString := CTE_COBRO; entAbonoCliente : FieldByName('TIPOPAGO').AsString := CTE_ABONO; else verMensaje('LOG: error entidad erronea'); end; FieldByName('IMPORTE').AsFloat := 0; FieldByName('IMPORTE').OnSetText := ImporteSetText; end; dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos); Visible := True; Importe.SetFocus; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoCliente.ActivarModoConsultar; begin dsPago.AutoEdit := False; Codigo.Properties.Buttons[0].Visible := True; Codigo.Enabled := True; CodCliente.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(msgCliNoExistePag, [CodigoPago]); CloseFrame; Exit; end; Cancel; end; dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos); Visible := True; bSalir.SetFocus; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoCliente.ActivarModoEliminar; begin dsPago.AutoEdit := False; Codigo.Properties.Buttons[0].Visible := True; Codigo.Enabled := True; CodCliente.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(msgCliNoExistePag, [CodigoPago]); CancelarEliminar; CloseFrame; Exit; end; Cancel; end; dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos); Visible := True; bAceptar.SetFocus; except on E : EIBError do TratarExcepcion(E); on E : Exception do TratarExcepcion(E); end; end; procedure TfrPagoCliente.ActivarModoModificar; begin dsPago.AutoEdit := True; Codigo.Properties.Buttons[0].Visible := True; Codigo.Properties.ReadOnly := True; Codigo.Enabled := True; CodCliente.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(msgCliNoExistePag, [CodigoPago]); CancelarModificar; CloseFrame; Exit; end; Edit; Post; Edit; FieldByName('IMPORTE').OnSetText := ImporteSetText; end; dmTablaPagosCliente.InicializarTablaPagosClientes(@TablaPagos); //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(msgCliPagBloqueado, [CodigoPago]); CancelarModificar; CloseFrame; Exit; end else TratarExcepcion(E); end; end; on E : Exception do TratarExcepcion(E); end; end; function TfrPagoCliente.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; TablaPagos.Edit; TablaPagos.FieldByName('NUMENTRADA').AsString := FDatosPago.NumEntrada; TablaPagos.Post; if not dmTablaLibros.anadirEntradaLibro(Entidad, Modo, FDatosPago) then begin Rollback; VerMensaje(msgCliErrorOp); TablaPagos.Edit; exit; end; 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 TfrPagoCliente.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 TfrPagoCliente.SetCodigoPago(Value: Variant); begin inherited; if not EsCadenaVacia(Value) then begin if (Modo <> Anadir) then begin if (CTE_COBRO = TablaPagos.FieldByName('TIPOPAGO').AsString) then Entidad := entCobroCliente else Entidad := entAbonoCliente; rellenarDatosPago; end; end; end; end.