750 lines
24 KiB
ObjectPascal
750 lines
24 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.1.0
|
|||
|
|
Fecha versi<EFBFBD>n actual: 02-08-2004
|
|||
|
|
===============================================================================
|
|||
|
|
Modificaciones:
|
|||
|
|
|
|||
|
|
Fecha Comentarios
|
|||
|
|
---------------------------------------------------------------------------
|
|||
|
|
31-10-2001 Se han a<EFBFBD>adido los campos IMPORTEDESCUENTO e IMPORTEIVA.
|
|||
|
|
|
|||
|
|
01-11-2001 Se ha eliminado la columna FACTURADO por CODIGOFACTURA.
|
|||
|
|
|
|||
|
|
27-11-2001 En los detalles se ha a<EFBFBD>adido la columna 'Unid. medida'.
|
|||
|
|
|
|||
|
|
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 (TContadorAlbaranCliente)
|
|||
|
|
|
|||
|
|
16-11-2002 p250. Poner el n<EFBFBD>mero total de albaranes dados de alta
|
|||
|
|
en la inicializaci<EFBFBD>n del grid.
|
|||
|
|
|
|||
|
|
08-04-2003 P263. Agrupar por a<EFBFBD>os los albaranes, nueva funci<EFBFBD>n
|
|||
|
|
DarListaAnos.
|
|||
|
|
|
|||
|
|
06-03-2004 P272. Adaptaci<EFBFBD>n a multiempresa.
|
|||
|
|
|
|||
|
|
02-08-2004 P285. Modificada la funci<EFBFBD>n 'NoFacturarAlbaran'.
|
|||
|
|
===============================================================================
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unit TablaAlbaranesCliente;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|||
|
|
BaseDatos, Ibdatabase, dxDBGrid, Contadores;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TDatosAlbaranCliente = class(TPersistent)
|
|||
|
|
public
|
|||
|
|
CodigoEmpresa : integer;
|
|||
|
|
Codigo : string;
|
|||
|
|
FechaAlta : string;
|
|||
|
|
CodigoFactura : string;
|
|||
|
|
Usuario : string;
|
|||
|
|
CodigoCliente : string;
|
|||
|
|
NIFCIF : string;
|
|||
|
|
Nombre : string;
|
|||
|
|
Calle : string;
|
|||
|
|
Numero : string;
|
|||
|
|
Piso : string;
|
|||
|
|
CodigoPostal : string;
|
|||
|
|
Poblacion : string;
|
|||
|
|
Provincia : string;
|
|||
|
|
PersonaContacto : string;
|
|||
|
|
Telefono : string;
|
|||
|
|
Fax : string;
|
|||
|
|
BaseImponible : string;
|
|||
|
|
Descuento : string;
|
|||
|
|
IVA : string;
|
|||
|
|
ImporteTotal : string;
|
|||
|
|
Descripcion : string;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
TdmTablaAlbaranesCliente = class(TDataModule)
|
|||
|
|
private
|
|||
|
|
procedure IniciarSQLAlbaran;
|
|||
|
|
procedure IniciarSQLDetalles;
|
|||
|
|
procedure IniciarSQLGrids;
|
|||
|
|
public
|
|||
|
|
sqlInsertarAlbaran : TStrings;
|
|||
|
|
sqlModificarAlbaran : TStrings;
|
|||
|
|
sqlConsultarAlbaran : TStrings;
|
|||
|
|
sqlEliminarAlbaran : TStrings;
|
|||
|
|
sqlConsultarGridAlbaranes : TStrings;
|
|||
|
|
sqlConsultarGridAlbaranesCli : TStrings;
|
|||
|
|
sqlConsultarGridAlbaranesFacturar : TStrings;
|
|||
|
|
sqlInsertarDetalles : TStrings;
|
|||
|
|
sqlModificarDetalles : TStrings;
|
|||
|
|
sqlConsultarDetalles : TStrings;
|
|||
|
|
sqlEliminarDetalles : TStrings;
|
|||
|
|
sqlConsultarGridDetalles : 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 DarDatosAlbaran(Albaran : TDatosAlbaranCliente): Boolean;
|
|||
|
|
function ExisteCodigo(CodigoEmpresa: Integer; Codigo : String) : Boolean;
|
|||
|
|
function FacturarAlbaran(CodigoEmpresa: Integer; Codigo, CodigoFactura: String) : boolean;
|
|||
|
|
function NoFacturarAlbaran(CodigoEmpresa: Integer; Codigo: String) : boolean;
|
|||
|
|
function AlbaranFacturado (CodigoEmpresa: Integer; Codigo: String): boolean;
|
|||
|
|
procedure InicializarGridDetalles(var Grid: TdxDBGrid);
|
|||
|
|
procedure InicializarGridAlbaranes(var Grid: TdxDBGrid);
|
|||
|
|
procedure InicializarTablaAlbaranes(Tabla: TPTabla);
|
|||
|
|
procedure InicializarTablaDetalles(Tabla: TPTabla);
|
|||
|
|
constructor Create (AOwner : TComponent); override;
|
|||
|
|
destructor Destroy; override;
|
|||
|
|
function DarListaAnos(CodigoEmpresa: Integer): TStringList;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
var
|
|||
|
|
dmTablaAlbaranesCliente: TdmTablaAlbaranesCliente;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$R *.DFM}
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
IBSQL, Mensajes, StrFunc, IB, DB, Excepciones,
|
|||
|
|
TablaUnidadesMedida, dxDBCtrl, dxDBTLCL, IBCustomDataSet, dxTL, Constantes,
|
|||
|
|
Literales, RdxGestorContadores;
|
|||
|
|
|
|||
|
|
{ TdmTablaAlbaranesCliente }
|
|||
|
|
|
|||
|
|
constructor TdmTablaAlbaranesCliente.Create(AOwner: TComponent);
|
|||
|
|
begin
|
|||
|
|
inherited;
|
|||
|
|
{ Cabecera }
|
|||
|
|
sqlInsertarAlbaran := TStringList.Create;
|
|||
|
|
sqlModificarAlbaran := TStringList.Create;
|
|||
|
|
sqlConsultarAlbaran := TStringList.Create;
|
|||
|
|
sqlEliminarAlbaran := TStringList.Create;
|
|||
|
|
|
|||
|
|
{ Detalles }
|
|||
|
|
sqlInsertarDetalles := TStringList.Create;
|
|||
|
|
sqlModificarDetalles := TStringList.Create;
|
|||
|
|
sqlConsultarDetalles := TStringList.Create;
|
|||
|
|
sqlEliminarDetalles := TStringList.Create;
|
|||
|
|
sqlConsultarGridDetalles := TStringList.Create;
|
|||
|
|
|
|||
|
|
{ Grids }
|
|||
|
|
sqlConsultarGridAlbaranes := TStringList.Create;
|
|||
|
|
sqlConsultarGridAlbaranesCli := TStringList.Create;
|
|||
|
|
sqlConsultarGridAlbaranesFacturar := TStringList.Create;
|
|||
|
|
|
|||
|
|
IniciarSQLAlbaran;
|
|||
|
|
IniciarSQLDetalles;
|
|||
|
|
IniciarSQLGrids;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
destructor TdmTablaAlbaranesCliente.Destroy;
|
|||
|
|
begin
|
|||
|
|
{ Cabecera }
|
|||
|
|
sqlInsertarAlbaran.Free;
|
|||
|
|
sqlModificarAlbaran.Free;
|
|||
|
|
sqlConsultarAlbaran.Free;
|
|||
|
|
sqlEliminarAlbaran.Free;
|
|||
|
|
|
|||
|
|
{ Detalles }
|
|||
|
|
sqlInsertarDetalles.Free;
|
|||
|
|
sqlModificarDetalles.Free;
|
|||
|
|
sqlConsultarDetalles.Free;
|
|||
|
|
sqlEliminarDetalles.Free;
|
|||
|
|
sqlConsultarGridDetalles.Free;
|
|||
|
|
|
|||
|
|
{ Grids }
|
|||
|
|
sqlConsultarGridAlbaranes.Free;
|
|||
|
|
sqlConsultarGridAlbaranesCli.Free;
|
|||
|
|
sqlConsultarGridAlbaranesFacturar.Free;
|
|||
|
|
inherited;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.AlbaranFacturado(CodigoEmpresa: Integer;
|
|||
|
|
Codigo: String): boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select CODIGOFACTURA ');
|
|||
|
|
SQL.Add('from ALBARANESCLIENTE ');
|
|||
|
|
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|||
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Result := not EsCadenaVacia(FieldByName('CODIGOFACTURA').AsString);
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.DarDatosAlbaran(
|
|||
|
|
Albaran: TDatosAlbaranCliente): Boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
if EsCadenaVacia(Albaran.Codigo) then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select * from ALBARANESCLIENTE ');
|
|||
|
|
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|||
|
|
ParamByName('CODIGOEMPRESA').AsInteger := Albaran.CodigoEmpresa;
|
|||
|
|
ParamByName('CODIGO').AsString := Albaran.Codigo;
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
//Compruebo que el codigo de albar<61>n existe. Si no existe, devuelvo false
|
|||
|
|
if (RecordCount > 0) then
|
|||
|
|
begin
|
|||
|
|
with Albaran do
|
|||
|
|
begin
|
|||
|
|
FechaAlta := FieldByName('FECHAALTA').AsString;
|
|||
|
|
Usuario:= FieldByName('USUARIO').AsString;
|
|||
|
|
CodigoCliente := FieldByName('CODIGOCLIENTE').AsString;
|
|||
|
|
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;
|
|||
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|||
|
|
Telefono := FieldByName('TELEFONO').AsString;
|
|||
|
|
Fax := FieldByName('FAX').AsString;
|
|||
|
|
BaseImponible := FieldByName('BASEIMPONIBLE').AsString;
|
|||
|
|
Descuento := FieldByName('DESCUENTO').AsString;
|
|||
|
|
IVA := FieldByName('IVA').AsString;
|
|||
|
|
ImporteTotal := FieldByName('IMPORTETOTAL').AsString;
|
|||
|
|
Descripcion := FieldByName('DESCRIPCION').AsString;
|
|||
|
|
CodigoFactura := FieldByName('CODIGOFACTURA').AsString;
|
|||
|
|
Result := True;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.DarNuevoCodigo: String;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.DarNuevoCodigo(contAlbaranesCliente);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.ExisteCodigo(CodigoEmpresa: Integer; Codigo: String): Boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
Contador : String;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
oSQL.Database := dmBaseDatos.BD;
|
|||
|
|
oSQL.Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
oSQL.SQL.Add('select CODIGO ');
|
|||
|
|
oSQL.SQL.Add('from ALBARANESCLIENTE ');
|
|||
|
|
oSQL.SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Contador := Fields[0].AsString;
|
|||
|
|
Result := (Codigo = Contador);
|
|||
|
|
end;
|
|||
|
|
except
|
|||
|
|
on E : EIBError do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
on E : Exception do
|
|||
|
|
TratarExcepcion(E);
|
|||
|
|
end;
|
|||
|
|
oSQL.Close;
|
|||
|
|
oSQL.Transaction := NIL;
|
|||
|
|
oSQL.Free;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.FacturarAlbaran(CodigoEmpresa: Integer;
|
|||
|
|
Codigo, CodigoFactura: String) : boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
Result := False;
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('update ALBARANESCLIENTE set ');
|
|||
|
|
SQL.Add('CODIGOFACTURA = :CODIGOFACTURA');
|
|||
|
|
SQL.Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
SQL.Add('and (CODIGOFACTURA is NULL)');
|
|||
|
|
|
|||
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
ParamByName('CODIGOFACTURA').AsString := CodigoFactura;
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
if RowsAffected = 0 then
|
|||
|
|
raise Exception.CreateFmt(msgAlbYaFacturado, [Codigo])
|
|||
|
|
else
|
|||
|
|
Result := True;
|
|||
|
|
{ No hay que tocar la transacci<EFBFBD>n para que sigua la
|
|||
|
|
ejecuci<EFBFBD>n por la funci<EFBFBD>n que ha llamado a esta. }
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.FormatearCodigo(Codigo: String): String;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.FormatearCodigo(contAlbaranesCliente, Codigo);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.IncrementarCodigo: boolean;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.IncrementarValor(contAlbaranesCliente);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.InicializarGridAlbaranes(var Grid: TdxDBGrid);
|
|||
|
|
var
|
|||
|
|
Columna : TdxDBTreeListColumn;
|
|||
|
|
begin
|
|||
|
|
with Grid do begin
|
|||
|
|
DestroyColumns;
|
|||
|
|
ShowSummaryFooter := True;
|
|||
|
|
{Columna CODIGO}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'CODIGO';
|
|||
|
|
Columna.Caption := 'C<>digo';
|
|||
|
|
Columna.Width := tamColCodigo;
|
|||
|
|
Columna.Sorted := csDown;
|
|||
|
|
Columna.SummaryFooterType := cstCount;
|
|||
|
|
Columna.SummaryFooterFormat := 'Total: 0 albaranes';
|
|||
|
|
|
|||
|
|
{Columna ANO}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'ANO';
|
|||
|
|
Columna.Caption := 'A<>o';
|
|||
|
|
Columna.Width := tamColFecha;
|
|||
|
|
Columna.Visible := False;
|
|||
|
|
|
|||
|
|
{Columna FECHAALTA}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'FECHAALTA';
|
|||
|
|
Columna.Caption := 'Fecha alta';
|
|||
|
|
Columna.Width := tamColFecha;
|
|||
|
|
{Columna CODIGOCLIENTE}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'CODIGOCLIENTE';
|
|||
|
|
Columna.Caption := 'C<>d. cliente';
|
|||
|
|
Columna.Width := tamColCodigo;
|
|||
|
|
{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 IMPORTETOTAL}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'IMPORTETOTAL';
|
|||
|
|
Columna.Caption := 'Importe total';
|
|||
|
|
Columna.Width := tamColPrecio;
|
|||
|
|
{Columna CODIGOFACTURA}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'CODIGOFACTURA';
|
|||
|
|
Columna.Caption := 'C<>d. factura';
|
|||
|
|
Columna.Width := tamColCodigo;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.InicializarGridDetalles(var Grid: TdxDBGrid);
|
|||
|
|
var
|
|||
|
|
Columna : TdxDBTreeListColumn;
|
|||
|
|
begin
|
|||
|
|
with Grid do begin
|
|||
|
|
DestroyColumns;
|
|||
|
|
{Columna CODIGOALBARAN}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.Visible := False;
|
|||
|
|
Columna.FieldName := 'CODIGOALBARAN';
|
|||
|
|
{Columna NUMCONCEPTO}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.Visible := False;
|
|||
|
|
Columna.FieldName := 'NUMCONCEPTO';
|
|||
|
|
{Columna CODIGOARTICULO}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListButtonColumn);
|
|||
|
|
Columna.FieldName := 'CODIGOARTICULO';
|
|||
|
|
Columna.Caption := 'C<>d. material';
|
|||
|
|
Columna.Width := tamColCodigo;
|
|||
|
|
{Columna DESCRIPCION}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListButtonColumn);
|
|||
|
|
Columna.FieldName := 'DESCRIPCION';
|
|||
|
|
Columna.Caption := 'Descripci<63>n';
|
|||
|
|
Columna.Width := tamColDescripcion;
|
|||
|
|
{Columna CANTIDAD}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'CANTIDAD';
|
|||
|
|
Columna.Caption := 'Cantidad';
|
|||
|
|
Columna.Width := tamColCantidad;
|
|||
|
|
{Columna UNIDADESMEDIDA}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListPickColumn);
|
|||
|
|
Columna.FieldName := 'UNIDADESMEDIDA';
|
|||
|
|
Columna.Caption := 'Unid. medida';
|
|||
|
|
(Columna as TdxDBTreeListPickColumn).Items := dmTablaUnidadesMedida.DarUnidadesMedida;
|
|||
|
|
Columna.Width := tamColUnidadesMedida;
|
|||
|
|
{Columna PRECIOUNIDAD}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'PRECIOUNIDAD';
|
|||
|
|
Columna.Caption := 'Precio unidad';
|
|||
|
|
Columna.Width := tamColPrecio;
|
|||
|
|
{Columna TOTAL}
|
|||
|
|
Columna := CreateColumn(TdxDBTreeListColumn);
|
|||
|
|
Columna.FieldName := 'TOTAL';
|
|||
|
|
Columna.ReadOnly := True;
|
|||
|
|
Columna.Caption := 'Precio total';
|
|||
|
|
Columna.Width := tamColPrecio;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.InicializarTablaAlbaranes(
|
|||
|
|
Tabla: TPTabla);
|
|||
|
|
begin
|
|||
|
|
with Tabla^.Fields do
|
|||
|
|
begin
|
|||
|
|
if FindField('FECHAALTA') <> NIL then
|
|||
|
|
with (FieldByName('FECHAALTA') as TDateField) do begin
|
|||
|
|
EditMask := MASK_FECHA;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if FindField('BASEIMPONIBLE') <> NIL then
|
|||
|
|
//with (FieldByName('BASEIMPONIBLE') as TFloatField) do begin
|
|||
|
|
with (FieldByName('BASEIMPONIBLE') as TIBBCDField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|||
|
|
EditFormat := EDIT_EUROS2;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if FindField('DESCUENTO') <> NIL then
|
|||
|
|
with (FieldByName('DESCUENTO') as TFloatField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_DTO;
|
|||
|
|
EditFormat := EDIT_DTO;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if FindField('IMPORTEDESCUENTO') <> NIL then
|
|||
|
|
//with (FieldByName('IMPORTEDESCUENTO') as TFloatField) do begin
|
|||
|
|
with (FieldByName('IMPORTEDESCUENTO') as TIBBCDField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|||
|
|
EditFormat := EDIT_EUROS2;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if FindField('IVA') <> NIL then
|
|||
|
|
with (FieldByName('IVA') as TFloatField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_DTO;
|
|||
|
|
EditFormat := EDIT_DTO;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if FindField('IMPORTEIVA') <> NIL then
|
|||
|
|
//with (FieldByName('IMPORTEIVA') as TFloatField) do begin
|
|||
|
|
with (FieldByName('IMPORTEIVA') as TIBBCDField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|||
|
|
EditFormat := EDIT_EUROS2;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
if FindField('IMPORTETOTAL') <> NIL then
|
|||
|
|
//with (FieldByName('IMPORTETOTAL') as TFloatField) do begin
|
|||
|
|
with (FieldByName('IMPORTETOTAL') as TIBBCDField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|||
|
|
EditFormat := EDIT_EUROS2;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.InicializarTablaDetalles(
|
|||
|
|
Tabla: TPTabla);
|
|||
|
|
begin
|
|||
|
|
with Tabla^.Fields do
|
|||
|
|
begin
|
|||
|
|
with (FieldByName('PRECIOUNIDAD') as TFloatField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|||
|
|
EditFormat := EDIT_EUROS2;
|
|||
|
|
end;
|
|||
|
|
with (FieldByName('TOTAL') as TFloatField) do begin
|
|||
|
|
DisplayFormat := DISPLAY_EUROS2;
|
|||
|
|
EditFormat := EDIT_EUROS2;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.IniciarSQLAlbaran;
|
|||
|
|
begin
|
|||
|
|
with sqlInsertarAlbaran do
|
|||
|
|
begin
|
|||
|
|
Add('insert into ALBARANESCLIENTE ');
|
|||
|
|
Add('(CODIGOEMPRESA, CODIGO, FECHAALTA, USUARIO, DESCRIPCION, ');
|
|||
|
|
Add('CODIGOCLIENTE, NIFCIF, NOMBRE, CALLE, NUMERO, PISO, CODIGOPOSTAL, ');
|
|||
|
|
Add('POBLACION, PROVINCIA, PERSONACONTACTO, TELEFONO, FAX, ');
|
|||
|
|
Add('BASEIMPONIBLE, DESCUENTO, IVA, IMPORTETOTAL, IMPORTEDESCUENTO, ');
|
|||
|
|
Add('IMPORTEIVA)' );
|
|||
|
|
Add('values (:CODIGOEMPRESA, :CODIGO, :FECHAALTA, :USUARIO, ');
|
|||
|
|
Add(':DESCRIPCION, :CODIGOCLIENTE, :NIFCIF, :NOMBRE, :CALLE, :NUMERO, ');
|
|||
|
|
Add(':PISO, :CODIGOPOSTAL, :POBLACION, :PROVINCIA, ');
|
|||
|
|
Add(':PERSONACONTACTO, :TELEFONO, :FAX, :BASEIMPONIBLE, ');
|
|||
|
|
Add(':DESCUENTO, :IVA, :IMPORTETOTAL, :IMPORTEDESCUENTO, :IMPORTEIVA)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlModificarAlbaran do
|
|||
|
|
begin
|
|||
|
|
Add('update ALBARANESCLIENTE set ');
|
|||
|
|
Add('FECHAALTA = :FECHAALTA, ');
|
|||
|
|
Add('USUARIO = :USUARIO, ');
|
|||
|
|
Add('DESCRIPCION = :DESCRIPCION, ');
|
|||
|
|
Add('CODIGOCLIENTE = :CODIGOCLIENTE, ');
|
|||
|
|
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('PERSONACONTACTO = :PERSONACONTACTO, ');
|
|||
|
|
Add('TELEFONO = :TELEFONO, ');
|
|||
|
|
Add('FAX = :FAX, ');
|
|||
|
|
Add('BASEIMPONIBLE = :BASEIMPONIBLE, ');
|
|||
|
|
Add('DESCUENTO = :DESCUENTO, ');
|
|||
|
|
Add('IMPORTEDESCUENTO = :IMPORTEDESCUENTO, ');
|
|||
|
|
Add('IVA = :IVA, ');
|
|||
|
|
Add('IMPORTEIVA = :IMPORTEIVA, ');
|
|||
|
|
Add('IMPORTETOTAL = :IMPORTETOTAL ');
|
|||
|
|
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlEliminarAlbaran do
|
|||
|
|
begin
|
|||
|
|
Add('delete from ALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlConsultarAlbaran do
|
|||
|
|
begin
|
|||
|
|
Add('select * from ALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGO = :CODIGO) and (CODIGOEMPRESA = :CODIGOEMPRESA)');
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.IniciarSQLDetalles;
|
|||
|
|
begin
|
|||
|
|
with sqlInsertarDetalles do
|
|||
|
|
begin
|
|||
|
|
Add('insert into DETALLESALBARANESCLIENTE ');
|
|||
|
|
Add('(CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, DESCRIPCION, ');
|
|||
|
|
Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL) ');
|
|||
|
|
Add('values (:CODIGOEMPRESA, :CODIGOALBARAN, :NUMCONCEPTO, :CODIGOARTICULO, ');
|
|||
|
|
Add(':DESCRIPCION, :CANTIDAD, :UNIDADESMEDIDA, :PRECIOUNIDAD, :TOTAL)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlModificarDetalles do
|
|||
|
|
begin
|
|||
|
|
Add('update DETALLESALBARANESCLIENTE set ');
|
|||
|
|
Add('NUMCONCEPTO = :NUMCONCEPTO, ');
|
|||
|
|
Add('CODIGOARTICULO = :CODIGOARTICULO, ');
|
|||
|
|
Add('DESCRIPCION = :DESCRIPCION, ');
|
|||
|
|
Add('CANTIDAD = :CANTIDAD, ');
|
|||
|
|
Add('UNIDADESMEDIDA = :UNIDADESMEDIDA, ');
|
|||
|
|
Add('PRECIOUNIDAD = :PRECIOUNIDAD, ');
|
|||
|
|
Add('TOTAL = :TOTAL ');
|
|||
|
|
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
|
|||
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlEliminarDetalles do
|
|||
|
|
begin
|
|||
|
|
Add('delete from DETALLESALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
|
|||
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlConsultarDetalles do
|
|||
|
|
begin
|
|||
|
|
Add('select CODIGOALBARAN, NUMCONCEPTO, CODIGOARTICULO, ');
|
|||
|
|
Add('DESCRIPCION, CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL ');
|
|||
|
|
Add('from DETALLESALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
|
|||
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('and (NUMCONCEPTO = :NUMCONCEPTO)');
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TdmTablaAlbaranesCliente.IniciarSQLGrids;
|
|||
|
|
begin
|
|||
|
|
with sqlConsultarGridAlbaranes do
|
|||
|
|
begin
|
|||
|
|
Add('select CODIGO, FECHAALTA, CODIGOCLIENTE, NIFCIF, ');
|
|||
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|||
|
|
Add('NOMBRE, IMPORTETOTAL, CODIGOFACTURA');
|
|||
|
|
Add('from ALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('order by CODIGO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlConsultarGridAlbaranesCli do
|
|||
|
|
begin
|
|||
|
|
Add('select CODIGO, FECHAALTA, CODIGOCLIENTE, NIFCIF, ');
|
|||
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|||
|
|
Add('NOMBRE, IMPORTETOTAL, CODIGOFACTURA');
|
|||
|
|
Add('from ALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGOCLIENTE = :CODIGOCLIENTE) ');
|
|||
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('order by CODIGO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlConsultarGridAlbaranesFacturar do
|
|||
|
|
begin
|
|||
|
|
Add('select CODIGO, FECHAALTA, CODIGOCLIENTE, NIFCIF, ');
|
|||
|
|
Add('EXTRACT (YEAR FROM FECHAALTA) as ANO, ');
|
|||
|
|
Add('NOMBRE, IMPORTETOTAL, CODIGOFACTURA');
|
|||
|
|
Add('from ALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGOFACTURA is NULL) ');
|
|||
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('order by CODIGO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
with sqlConsultarGridDetalles do
|
|||
|
|
begin
|
|||
|
|
Add('select CODIGOEMPRESA, CODIGOALBARAN, NUMCONCEPTO, ');
|
|||
|
|
Add('CODIGOARTICULO, DESCRIPCION, ');
|
|||
|
|
Add('CANTIDAD, UNIDADESMEDIDA, PRECIOUNIDAD, TOTAL ');
|
|||
|
|
Add('from DETALLESALBARANESCLIENTE ');
|
|||
|
|
Add('where (CODIGOALBARAN = :CODIGOALBARAN) ');
|
|||
|
|
Add('and (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
Add('order by NUMCONCEPTO');
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.InsertarContador: boolean;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.InsertarContador(contAlbaranesCliente);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.NoFacturarAlbaran(CodigoEmpresa: Integer;
|
|||
|
|
Codigo: String): boolean;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
begin
|
|||
|
|
{ Con la adaptaci<EFBFBD>n a multiempresa, esto hay que hacerlo por c<EFBFBD>digo
|
|||
|
|
por que si se hace por integridad referencial, la BD pone NULL en
|
|||
|
|
CODIGOFACTURA y en CODIGOEMPRESA (eso est<EFBFBD> mal) }
|
|||
|
|
Result := False;
|
|||
|
|
if (Length(Trim(Codigo)) = 0) then
|
|||
|
|
Exit;
|
|||
|
|
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('update ALBARANESCLIENTE set ');
|
|||
|
|
SQL.Add('CODIGOFACTURA = NULL');
|
|||
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) and (CODIGO = :CODIGO) ');
|
|||
|
|
ParamByName('CODIGO').AsString := Codigo;
|
|||
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Result := True;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.ValidarCodigo(Codigo: String): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := GestorContadores.ValidarCodigo(contAlbaranesCliente, Codigo);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function TdmTablaAlbaranesCliente.DarListaAnos(CodigoEmpresa: Integer): TStringList;
|
|||
|
|
var
|
|||
|
|
oSQL : TIBSQL;
|
|||
|
|
Lista : TStringList;
|
|||
|
|
begin
|
|||
|
|
Lista := TStringList.Create;
|
|||
|
|
oSQL := TIBSQL.Create(Self);
|
|||
|
|
with oSQL do
|
|||
|
|
begin
|
|||
|
|
Database := dmBaseDatos.BD;
|
|||
|
|
Transaction := dmBaseDatos.Transaccion;
|
|||
|
|
SQL.Add('select distinct (EXTRACT (YEAR FROM FECHAALTA)) ANO ');
|
|||
|
|
SQL.Add('from ALBARANESCLIENTE ');
|
|||
|
|
SQL.Add('where (CODIGOEMPRESA = :CODIGOEMPRESA) ');
|
|||
|
|
SQL.Add('order by FECHAALTA desc');
|
|||
|
|
ParamByName('CODIGOEMPRESA').AsInteger := CodigoEmpresa;
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
Prepare;
|
|||
|
|
ExecQuery;
|
|||
|
|
Lista.Add(CTE_TODOS);
|
|||
|
|
while not EOF do begin
|
|||
|
|
Lista.Add(Fields[0].AsString);
|
|||
|
|
Next;
|
|||
|
|
end;
|
|||
|
|
result := Lista;
|
|||
|
|
finally
|
|||
|
|
Close;
|
|||
|
|
Transaction := NIL;
|
|||
|
|
Free;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|