This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Clientes/PagoCliente.pas
2007-06-26 08:08:27 +00:00

953 lines
29 KiB
ObjectPascal

{
===============================================================================
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.