git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
990 lines
30 KiB
ObjectPascal
990 lines
30 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2001. 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: 01-10-2001
|
|
Versión actual: 1.1.2
|
|
Fecha versión actual: 18-03-2005
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
01-10-2001 Desactivar la posibilidad de ordenar las columnas del grid
|
|
para que no desaparezcan los datos no grabados en tablas.
|
|
|
|
20-10-2001 Se ha ampliado el campo 'Domiciliación bancaria'
|
|
porque pasa a tener 100 caracteres.
|
|
|
|
21-10-2001 Al pasar del modo Consultar/Eliminar a Añadir/Modificar no se
|
|
activaban algunos botones con lupa.
|
|
|
|
04-11-2001 No se pueden eliminar clientes con almacenes u obras.
|
|
|
|
07-04-2002 Se ha adaptado para la transacción única.
|
|
|
|
09-04-2002 En las funciones 'CancelarAnadir', 'CancelarModificar',
|
|
'CancelarEliminar', 'AnadirDatos', 'ModificarDatos', y
|
|
'EliminarDatos' cerrar todas las tablas que se usen.
|
|
|
|
09-04-2002 En el evento 'bCancelarClick' llamar a la función
|
|
'TratarCambios' en vez de 'DescartarOperacion'.
|
|
|
|
06-05-2002 Adaptación al grid 'TdxDBGrid'.
|
|
|
|
21-08-2002 P237. Revisar los botones de 'Eliminar' y 'Eliminar todo'
|
|
para que al pulsar 'Esc' cancele la operación y no la
|
|
ejecute como ahora.
|
|
|
|
24-09-2002 Se producía una excepción si el cursos estaba en el código
|
|
del cliente, se pulsaba la tecla 'Esc' y se elegía 'No'.
|
|
El frame estaba oculto pero saltaba el evento OnExit del
|
|
campo de código de factura.
|
|
|
|
21-10-2002 Activar p240. Se ha añadido el campo tipo de cliente
|
|
|
|
21-12-2002 Se ha eliminado un error con el campo 'PROVINCIA'. Al estar
|
|
situado en ese campo y dar Esc para salir se puede producir
|
|
una excepción.
|
|
|
|
26-04-2004 p272. Adaptación a multiempresa.
|
|
|
|
18-03-2005 Establecer IVA por defecto al dar de alta un cliente 16%
|
|
===============================================================================
|
|
}
|
|
|
|
unit Cliente;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
RdxBotones, StdCtrls, RdxMemo, RdxComboBox, RdxCampos, ExtCtrls,
|
|
RdxTitulos, Tipos, ComCtrls,
|
|
RdxCheckBox, Grids, DBGrids, RdxPaneles,
|
|
RdxBarras, Db, RdxDBFrame, RdxFrameClientes, RXDBCtrl, RdxPageControl, IB,
|
|
dxCntner, dxTL, dxDBCtrl, dxDBGrid, dxExEdtr, cxControls, cxContainer,
|
|
cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, cxDBEdit, cxCheckBox;
|
|
|
|
type
|
|
TfrCliente = class(TRdxFrameClientes)
|
|
pnlScroll: TRdxScrollPanel;
|
|
pnlCliente: TRdxPanel;
|
|
eCodigo: TLabel;
|
|
eNombre: TLabel;
|
|
eObservaciones: TLabel;
|
|
cDatos: TRdxCabecera;
|
|
eIVA: TLabel;
|
|
eDto: TLabel;
|
|
eDomiciliacion: TLabel;
|
|
eNIFCIF: TLabel;
|
|
cbxDomiciliacion: TRdxDBComboBox;
|
|
NIF: TRdxDBEdit;
|
|
Nombre: TRdxDBEdit;
|
|
IVA: TRdxDBEdit;
|
|
Dto: TRdxDBEdit;
|
|
Observaciones: TRdxDBMemo;
|
|
brDoble: TRdxBarraInferior;
|
|
bGuardar: TRdxBoton;
|
|
bCancelar: TRdxBoton;
|
|
brSimple: TRdxBarraInferior;
|
|
bSalir: TRdxBoton;
|
|
dsCliente: TDataSource;
|
|
pnlTitulo: TRdxPanelTituloOperacion;
|
|
dsSucursales: TDataSource;
|
|
PanelDirecciones: TRdxPanel;
|
|
Paginas: TRdxPagesControl;
|
|
TabSheet1: TTabSheet;
|
|
TabSheet2: TTabSheet;
|
|
pnlDireccion: TRdxPanel;
|
|
eDireccion: TLabel;
|
|
eNumero: TLabel;
|
|
ePiso: TLabel;
|
|
eCodigoPostal: TLabel;
|
|
ePoblacion: TLabel;
|
|
eProvincia: TLabel;
|
|
eTelefono1: TLabel;
|
|
eTelefono2: TLabel;
|
|
eFax: TLabel;
|
|
eCorreo: TLabel;
|
|
ePersona: TLabel;
|
|
Provincia: TRdxDBEdit;
|
|
Poblacion: TRdxDBEdit;
|
|
Telefono1: TRdxDBEdit;
|
|
Telefono2: TRdxDBEdit;
|
|
Fax: TRdxDBEdit;
|
|
Calle: TRdxDBEdit;
|
|
Numero: TRdxDBEdit;
|
|
Piso: TRdxDBEdit;
|
|
CodigoPostal: TRdxDBEdit;
|
|
CorreoElectronico: TRdxDBEdit;
|
|
PersonaContacto: TRdxDBEdit;
|
|
pnlGridArticulos: TPanel;
|
|
pnlBarraGrid: TRdxPanel;
|
|
bAnadir: TRdxBoton;
|
|
bEliminar: TRdxBoton;
|
|
bEliminarTodo: TRdxBoton;
|
|
gridSucursales: TdxDBGrid;
|
|
cbxTipoCliente: TRdxDBComboBox;
|
|
eTipo: TLabel;
|
|
Codigo: TcxDBButtonEdit;
|
|
cxEtiquetado: TcxDBCheckBox;
|
|
procedure bSalirClick(Sender: TObject);
|
|
procedure bAceptarClick(Sender: TObject);
|
|
procedure bCancelarClick(Sender: TObject);
|
|
procedure bAnadirClick(Sender: TObject);
|
|
procedure bEliminarClick(Sender: TObject);
|
|
procedure ProvinciaButtonClick(Sender: TObject);
|
|
procedure PoblacionButtonClick(Sender: TObject);
|
|
procedure IVAExit(Sender: TObject);
|
|
procedure DtoExit(Sender: TObject);
|
|
procedure bEliminarTodoClick(Sender: TObject);
|
|
procedure CodigoPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
procedure CodigoPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
private
|
|
FCodigoProvincia : Variant;
|
|
FCodigoPoblacion : Variant;
|
|
FCodigoProvinciaDireccion : Variant;
|
|
FCodigoPoblacionDireccion : Variant;
|
|
FCodigoProvinciaSucursal : Variant;
|
|
FCodigoPoblacionSucursal : Variant;
|
|
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 SetCodigoProvincia (Value : Variant); virtual;
|
|
procedure SetCodigoPoblacion (Value : Variant); virtual;
|
|
procedure SetCodigoProvinciaDireccion (Value : Variant); virtual;
|
|
procedure SetCodigoPoblacionDireccion (Value : Variant); virtual;
|
|
procedure SetCodigoProvinciaSucursal (Value : Variant); virtual;
|
|
procedure SetCodigoPoblacionSucursal (Value : Variant); virtual;
|
|
procedure FreeContenido; override;
|
|
procedure BuscarCliente; override;
|
|
public
|
|
property CodigoProvincia : Variant read FCodigoProvincia write SetCodigoProvincia;
|
|
property CodigoPoblacion : Variant read FCodigoPoblacion write SetCodigoPoblacion;
|
|
property CodigoProvinciaDireccion : Variant read FCodigoProvinciaDireccion write SetCodigoProvinciaDireccion;
|
|
property CodigoPoblacionDireccion : Variant read FCodigoPoblacionDireccion write SetCodigoPoblacionDireccion;
|
|
property CodigoProvinciaSucursal : Variant read FCodigoProvinciaSucursal write SetCodigoProvinciaSucursal;
|
|
property CodigoPoblacionSucursal : Variant read FCodigoPoblacionSucursal write SetCodigoPoblacionSucursal;
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
property TablaClientes;
|
|
property TablaSucursales;
|
|
property CodigoCliente;
|
|
procedure SucursalAfterInsert(DataSet: TDataSet);
|
|
procedure GridBotonPoblacionClick(Sender: TObject);
|
|
procedure GridBotonProvinciaClick(Sender: TObject);
|
|
procedure ProvinciaSucursalSetText(Sender: TField; const Text: String);
|
|
procedure ProvinciaSetText(Sender: TField; const Text: String);
|
|
end;
|
|
|
|
var
|
|
frCliente: TfrCliente;
|
|
|
|
implementation
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
IBCustomDataSet, TablaClientes, Mensajes, Provincias,
|
|
Poblaciones, Clientes, Colores, Configuracion, NumFunc,
|
|
BaseDatos, TablaSucursalesCliente, RdxFrameProvincias,
|
|
RdxFramePoblaciones, TablaProvincias, TablaBancos, StrFunc,
|
|
TablaPoblaciones, Excepciones, IBErrorCodes, dxDBTLCL, TablaTiposCliente,
|
|
Literales, Constantes;
|
|
|
|
|
|
const
|
|
eRegBloq = -901;
|
|
|
|
constructor TfrCliente.Create (AOwner : TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FCodigoProvincia := NULL;
|
|
FCodigoPoblacion := NULL;
|
|
FCodigoProvinciaDireccion := NULL;
|
|
FCodigoPoblacionDireccion := NULL;
|
|
FCodigoProvinciaSucursal := NULL;
|
|
FCodigoPoblacionSucursal := NULL;
|
|
|
|
Entidad := entCliente;
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
|
|
TablaClientes := TIBDataSet.Create(Self);
|
|
TablaSucursales := TIBDataSet.Create(Self);
|
|
TablaSucursales.AfterInsert := SucursalAfterInsert;
|
|
dsCliente.DataSet := TablaClientes;
|
|
dsSucursales.DataSet := TablaSucursales;
|
|
with TablaClientes do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaClientes.sqlConsultar);
|
|
InsertSQL.Assign(dmTablaClientes.sqlInsertar);
|
|
ModifySQL.Assign(dmTablaClientes.sqlModificar);
|
|
DeleteSQL.Assign(dmTablaClientes.sqlEliminar);
|
|
RefreshSQL.Assign(dmTablaClientes.sqlConsultar);
|
|
end;
|
|
|
|
with TablaSucursales do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaSucursalesCliente.sqlGrid);
|
|
InsertSQL.Assign(dmTablaSucursalesCliente.sqlInsertar);
|
|
ModifySQL.Assign(dmTablaSucursalesCliente.sqlModificar);
|
|
DeleteSQL.Assign(dmTablaSucursalesCliente.sqlEliminar);
|
|
RefreshSQL.Assign(dmTablaSucursalesCliente.sqlConsultar);
|
|
end;
|
|
cbxDomiciliacion.Items := dmTablaBancos.DarBancos;
|
|
cbxTipoCliente.Items := dmTablaTiposCliente.DarTiposCliente;
|
|
dmTablaSucursalesCliente.InicializarGridSucursales(gridSucursales);
|
|
Paginas.ActivePageIndex := 0;
|
|
end;
|
|
|
|
procedure TfrCliente.bSalirClick(Sender: TObject);
|
|
begin
|
|
try
|
|
Rollback;
|
|
CloseFrame;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.bAceptarClick(Sender: TObject);
|
|
begin
|
|
if (RealizarOperacion) then
|
|
CloseFrame;
|
|
end;
|
|
|
|
function TfrCliente.AnadirDatos : boolean;
|
|
var
|
|
CodSucursal : Integer;
|
|
begin
|
|
Result := False;
|
|
try
|
|
CodSucursal := 0;
|
|
TablaClientes.Post;
|
|
TablaSucursales.DisableControls;
|
|
TablaSucursales.First;
|
|
while not TablaSucursales.Eof do begin
|
|
TablaSucursales.Edit;
|
|
TablaSucursales.FieldByName('CODIGO').AsInteger := CodSucursal;
|
|
TablaSucursales.FieldByName('CODIGOCLIENTE').AsString := Codigo.DataBinding.Field.AsString;
|
|
CodSucursal := CodSucursal + 1;
|
|
TablaSucursales.Next;
|
|
end;
|
|
TablaSucursales.EnableControls;
|
|
TablaClientes.ApplyUpdates;
|
|
TablaSucursales.ApplyUpdates;
|
|
dmTablaClientes.incrementarCodigo;
|
|
FCodigoCliente := TablaClientes.FieldByName('CODIGO').AsString;
|
|
Commit;
|
|
TablaClientes.CachedUpdates := False;
|
|
TablaSucursales.CachedUpdates := False;
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do begin
|
|
if E.IBErrorCode = isc_unique_key_violation then
|
|
begin
|
|
VerMensajeFmt(msgCliCodCliRepetido, [Codigo.DataBinding.Field.AsString]);
|
|
TablaClientes.Edit;
|
|
end
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrCliente.ModificarDatos : boolean;
|
|
var
|
|
CodSucursal : Integer;
|
|
begin
|
|
Result := False;
|
|
try
|
|
CodSucursal := 0;
|
|
TablaClientes.Post;
|
|
TablaSucursales.DisableControls;
|
|
|
|
TablaSucursales.First;
|
|
while not TablaSucursales.Eof do
|
|
begin
|
|
TablaSucursales.Edit;
|
|
TablaSucursales.FieldByName('CODIGO').AsInteger := CodSucursal;
|
|
CodSucursal := CodSucursal + 1;
|
|
TablaSucursales.Post;
|
|
TablaSucursales.Next;
|
|
end;
|
|
|
|
TablaSucursales.ApplyUpdates;
|
|
TablaSucursales.EnableControls;
|
|
Commit;
|
|
TablaSucursales.CachedUpdates := False;
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrCliente.EliminarDatos : boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaClientes.Delete;
|
|
Commit;
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : VerMensajeFmt(msgCliBloqueado, [Codigo.DataBinding.Field.AsString]);
|
|
isc_foreign_key : VerMensajeFmt(msgCliConAlmAso, [Codigo.DataBinding.Field.AsString]);
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.ActivarModoAnadir;
|
|
var
|
|
CodNuevo : Variant;
|
|
begin
|
|
dsCliente.AutoEdit := True;
|
|
dsSucursales.AutoEdit := True;
|
|
|
|
pnlBarraGrid.Visible := True;
|
|
|
|
ActivarEdicionGridDetalles(gridSucursales);
|
|
|
|
(gridSucursales.ColumnByFieldName('PROVINCIA')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonProvinciaClick;
|
|
|
|
(gridSucursales.ColumnByFieldName('POBLACION')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonPoblacionClick;
|
|
|
|
Codigo.Properties.Buttons[0].Visible := False;
|
|
Codigo.Properties.ReadOnly := False;
|
|
Codigo.Properties.OnValidate := CodigoPropertiesValidate;
|
|
Provincia.VerBoton := True;
|
|
Poblacion.VerBoton := True;
|
|
|
|
try
|
|
{ Antes de aplicar la caché hay que asegurarse de que la
|
|
tabla está cerrada. }
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
CodNuevo := dmTablaClientes.darNuevoCodigo;
|
|
TablaClientes.CachedUpdates := True;
|
|
TablaSucursales.CachedUpdates := True;
|
|
TablaClientes.Open;
|
|
TablaClientes.FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
|
|
TablaSucursales.Prepare;
|
|
TablaSucursales.Params.ByName('CODIGOCLIENTE').AsString := CodNuevo;
|
|
TablaSucursales.Open;
|
|
TablaSucursales.FieldByName('PROVINCIA').OnSetText := ProvinciaSucursalSetText;
|
|
TablaClientes.Insert;
|
|
Codigo.DataBinding.Field.AsString := CodNuevo;
|
|
cxEtiquetado.DataBinding.Field.AsInteger := 0;
|
|
TablaClientes.FieldByName('IVA').AsString := CTE_IVA;
|
|
Visible := True;
|
|
NIF.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.ActivarModoModificar;
|
|
begin
|
|
dsCliente.AutoEdit := True;
|
|
dsSucursales.AutoEdit := True;
|
|
|
|
ActivarEdicionGridDetalles(gridSucursales);
|
|
|
|
(gridSucursales.ColumnByFieldName('PROVINCIA')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonProvinciaClick;
|
|
|
|
(gridSucursales.ColumnByFieldName('POBLACION')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := GridBotonPoblacionClick;
|
|
|
|
Codigo.Properties.Buttons[0].Visible := True;
|
|
Codigo.Properties.ReadOnly := True;
|
|
Codigo.Properties.OnValidate := nil;
|
|
Provincia.VerBoton := True;
|
|
Poblacion.VerBoton := True;
|
|
// Para que no haga dos accesos a la tabla cuando es consulta
|
|
FCodigoProvinciaDireccion := dmTablaProvincias.darCodigoProvincia(Provincia.Text);
|
|
try
|
|
TablaClientes.Open;
|
|
TablaClientes.FieldByName('PROVINCIA').OnSetText := ProvinciaSetText;
|
|
if TablaClientes.RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgCliNoExiste, [CodigoCliente]);
|
|
CancelarModificar;
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
|
|
{ Antes de aplicar la caché hay que asegurarse de que la
|
|
tabla está cerrada. }
|
|
TablaSucursales.Close;
|
|
TablaSucursales.CachedUpdates := True;
|
|
TablaSucursales.Params.ByName('CODIGOCLIENTE').AsString := Codigo.DataBinding.Field.AsString;
|
|
TablaSucursales.Prepare;
|
|
TablaSucursales.Open;
|
|
TablaSucursales.FieldByName('PROVINCIA').OnSetText := ProvinciaSucursalSetText;
|
|
TablaClientes.Edit;
|
|
TablaClientes.Post;
|
|
TablaClientes.Edit;
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
begin
|
|
case E.IBErrorCode of
|
|
isc_lock_conflict : begin
|
|
VerMensajeFmt(msgCliBloqueado, [CodigoCliente]);
|
|
CancelarModificar;
|
|
CloseFrame;
|
|
Exit;
|
|
end
|
|
else
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.ActivarModoConsultar;
|
|
begin
|
|
dsCliente.AutoEdit := False;
|
|
dsSucursales.AutoEdit := False;
|
|
pnlBarraGrid.Visible := False;
|
|
DesactivarEdicionGridDetalles(gridSucursales);
|
|
|
|
(gridSucursales.ColumnByFieldName('PROVINCIA')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
(gridSucursales.ColumnByFieldName('POBLACION')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
Codigo.Properties.Buttons[0].Visible := True;
|
|
Codigo.Properties.OnValidate := nil;
|
|
Provincia.VerBoton := False;
|
|
Poblacion.VerBoton := False;
|
|
try
|
|
TablaClientes.Open;
|
|
|
|
if TablaClientes.RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgCliNoExiste, [CodigoCliente]);
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
|
|
TablaSucursales.Open;
|
|
TablaSucursales.Params.ByName('CODIGOCLIENTE').AsString := Codigo.DataBinding.Field.AsString;
|
|
TablaClientes.Cancel;
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.ActivarModoEliminar;
|
|
begin
|
|
dsCliente.AutoEdit := False;
|
|
dsSucursales.AutoEdit := False;
|
|
pnlBarraGrid.Visible := False;
|
|
|
|
DesactivarEdicionGridDetalles(gridSucursales);
|
|
|
|
(gridSucursales.ColumnByFieldName('PROVINCIA')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
(gridSucursales.ColumnByFieldName('POBLACION')
|
|
as TdxDBTreeListButtonColumn).OnEditButtonClick := NIL;
|
|
|
|
Codigo.Properties.Buttons[0].Visible := True;
|
|
Codigo.Properties.OnValidate := nil;
|
|
Provincia.VerBoton := False;
|
|
Poblacion.VerBoton := False;
|
|
try
|
|
TablaClientes.Open;
|
|
|
|
if TablaClientes.RecordCount = 0 then
|
|
begin
|
|
VerMensajeFmt(msgCliNoExiste, [CodigoCliente]);
|
|
CancelarEliminar;
|
|
CloseFrame;
|
|
Exit;
|
|
end;
|
|
|
|
TablaSucursales.Open;
|
|
TablaSucursales.Params.ByName('CODIGOCLIENTE').AsString := CodigoCliente;
|
|
TablaClientes.Cancel;
|
|
Visible := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.BuscarCliente;
|
|
begin
|
|
if Transaccion = NIL then
|
|
exit;
|
|
try
|
|
TablaClientes.Close;
|
|
|
|
// Buscar la fila a tratar si es necesario
|
|
if not VarIsNull(CodigoCliente) then
|
|
begin
|
|
TablaClientes.Params.ByName('CODIGO').AsString := CodigoCliente;
|
|
TablaSucursales.Params.ByName('CODIGOCLIENTE').AsString := CodigoCliente;
|
|
end;
|
|
TablaClientes.Prepare;
|
|
TablaSucursales.Prepare;
|
|
TablaClientes.Open;
|
|
TablaSucursales.Open;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrCliente.CancelarAnadir: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaClientes.CancelUpdates;
|
|
TablaSucursales.CancelUpdates;
|
|
RollBack;
|
|
TablaClientes.CachedUpdates := False;
|
|
TablaSucursales.CachedUpdates := False;
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrCliente.CancelarEliminar: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
RollBack;
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrCliente.CancelarModificar: Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
TablaSucursales.CancelUpdates;
|
|
RollBack;
|
|
TablaSucursales.CachedUpdates := False;
|
|
TablaClientes.Close;
|
|
TablaSucursales.Close;
|
|
Result := True;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
destructor TfrCliente.Destroy;
|
|
begin
|
|
TablaSucursales.Close;
|
|
TablaSucursales.UnPrepare;
|
|
TablaSucursales.Free;
|
|
|
|
TablaClientes.Close;
|
|
TablaClientes.UnPrepare;
|
|
TablaClientes.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrCliente.FreeContenido;
|
|
begin
|
|
if (ContenidoModal is TRdxFrameClientes) then begin
|
|
CodigoCliente := (ContenidoModal as TRdxFrameClientes).CodigoCliente;
|
|
ActivarModo;
|
|
end;
|
|
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 TfrCliente.SetCodigoPoblacion(Value: Variant);
|
|
begin
|
|
if FCodigoPoblacion <> Value then
|
|
FCodigoPoblacion := Value;
|
|
end;
|
|
|
|
procedure TfrCliente.SetCodigoProvincia(Value: Variant);
|
|
begin
|
|
if FCodigoProvincia <> Value then
|
|
FCodigoProvincia := Value;
|
|
end;
|
|
|
|
procedure TfrCliente.VerModal;
|
|
begin
|
|
if (ContenidoModal is TRdxFramePoblaciones) then
|
|
(ContenidoModal as TRdxFramePoblaciones).CodigoProvincia := CodigoProvincia;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrCliente.bCancelarClick(Sender: TObject);
|
|
begin
|
|
if (TratarCambios = IDOK) then
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrCliente.bAnadirClick(Sender: TObject);
|
|
begin
|
|
try
|
|
TablaSucursales.Append;
|
|
Paginas.ActivePageIndex := 1;
|
|
gridSucursales.SetFocus;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.bEliminarClick(Sender: TObject);
|
|
begin
|
|
if (VerMensajePregunta(msgDeseaBorrar) <> IDYES) then
|
|
Exit;
|
|
|
|
if TablaSucursales.RecordCount = 0 then begin
|
|
{ Hacemos un cancel de la tabla por si el registro actual estuviera
|
|
recien creado }
|
|
TablaSucursales.Cancel;
|
|
exit;
|
|
end;
|
|
try
|
|
TablaSucursales.Delete;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.GridBotonPoblacionClick(Sender: TObject);
|
|
begin
|
|
FCodigoProvinciaSucursal := dmTablaProvincias.darCodigoProvincia(TablaSucursales.FieldByName('PROVINCIA').AsString);
|
|
if (VarIsNull(CodigoProvinciaSucursal)) then begin
|
|
VerMensaje(msgSinProvincia);
|
|
Exit;
|
|
end;
|
|
TablaSucursales.Edit;
|
|
CodigoProvincia := CodigoProvinciaSucursal;
|
|
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.darNombreProvincia(CodigoProvincia)]);
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrPoblaciones.Create(Self);
|
|
CodigoPoblacionSucursal := CodigoPoblacion;
|
|
end;
|
|
|
|
procedure TfrCliente.ProvinciaButtonClick(Sender: TObject);
|
|
begin
|
|
CaptionModal := 'Lista de provincias';
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrProvincias.Create(Self);
|
|
CodigoProvinciaDireccion := CodigoProvincia;
|
|
end;
|
|
|
|
procedure TfrCliente.PoblacionButtonClick(Sender: TObject);
|
|
begin
|
|
if (VarIsNull(CodigoProvinciaDireccion)) then begin
|
|
VerMensaje(msgSinProvincia);
|
|
Paginas.ActivePageIndex := 0;
|
|
Provincia.SetFocus;
|
|
Exit;
|
|
end;
|
|
CodigoProvincia := CodigoProvinciaDireccion;
|
|
CaptionModal := Format(msgListaPoblaciones, [dmTablaProvincias.darNombreProvincia(CodigoProvincia)]);
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrPoblaciones.Create(Self);
|
|
CodigoPoblacionDireccion := CodigoPoblacion;
|
|
end;
|
|
|
|
procedure TfrCliente.SetCodigoPoblacionDireccion(Value: Variant);
|
|
begin
|
|
if (not VarIsNull(FCodigoPoblacionDireccion)) and (FCodigoPoblacionDireccion = Value) then
|
|
exit;
|
|
|
|
if (not VarIsNull(Value)) then
|
|
begin
|
|
FCodigoPoblacionDireccion := Value;
|
|
Poblacion.Field.AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvinciaDireccion, FCodigoPoblacionDireccion);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.SetCodigoPoblacionSucursal(Value: Variant);
|
|
begin
|
|
if (not VarIsNull(FCodigoPoblacionSucursal)) and (FCodigoPoblacionSucursal = Value) then
|
|
exit;
|
|
|
|
if (not VarIsNull(Value)) then
|
|
begin
|
|
FCodigoPoblacionSucursal := Value;
|
|
TablaSucursales.FieldByName('POBLACION').AsString := dmTablaPoblaciones.darNombrePoblacion(FCodigoProvinciaSucursal, FCodigoPoblacionSucursal);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.SetCodigoProvinciaDireccion(Value: Variant);
|
|
begin
|
|
if (not VarIsNull(FCodigoProvinciaDireccion)) and (FCodigoProvinciaDireccion = Value) then
|
|
exit;
|
|
|
|
if (not VarIsNull(Value)) then
|
|
begin
|
|
FCodigoProvinciaDireccion := Value;
|
|
Provincia.Field.AsString := dmTablaProvincias.darNombreProvincia(FCodigoProvinciaDireccion);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.SetCodigoProvinciaSucursal(Value: Variant);
|
|
begin
|
|
if (not VarIsNull(FCodigoProvinciaSucursal)) and (FCodigoProvinciaSucursal = Value) then
|
|
exit;
|
|
|
|
if (not VarIsNull(Value)) then
|
|
begin
|
|
FCodigoProvinciaSucursal := Value;
|
|
TablaSucursales.FieldByName('PROVINCIA').AsString := dmTablaProvincias.darNombreProvincia(FCodigoProvinciaSucursal);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.IVAExit(Sender: TObject);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
try
|
|
validarIVA(IVA.Text);
|
|
except
|
|
on E : Exception do begin
|
|
IVA.SetFocus;
|
|
VerMensaje(E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.DtoExit(Sender: TObject);
|
|
begin
|
|
if not (Modo in [Anadir, Modificar]) then
|
|
Exit;
|
|
try
|
|
validarDto(Dto.Text);
|
|
except
|
|
on E : Exception do begin
|
|
Dto.SetFocus;
|
|
VerMensaje(E.Message);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrCliente.SucursalAfterInsert(DataSet: TDataSet);
|
|
begin
|
|
DataSet.FieldByName('CODIGOCLIENTE').AsString := Codigo.DataBinding.Field.AsString;
|
|
DataSet.FieldByName('CODIGO').AsInteger := -1;
|
|
DataSet.FieldByName('DB_KEY').AsString := '-';
|
|
end;
|
|
|
|
procedure TfrCliente.bEliminarTodoClick(Sender: TObject);
|
|
begin
|
|
if (VerMensajePregunta(msgDeseaBorrarTodo) <> IDYES) then
|
|
Exit;
|
|
|
|
try
|
|
TablaSucursales.DisableControls;
|
|
TablaSucursales.Last;
|
|
while TablaSucursales.RecordCount > 0 do begin
|
|
TablaSucursales.Delete;
|
|
TablaSucursales.Prior;
|
|
end;
|
|
TablaSucursales.EnableControls;
|
|
except
|
|
on E : EIBError do
|
|
TratarExcepcion(E);
|
|
on E : Exception do
|
|
TratarExcepcion(E);
|
|
end;
|
|
end;
|
|
|
|
function TfrCliente.ComprobarDatos: Boolean;
|
|
begin
|
|
Result := False;
|
|
|
|
if EsCadenaVacia(Nombre.Text) then
|
|
begin
|
|
VerMensaje(msgCliFaltaNombreCli);
|
|
Nombre.SetFocus;
|
|
Exit;
|
|
end;
|
|
|
|
if EsCadenaVacia(Calle.Text) then
|
|
begin
|
|
VerMensaje(msgCliFaltaCalle);
|
|
Paginas.ActivePageIndex := 0;
|
|
Calle.SetFocus;
|
|
Exit;
|
|
end;
|
|
Result := True;
|
|
end;
|
|
|
|
procedure TfrCliente.ProvinciaSucursalSetText(Sender: TField;
|
|
const Text: String);
|
|
var
|
|
CampoProvincia : String;
|
|
begin
|
|
CampoProvincia := AnsiUpperCase(Text);
|
|
FCodigoProvinciaSucursal := dmTablaProvincias.darCodigoProvincia(CampoProvincia);
|
|
Sender.AsString := CampoProvincia;
|
|
end;
|
|
|
|
procedure TfrCliente.GridBotonProvinciaClick(Sender: TObject);
|
|
begin
|
|
TablaSucursales.Edit;
|
|
CaptionModal := 'Lista de provincias';
|
|
WidthModal := 280;
|
|
HeightModal := 460;
|
|
ContenidoModal := TfrProvincias.Create(Self);
|
|
CodigoProvinciaSucursal := CodigoProvincia;
|
|
end;
|
|
|
|
procedure TfrCliente.ProvinciaSetText(Sender: TField; const Text: String);
|
|
begin
|
|
FCodigoProvinciaDireccion := dmTablaProvincias.darCodigoProvincia(Text);
|
|
Sender.AsString := Text;
|
|
end;
|
|
|
|
procedure TfrCliente.CodigoPropertiesButtonClick(Sender: TObject;
|
|
AButtonIndex: Integer);
|
|
begin
|
|
inherited;
|
|
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, FCodigoCliente es NULL y da error al activar modo porque
|
|
no se inicializa los parámetros de la sql. Lo hace BuscarCliente. }
|
|
if not TablaClientes.Active then
|
|
BuscarCliente;
|
|
ContenidoModal := TfrClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrCliente.CodigoPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
|
|
begin
|
|
inherited;
|
|
if (Modo <> Anadir) or (Visible = false) then
|
|
exit;
|
|
|
|
if EsCadenaVacia(DisplayValue) then
|
|
DisplayValue := dmTablaClientes.darNuevoCodigo;
|
|
|
|
if (dmTablaClientes.validarCodigo(DisplayValue)) then
|
|
begin
|
|
//Comprueba que le numero es lo sufucientemente pequeño para ser un entero
|
|
if not EsInteger(DisplayValue) then
|
|
begin
|
|
VerMensajeFmt(msgCliCodCliIncorrecto,[DisplayValue]);
|
|
Codigo.SetFocus;
|
|
end
|
|
else
|
|
begin
|
|
DisplayValue := dmTablaClientes.formatearCodigo(DisplayValue);
|
|
if (dmTablaClientes.existeCodigo(DisplayValue)) then begin
|
|
VerMensajeFmt(msgCliCodCliRepetido, [DisplayValue]);
|
|
Codigo.SetFocus;
|
|
end;
|
|
end;
|
|
end
|
|
else begin
|
|
VerMensajeFmt(msgCliCodCliIncorrecto, [DisplayValue]);
|
|
Codigo.SetFocus;
|
|
end;
|
|
end;
|
|
|
|
end.
|