619 lines
17 KiB
ObjectPascal
619 lines
17 KiB
ObjectPascal
|
|
{
|
|||
|
|
===============================================================================
|
|||
|
|
Copyright (<EFBFBD>) 2001. Rodax Software.
|
|||
|
|
===============================================================================
|
|||
|
|
Los contenidos de este fichero son propiedad de Rodax Software titular del
|
|||
|
|
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
|
|||
|
|
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
|
|||
|
|
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
|
|||
|
|
bajo el que se suministra.
|
|||
|
|
-----------------------------------------------------------------------------
|
|||
|
|
Web: www.rodax-software.com
|
|||
|
|
===============================================================================
|
|||
|
|
Fecha primera versi<EFBFBD>n: 01-10-2001
|
|||
|
|
Versi<EFBFBD>n actual: 1.0.9
|
|||
|
|
Fecha versi<EFBFBD>n actual: 02-02-2005
|
|||
|
|
===============================================================================
|
|||
|
|
Modificaciones:
|
|||
|
|
|
|||
|
|
Fecha Comentarios
|
|||
|
|
---------------------------------------------------------------------------
|
|||
|
|
18-01-2002 Ordenar por descripci<EFBFBD>n el grid de materiales.
|
|||
|
|
|
|||
|
|
07-04-2002 Adaptar todas las funciones a la transacci<EFBFBD>n <EFBFBD>nica.
|
|||
|
|
|
|||
|
|
06-05-2002 Adaptaci<EFBFBD>n al grid 'TdxDBGrid'.
|
|||
|
|
|
|||
|
|
27-05-2002 Cambio a un objeto contador (TContadorCliente)
|
|||
|
|
|
|||
|
|
21-10-2002 Se ha a<EFBFBD>adido el campo tipo de cliente
|
|||
|
|
|
|||
|
|
16-11-2002 p250. Poner el n<EFBFBD>mero total de clientes dados de alta
|
|||
|
|
en la inicializaci<EFBFBD>n del grid.
|
|||
|
|
|
|||
|
|
19-11-2003 p268. Cambiar funciones min y max cliente para que en lugar
|
|||
|
|
de devolverme el cliente con mayor o menor codigo me devuelva el
|
|||
|
|
cliente cuyo nombre seria el mayor o menor alfabeticamente.
|
|||
|
|
|
|||
|
|
06-03-2004 P272. Adaptaci<EFBFBD>n a multiempresa.
|
|||
|
|
|
|||
|
|
23-11-2004 p297. Solo sacar etiquetas de los clientes/proveedores etiquetados.
|
|||
|
|
|
|||
|
|
02-02-2005 p550. A<EFBFBD>adimos funcion darCorreo
|
|||
|
|
===============================================================================
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unit TablaClientes;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms,
|
|||
|
|
Dialogs, DBTables, DB, IBCustomDataSet, IBSQL, BaseDatos, IBDatabase,
|
|||
|
|
dxDBGrid, Contadores, Framework;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TDatosCliente = class(TObjeto)
|
|||
|
|
public
|
|||
|
|
Codigo : String;
|
|||
|
|
NIFCIF : String;
|
|||
|
|
Nombre : String;
|
|||
|
|
Calle : String;
|
|||
|
|
Numero : String;
|
|||
|
|
Piso : String;
|
|||
|
|
CodigoPostal : String;
|
|||
|
|
Poblacion : String;
|
|||
|
|
Provincia : String;
|
|||
|
|
Telefono1 : String;
|
|||
|
|
Telefono2 : String;
|
|||
|
|
Fax : String;
|
|||
|
|
Correo : String;
|
|||
|
|
PersonaContacto : String;
|
|||
|
|
Banco : String;
|
|||
|
|
Observaciones : String;
|
|||
|
|
TipoCliente: String;
|
|||
|
|
Iva : String;
|
|||
|
|
Descuento : String;
|
|||
|
|
constructor Create; overload;
|
|||
|
|
constructor Create(CodigoCliente : String); overload;
|
|||
|
|
procedure ObtenerDatos; override;
|
|||
|
|
procedure SalvarDatos;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TdmTablaClientes = class(TDataModule)
|
|||
|
|
private
|
|||
|
|
procedure IniciarSQL;
|
|||
|
|
public
|
|||
|
|
sqlInsertar : TStrings;
|
|||
|
|
sqlModificar : TStrings;
|
|||
|
|
sqlConsultar : TStrings;
|
|||
|
|
sqlEliminar : TStrings;
|
|||
|
|
sqlGrid : TStrings;
|
|||
|
|
|
|||
|
|
//Metodos que llamaran a contador
|
|||
|
|
function DarNuevoCodigo : String;
|
|||
|
|
function IncrementarCodigo: boolean;
|
|||
|
|
function InsertarContador : boolean;
|
|||
|
|
function ValidarCodigo(Codigo : String) : Boolean;
|
|||
|
|
function FormatearCodigo(Codigo : String) : String;
|
|||
|
|
|
|||
|
|
function DarDatosCliente(Cliente : TDatosCliente) : Boolean;
|
|||
|
|
function ExisteCodigo(Codigo : String) : Boolean;
|
|||
|
|
constructor Create (AOwner : TComponent); override;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
procedure InicializarGridClientes(var Grid: TdxDBGrid);
|
|||
|
|
function DarClienteMin : String;
|
|||
|
|
function DarClienteMax : String;
|
|||
|
|
function EtiquetarClientes(Codigos: TStringList; TipoOp: Integer): Boolean;
|
|||
|
|
function DarCorreo(Codigo: String): String;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var
|
|||
|
|
dmTablaClientes: TdmTablaClientes;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$R *.DFM}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Mensajes, IB, StrFunc, Excepciones, dxDBCtrl, RdxGestorContadores, Constantes,
|
|||
|
|
dxGrClms;
|
|||
|
|
|
|||
|
|
constructor TdmTablaClientes.Create (AOwner : TComponent);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
sqlInsertar := TStringList.Create;
|
|||
|
|
sqlModificar := TStringList.Create;
|
|||
|
|
sqlConsultar := TStringList.Create;
|
|||
|
|
sqlEliminar := TStringList.Create;
|
|||
|
|
sqlGrid := TStringList.Create;
|
|||
|
|
IniciarSQL;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaClientes.IniciarSQL;
|
|||
|
|
begin
|
|||
|
|
with sqlInsertar do
|
|||
|
|
begin
|
|||
|
|
Add('insert into CLIENTES ');
|
|||
|
|
Add('(CODIGO, NIFCIF, NOMBRE, CALLE, NUMERO, PISO, ');
|
|||
|
|
Add('CODIGOPOSTAL, POBLACION, PROVINCIA, TELEFONO1, ');
|
|||
|
|
Add('TELEFONO2, FAX, CORREO, PERSONACONTACTO, ');
|
|||
|
|
Add('IVA, DESCUENTO, BANCO, OBSERVACIONES, TIPOCLIENTE, ETIQUETADO, ');
|
|||
|
|
Add('ULTIMOCAMBIO) ');
|
|||
|
|
Add('values (:CODIGO, :NIFCIF, :NOMBRE, :CALLE, :NUMERO, :PISO, ');
|
|||
|
|
Add(':CODIGOPOSTAL, :POBLACION, :PROVINCIA, :TELEFONO1, ');
|
|||
|
|
Add(':TELEFONO2, :FAX, :CORREO, :PERSONACONTACTO, ');
|
|||
|
|
Add(':IVA, :DESCUENTO, :BANCO, :OBSERVACIONES, :TIPOCLIENTE, :ETIQUETADO, ');
|
|||
|
|
Add('CURRENT_TIME)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlModificar do
|
|||
|
|
begin
|
|||
|
|
Add('update CLIENTES set ');
|
|||
|
|
Add('NIFCIF = :NIFCIF, ');
|
|||
|
|
Add('NOMBRE = :NOMBRE, ');
|
|||
|
|
Add('CALLE = :CALLE, ');
|
|||
|
|
Add('NUMERO = :NUMERO, ');
|
|||
|
|
Add('PISO = :PISO, ');
|
|||
|
|
Add('CODIGOPOSTAL = :CODIGOPOSTAL, ');
|
|||
|
|
Add('POBLACION = :POBLACION, ');
|
|||
|
|
Add('PROVINCIA = :PROVINCIA, ');
|
|||
|
|
Add('TELEFONO1 = :TELEFONO1, ');
|
|||
|
|
Add('TELEFONO2 = :TELEFONO2, ');
|
|||
|
|
Add('FAX = :FAX, ');
|
|||
|
|
Add('CORREO = :CORREO, ');
|
|||
|
|
Add('PERSONACONTACTO = :PERSONACONTACTO, ');
|
|||
|
|
Add('IVA = :IVA, ');
|
|||
|
|
Add('DESCUENTO = :DESCUENTO, ');
|
|||
|
|
Add('BANCO = :BANCO, ');
|
|||
|
|
Add('OBSERVACIONES = :OBSERVACIONES, ');
|
|||
|
|
Add('TIPOCLIENTE = :TIPOCLIENTE, ');
|
|||
|
|
Add('ETIQUETADO = :ETIQUETADO, ');
|
|||
|
|
Add('ULTIMOCAMBIO = CURRENT_TIME ');
|
|||
|
|
Add('where CODIGO = :CODIGO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlEliminar do
|
|||
|
|
begin
|
|||
|
|
Add('delete from CLIENTES ');
|
|||
|
|
Add('where CODIGO = :CODIGO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlConsultar do
|
|||
|
|
begin
|
|||
|
|
Add('select * from CLIENTES ');
|
|||
|
|
Add('where CODIGO = :CODIGO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlGrid do
|
|||
|
|
begin
|
|||
|
|
Add('select CODIGO, ETIQUETADO, NIFCIF, NOMBRE, TELEFONO1, FAX, CORREO ');
|
|||
|
|
Add('from CLIENTES');
|
|||
|
|
Add('order by NOMBRE');
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.DarNuevoCodigo : String;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.DarNuevoCodigo(contClientes);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.IncrementarCodigo : boolean;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.IncrementarValor(contClientes);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.FormatearCodigo(Codigo : String) : String;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.FormatearCodigo(contClientes, Codigo);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TdmTablaClientes.Destroy;
|
|||
|
|
begin
|
|||
|
|
sqlInsertar.Free;
|
|||
|
|
sqlModificar.Free;
|
|||
|
|
sqlConsultar.Free;
|
|||
|
|
sqlEliminar.Free;
|
|||
|
|
sqlGrid.Free;
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.ValidarCodigo(Codigo: String): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.ValidarCodigo(contClientes, Codigo);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.ExisteCodigo(Codigo: String): Boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
Contador : String;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
|
|||
|
|
if EsCadenaVacia(Codigo) then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select CODIGO ');
|
|||
|
|
SQL.Add('from CLIENTES ');
|
|||
|
|
SQL.Add('where CODIGO = :CODIGO');
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Contador := Fields[0].AsString;
|
|||
|
|
Result := (Codigo = Contador);
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.DarDatosCliente(Cliente: TDatosCliente): Boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
|
|||
|
|
if EsCadenaVacia(Cliente.Codigo) then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select * from CLIENTES ');
|
|||
|
|
SQL.Add('where CODIGO = :CODIGO');
|
|||
|
|
ParamByName('CODIGO').AsString := Cliente.Codigo;
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
|
|||
|
|
// Compruebo si se han recuperado datos
|
|||
|
|
if (RecordCount > 0) then
|
|||
|
|
begin
|
|||
|
|
with Cliente do
|
|||
|
|
begin
|
|||
|
|
Nifcif := FieldByName('NIFCIF').AsString;
|
|||
|
|
Nombre := FieldByName('NOMBRE').AsString;
|
|||
|
|
Calle := FieldByName('CALLE').AsString;
|
|||
|
|
Numero := FieldByName('NUMERO').AsString;
|
|||
|
|
Piso := FieldByName('PISO').AsString;
|
|||
|
|
CodigoPostal := FieldByName('CODIGOPOSTAL').AsString;
|
|||
|
|
Poblacion := FieldByName('POBLACION').AsString;
|
|||
|
|
Provincia := FieldByName('PROVINCIA').AsString;
|
|||
|
|
Telefono1 := FieldByName('TELEFONO1').AsString;
|
|||
|
|
Telefono2 := FieldByName('TELEFONO2').AsString;
|
|||
|
|
Fax := FieldByName('FAX').AsString;
|
|||
|
|
Correo := FieldByName('CORREO').AsString;
|
|||
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|||
|
|
Banco := FieldByName('BANCO').AsString;
|
|||
|
|
Observaciones := FieldByName('OBSERVACIONES').AsString;
|
|||
|
|
TipoCliente := FieldByName('TIPOCLIENTE').AsString;
|
|||
|
|
Iva := FieldByName('IVA').AsString;
|
|||
|
|
Descuento := FieldByName('DESCUENTO').AsString;
|
|||
|
|
Result := True;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaClientes.InicializarGridClientes(var Grid: TdxDBGrid);
|
|||
|
|
var
|
|||
|
|
Columna : TdxDBTreeListColumn;
|
|||
|
|
begin
|
|||
|
|
with Grid do begin
|
|||
|
|
DestroyColumns;
|
|||
|
|
ShowSummaryFooter := True;
|
|||
|
|
{Columna ETIQUETADO}
|
|||
|
|
Columna := CreateColumn(TdxDBGridImageColumn);
|
|||
|
|
Columna.FieldName := 'ETIQUETADO';
|
|||
|
|
Columna.Caption := 'Etiquetado';
|
|||
|
|
Columna.Width := 2;
|
|||
|
|
{Columna CODIGO}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'CODIGO';
|
|||
|
|
Columna.Caption := 'C<>digo';
|
|||
|
|
Columna.Width := tamColCodigo;
|
|||
|
|
Columna.SummaryFooterType := cstCount;
|
|||
|
|
Columna.SummaryFooterFormat := 'Total: 0 clientes';
|
|||
|
|
{Columna NIFCIF}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'NIFCIF';
|
|||
|
|
Columna.Caption := 'NIF/CIF';
|
|||
|
|
Columna.Width := tamColNIFCIF;
|
|||
|
|
{Columna NOMBRE}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'NOMBRE';
|
|||
|
|
Columna.Caption := 'Nombre';
|
|||
|
|
Columna.Width := tamColNombre;
|
|||
|
|
{Columna TELEFONO 1}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'TELEFONO1';
|
|||
|
|
Columna.Caption := 'Tel<65>fono 1';
|
|||
|
|
Columna.Width := tamColTelefono;
|
|||
|
|
{Columna FAX}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.Visible := True;
|
|||
|
|
Columna.FieldName := 'FAX';
|
|||
|
|
Columna.Caption := 'Fax';
|
|||
|
|
Columna.Width := tamColTelefono;
|
|||
|
|
{Columna CORREO}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.Visible := True;
|
|||
|
|
Columna.FieldName := 'CORREO';
|
|||
|
|
Columna.Caption := 'Correo electr<74>nico';
|
|||
|
|
Columna.Width := tamColEMail;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.InsertarContador: boolean;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.InsertarContador(contClientes);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.DarClienteMax: String;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
Result := '';
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;;
|
|||
|
|
SQL.Add('select CODIGO ');
|
|||
|
|
SQL.Add('from CLIENTES ');
|
|||
|
|
SQL.Add('where NOMBRE = (select max(NOMBRE) from CLIENTES)');
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Result := Fields[0].AsString;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.DarClienteMin: String;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
Result := '';
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;;
|
|||
|
|
SQL.Add('select CODIGO ');
|
|||
|
|
SQL.Add('from CLIENTES ');
|
|||
|
|
SQL.Add('where NOMBRE = (select min(NOMBRE) from CLIENTES)');
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Result := Fields[0].AsString;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.etiquetarClientes(Codigos: TStringList; TipoOp: Integer): Boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
Cadena : String;
|
|||
|
|
i : Integer;
|
|||
|
|
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
|
|||
|
|
if Codigos.Count = 0 then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
//Preparamos la cadena para sql
|
|||
|
|
for i:=0 to Codigos.Count - 1 do
|
|||
|
|
begin
|
|||
|
|
if esCadenaVacia(Cadena) then
|
|||
|
|
Cadena := '''' + Codigos.Strings[i] + ''''
|
|||
|
|
else
|
|||
|
|
Cadena := Cadena + ', ''' + Codigos.Strings[i] + '''';
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
try
|
|||
|
|
SQL.Add('update CLIENTES ');
|
|||
|
|
if TipoOp = CTE_NOETIQUETAR
|
|||
|
|
then SQL.Add('set ETIQUETADO = 1 ')
|
|||
|
|
else SQL.Add('set ETIQUETADO = 0 ');
|
|||
|
|
SQL.Add('where CODIGO in (');
|
|||
|
|
SQL.Add(Cadena);
|
|||
|
|
SQL.Add(')');
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Result := True;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaClientes.DarCorreo(Codigo: String): String;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
Contador : String;
|
|||
|
|
begin
|
|||
|
|
Result := '';
|
|||
|
|
|
|||
|
|
if EsCadenaVacia(Codigo) then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select CORREO ');
|
|||
|
|
SQL.Add('from CLIENTES ');
|
|||
|
|
SQL.Add('where CODIGO = :CODIGO');
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Result := Fields[0].AsString;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
{ TDatosCliente }
|
|||
|
|
|
|||
|
|
constructor TDatosCliente.Create;
|
|||
|
|
begin
|
|||
|
|
inherited Create;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
constructor TDatosCliente.Create(CodigoCliente: String);
|
|||
|
|
begin
|
|||
|
|
inherited Create;
|
|||
|
|
Codigo := CodigoCliente;
|
|||
|
|
// Recuperar los datos
|
|||
|
|
ObtenerDatos;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TDatosCliente.ObtenerDatos;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
{ if EsCadenaVacia(Codigo) and EsCadenaVacia(Nombre) then
|
|||
|
|
raise Exception.Create(msgCliFaltaCli);}
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(NIL);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select * from CLIENTES ');
|
|||
|
|
if (not EsCadenaVacia(Codigo)) then
|
|||
|
|
begin
|
|||
|
|
SQL.Add('where CODIGO = :CODIGO');
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
end
|
|||
|
|
else begin
|
|||
|
|
SQL.Add('where NOMBRE = :NOMBRE');
|
|||
|
|
ParamByName('NOMBRE').AsString := Nombre;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
|
|||
|
|
// Compruebo si se han recuperado datos
|
|||
|
|
if (RecordCount > 0) then
|
|||
|
|
begin
|
|||
|
|
NIFCIF := FieldByName('NIFCIF').AsString;
|
|||
|
|
Nombre := FieldByName('NOMBRE').AsString;
|
|||
|
|
Observaciones := FieldByName('OBSERVACIONES').AsString;
|
|||
|
|
Calle := FieldByName('CALLE').AsString;
|
|||
|
|
Numero := FieldByName('NUMERO').AsString;
|
|||
|
|
Piso := FieldByName('PISO').AsString;
|
|||
|
|
CodigoPostal := FieldByName('CODIGOPOSTAL').AsString;
|
|||
|
|
Poblacion := FieldByName('POBLACION').AsString;
|
|||
|
|
Provincia := FieldByName('PROVINCIA').AsString;
|
|||
|
|
Telefono1 := FieldByName('TELEFONO1').AsString;
|
|||
|
|
Telefono2 := FieldByName('TELEFONO2').AsString;
|
|||
|
|
Fax := FieldByName('FAX').AsString;
|
|||
|
|
Correo := FieldByName('CORREO').AsString;
|
|||
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TDatosCliente.SalvarDatos;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
oSQL := TIBSQL.Create(NIL);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
|
|||
|
|
if EsCadenaVacia(Codigo) then
|
|||
|
|
begin
|
|||
|
|
Codigo := dmTablaClientes.DarNuevoCodigo;
|
|||
|
|
SQL.Assign(dmTablaClientes.sqlInsertar);
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
SQL.Assign(dmTablaClientes.sqlModificar);
|
|||
|
|
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
ParamByName('NIFCIF').AsString := NifCif;
|
|||
|
|
ParamByName('NOMBRE').AsString := Nombre;
|
|||
|
|
ParamByName('OBSERVACIONES').AsString := Observaciones;
|
|||
|
|
|
|||
|
|
ParamByName('CALLE').AsString := Calle;
|
|||
|
|
ParamByName('NUMERO').AsString := Numero;
|
|||
|
|
ParamByName('PISO').AsString := Piso;
|
|||
|
|
ParamByName('CODIGOPOSTAL').AsString := CodigoPostal;
|
|||
|
|
ParamByName('POBLACION').AsString := Poblacion;
|
|||
|
|
ParamByName('PROVINCIA').AsString := Provincia;
|
|||
|
|
ParamByName('TELEFONO1').AsString := Telefono1;
|
|||
|
|
ParamByName('TELEFONO2').AsString := Telefono2;
|
|||
|
|
ParamByName('FAX').AsString := Fax;
|
|||
|
|
ParamByName('CORREO').AsString := Correo;
|
|||
|
|
ParamByName('PERSONACONTACTO').AsString := PersonaContacto;
|
|||
|
|
ParamByName('BANCO').AsString := Banco;
|
|||
|
|
ParamByName('TIPOCLIENTE').AsString := TipoCliente;
|
|||
|
|
ParamByName('IVA').AsString := IVA;
|
|||
|
|
ParamByName('DESCUENTO').AsString := Descuento;
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
try
|
|||
|
|
ExecQuery;
|
|||
|
|
dmTablaClientes.IncrementarCodigo;
|
|||
|
|
except
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|