git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
549 lines
15 KiB
ObjectPascal
549 lines
15 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2005. 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: 08-06-2005
|
|
Versión actual: 1.0.0
|
|
Fecha versión actual: 08-06-2005
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
===============================================================================
|
|
}
|
|
|
|
unit TablaObrasPedidos;
|
|
|
|
interface
|
|
|
|
uses
|
|
//Generales
|
|
SysUtils, Classes, Controls, IBSQL, cxGridDBTableView, cxCustomData, DB,
|
|
//Particulares
|
|
Contnrs,
|
|
|
|
//Aplicacion
|
|
Framework, StrFunc, Entidades, Constantes, BaseDatos,
|
|
|
|
//Contador
|
|
Contadores, RdxGestorContadores;
|
|
|
|
type
|
|
TDatosPedido = class(TObjeto)
|
|
public
|
|
CodigoContrato : String;
|
|
Codigo : String;
|
|
FechaAlta : String;
|
|
Usuario : String;
|
|
Referencia : String;
|
|
Descripcion : String;
|
|
CodigoProv : String;
|
|
NombreProv : String;
|
|
Telefono1 : String;
|
|
Telefono2 : String;
|
|
Movil1 : String;
|
|
Movil2 : String;
|
|
Fax : String;
|
|
Correo : String;
|
|
PersonaContacto : String;
|
|
|
|
constructor Create; overload;
|
|
constructor Create(CodigoObra, Codigo : String); overload;
|
|
procedure ObtenerDatos; override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
TListaPedidos = class(TPersistent)
|
|
private
|
|
FLista : TObjectList;
|
|
FCodigoContrato : String;
|
|
function GetCount : Integer;
|
|
function GetPedido(Index: Integer): TDatosPedido;
|
|
protected
|
|
procedure ObtenerLista; virtual;
|
|
public
|
|
constructor Create(CodigoContrato : String);
|
|
destructor Destroy; override;
|
|
property Count : Integer read GetCount;
|
|
property Pedido[Index: Integer] : TDatosPedido read GetPedido;
|
|
end;
|
|
|
|
|
|
type
|
|
TdmTablaObrasPedidos = class(TDataModule)
|
|
private
|
|
procedure IniciarSQL;
|
|
public
|
|
sqlInsertar : TStrings;
|
|
sqlModificar : TStrings;
|
|
sqlConsultar : TStrings;
|
|
sqlEliminar : TStrings;
|
|
sqlGrid : TStrings;
|
|
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
function DarListaPedidos(CodigoContrato: Variant): TListaPedidos;
|
|
|
|
|
|
|
|
|
|
procedure InicializarGridObras(var vGrid: TcxGridDBTableView);
|
|
function ExisteCodigo(Codigo : String) : Boolean;
|
|
function DarCodCliMin : String;
|
|
function DarCodCliMax : String;
|
|
function DarNombreCliMin : String;
|
|
function DarNombreCliMax : String;
|
|
end;
|
|
|
|
var
|
|
dmTablaObrasPedidos: TdmTablaObrasPedidos;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
IBErrorCodes, IB, Literales, Mensajes, Excepciones;
|
|
|
|
constructor TdmTablaObrasPedidos.Create (AOwner : TComponent);
|
|
begin
|
|
inherited;
|
|
sqlInsertar := TStringList.Create;
|
|
sqlModificar := TStringList.Create;
|
|
sqlConsultar := TStringList.Create;
|
|
sqlEliminar := TStringList.Create;
|
|
sqlGrid := TStringList.Create;
|
|
IniciarSQL;
|
|
end;
|
|
|
|
destructor TdmTablaObrasPedidos.Destroy;
|
|
begin
|
|
sqlInsertar.Free;
|
|
sqlModificar.Free;
|
|
sqlConsultar.Free;
|
|
sqlEliminar.Free;
|
|
sqlGrid.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TdmTablaObrasPedidos.IniciarSQL;
|
|
begin
|
|
with sqlInsertar do
|
|
begin
|
|
Add('INSERT INTO OBRASPEDIDOS (');
|
|
Add('CODIGOCONTRATO, CODIGO, FECHAALTA, ');
|
|
Add('USUARIO, DESCRIPCION, REFERENCIA, CODIGOPROV, NOMBREPROV, ');
|
|
Add('TELEFONO1, TELEFONO2, MOVIL1, MOVIL2, FAX, CORREO, PERSONACONTACTO)');
|
|
Add('VALUES (:CODIGOCONTRATO, :CODIGO,');
|
|
Add(':FECHAALTA, :USUARIO, :DESCRIPCION, :REFERENCIA, :CODIGOPROV, :NOMBREPROV, ');
|
|
Add(':TELEFONO1, :TELEFONO2, :MOVIL1, :MOVIL2, :FAX, :CORREO, :PERSONACONTACTO)');
|
|
end;
|
|
|
|
with sqlModificar do
|
|
begin
|
|
Add('UPDATE OBRASPEDIDOS SET');
|
|
Add('DESCRIPCION = :DESCRIPCION,');
|
|
Add('REFERENCIA = :REFERENCIA,');
|
|
Add('CODIGOPROV = :CODIGOPROV,');
|
|
Add('NOMBREPROV = :NOMBREPROV,');
|
|
Add('TELEFONO1 = :TELEFONO1,');
|
|
Add('TELEFONO2 = :TELEFONO2,');
|
|
Add('MOVIL1 = :MOVIL1,');
|
|
Add('MOVIL2 = :MOVIL2,');
|
|
Add('FAX = :FAX,');
|
|
Add('CORREO = :CORREO,');
|
|
Add('PERSONACONTACTO = :PERSONACONTACTO');
|
|
Add('WHERE (CODIGOCONTRATO = :CODIGOCONTRATO) AND ');
|
|
Add('(CODIGO = :CODIGO)');
|
|
end;
|
|
|
|
with sqlEliminar do
|
|
begin
|
|
Add('delete from OBRASPEDIDOS ');
|
|
Add('WHERE (CODIGOCONTRATO = :CODIGOCONTRATO) AND ');
|
|
Add('(CODIGO = :CODIGO)');
|
|
end;
|
|
|
|
with sqlConsultar do
|
|
begin
|
|
Add('select CODIGOCONTRATO, CODIGO, FECHAALTA, ');
|
|
Add('USUARIO, DESCRIPCION, REFERENCIA, CODIGOPROV, NOMBREPROV, ');
|
|
Add('TELEFONO1, TELEFONO2, MOVIL1, MOVIL2, FAX, CORREO, PERSONACONTACTO');
|
|
Add('from OBRASPEDIDOS');
|
|
Add('WHERE (CODIGOCONTRATO = :CODIGOCONTRATO) AND ');
|
|
Add('(CODIGO = :CODIGO)');
|
|
end;
|
|
|
|
with sqlGrid do
|
|
begin
|
|
Add('select CODIGOCONTRATO, CODIGO, FECHAALTA, ');
|
|
Add('USUARIO, DESCRIPCION, REFERENCIA, CODIGOPROV, NOMBREPROV, ');
|
|
Add('TELEFONO1, TELEFONO2, MOVIL1, MOVIL2, FAX, CORREO, PERSONACONTACTO');
|
|
Add('from OBRASPEDIDOS');
|
|
Add('WHERE (CODIGOCONTRATO = :CODIGOCONTRATO)');
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaObrasPedidos.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;
|
|
|
|
procedure TdmTablaObrasPedidos.InicializarGridObras (var vGrid: TcxGridDBTableView);
|
|
var
|
|
Columna : TcxGridDBColumn;
|
|
begin
|
|
with vGrid do begin
|
|
OptionsView.Footer := True;
|
|
|
|
{Columna CODIGOCONTRATO}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'CODIGOCONTRATO';
|
|
Columna.Caption := 'Código';
|
|
Columna.Width := tamColCodigo;
|
|
Columna.Options.Filtering := False;
|
|
|
|
with TcxGridDBTableSummaryItem(DataController.Summary.FooterSummaryItems.Add) do
|
|
try
|
|
try
|
|
BeginUpdate;
|
|
Column := Columna;
|
|
FieldName := Columna.DataBinding.FieldName;
|
|
Format := 'Total: 0 obras';
|
|
Kind := skCount;
|
|
finally
|
|
EndUpdate;
|
|
end;
|
|
except
|
|
DataController.Summary.FooterSummaryItems.Delete(DataController.Summary.FooterSummaryItems.Count-1);
|
|
end;
|
|
|
|
{Columna NOMBRE}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'NOMBRE';
|
|
Columna.Caption := 'Nombre';
|
|
Columna.Width := tamColNombre;
|
|
Columna.Options.Filtering := False;
|
|
Columna.SortOrder := soAscending;
|
|
{Columna TELEFONO 1}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'TELEFONO1';
|
|
Columna.Caption := 'Teléfono 1';
|
|
Columna.Width := tamColTelefono;
|
|
Columna.Options.Filtering := False;
|
|
{Columna MOVIL 1}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'MOVIL1';
|
|
Columna.Caption := 'Móvil 1';
|
|
Columna.Width := tamColTelefono;
|
|
Columna.Options.Filtering := False;
|
|
{Columna FAX}
|
|
Columna := CreateColumn;
|
|
Columna.DataBinding.FieldName := 'FAX';
|
|
Columna.Caption := 'Fax';
|
|
Columna.Width := tamColTelefono;
|
|
Columna.Options.Filtering := False;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaObrasPedidos.DarCodCliMax: String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '';
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select max(CODIGO) ');
|
|
SQL.Add('from CLIENTES ');
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaObrasPedidos.DarCodCliMin: String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '';
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select min(CODIGO) ');
|
|
SQL.Add('from CLIENTES ');
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
{ TDatosPedido }
|
|
|
|
constructor TDatosPedido.Create(CodigoObra, Codigo: String);
|
|
begin
|
|
inherited Create;
|
|
CodigoContrato := CodigoObra;
|
|
Codigo := Codigo;
|
|
// Recuperar los datos
|
|
ObtenerDatos;
|
|
end;
|
|
|
|
constructor TDatosPedido.Create;
|
|
begin
|
|
inherited Create;
|
|
end;
|
|
|
|
destructor TDatosPedido.Destroy;
|
|
begin
|
|
inherited;
|
|
end;
|
|
|
|
procedure TDatosPedido.ObtenerDatos;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
if EsCadenaVacia(CodigoContrato) and EsCadenaVacia(Codigo) then
|
|
raise Exception.Create(msgObrFaltaObr);
|
|
|
|
oSQL := TIBSQL.Create(NIL);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGOCONTRATO, CODIGO, FECHAALTA, USUARIO,');
|
|
SQL.Add('DESCRIPCION, REFERENCIA, CODIGOPROV, NOMBREPROV,');
|
|
SQL.Add('TELEFONO1, TELEFONO2, MOVIL1, MOVIL2, FAX,');
|
|
SQL.Add('CORREO, PERSONACONTACTO');
|
|
SQL.Add('from OBRASPEDIDOS');
|
|
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO');
|
|
SQL.Add('and CODIGO = :CODIGO');
|
|
ParamByName('CODIGOCONTRATO').AsString := CodigoContrato;
|
|
ParamByName('CODIGO').AsString := CODIGO;
|
|
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
|
|
// Compruebo si se han recuperado datos
|
|
if (RecordCount > 0) then
|
|
begin
|
|
CodigoContrato := FieldByName('CODIGOCONTRATO').AsString;
|
|
Codigo := FieldByName('CODIGO').AsString;
|
|
FechaAlta := FieldByName('FECHAALTA').AsString;
|
|
Usuario := FieldByName('USUARIO').AsString;
|
|
Referencia := FieldByName('REFERENCIA').AsString;
|
|
Descripcion := FieldByName('DESCRIPCION').AsString;
|
|
CodigoProv := FieldByName('CODIGOPROV').AsString;
|
|
NombreProv := FieldByName('NOMBREPROV').AsString;
|
|
Telefono1 := FieldByName('TELEFONO1').AsString;
|
|
Telefono2 := FieldByName('TELEFONO2').AsString;
|
|
Movil1 := FieldByName('MOVIL1').AsString;
|
|
Movil2 := FieldByName('MOVIL2').AsString;
|
|
Fax := FieldByName('FAX').AsString;
|
|
Correo := FieldByName('CORREO').AsString;
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaObrasPedidos.DarNombreCliMax: String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '';
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select max(NOMBRE) ');
|
|
SQL.Add('from CLIENTES ');
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TdmTablaObrasPedidos.DarNombreCliMin: String;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
Result := '';
|
|
|
|
oSQL := TIBSQL.Create(Self);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select min(NOMBRE) ');
|
|
SQL.Add('from CLIENTES ');
|
|
try
|
|
Prepare;
|
|
ExecQuery;
|
|
Result := Fields[0].AsString;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TdmTablaObrasPedidos.DarListaPedidos(CodigoContrato: Variant): TListaPedidos;
|
|
var
|
|
oSQL : TIBSQL;
|
|
begin
|
|
if EsCadenaVacia(CodigoContrato) then
|
|
raise Exception.Create(msgObrFaltaObr);
|
|
|
|
Result := TListaPedidos.Create(CodigoContrato);
|
|
end;
|
|
|
|
{ TListaPedidos }
|
|
|
|
constructor TListaPedidos.Create(CodigoContrato: String);
|
|
begin
|
|
FCodigoContrato := CodigoContrato;
|
|
FLista := TObjectList.Create;
|
|
ObtenerLista;
|
|
end;
|
|
|
|
destructor TListaPedidos.Destroy;
|
|
begin
|
|
FLista.Free;
|
|
FLista := NIL;
|
|
inherited;
|
|
end;
|
|
|
|
function TListaPedidos.GetCount: Integer;
|
|
begin
|
|
Result := FLista.Count;
|
|
end;
|
|
|
|
function TListaPedidos.GetPedido(Index: Integer): TDatosPedido;
|
|
begin
|
|
Result := TDatosPedido(FLista.Items[Index]);
|
|
end;
|
|
|
|
procedure TListaPedidos.ObtenerLista;
|
|
var
|
|
oSQL : TIBSQL;
|
|
Pedido : TDatosPedido;
|
|
begin
|
|
oSQL := TIBSQL.Create(nil);
|
|
with oSQL do
|
|
begin
|
|
Database := dmBaseDatos.BD;
|
|
Transaction := dmBaseDatos.Transaccion;
|
|
SQL.Add('select CODIGOCONTRATO, CODIGO, FECHAALTA, USUARIO,');
|
|
SQL.Add('DESCRIPCION, REFERENCIA, CODIGOPROV, NOMBREPROV,');
|
|
SQL.Add('TELEFONO1, TELEFONO2, MOVIL1, MOVIL2, FAX,');
|
|
SQL.Add('CORREO, PERSONACONTACTO');
|
|
SQL.Add('from OBRASPEDIDOS');
|
|
SQL.Add('where CODIGOCONTRATO = :CODIGOCONTRATO');
|
|
SQL.Add('order by CODIGO');
|
|
try
|
|
ParamByName('CODIGOCONTRATO').AsString := FCodigoContrato;
|
|
Prepare;
|
|
ExecQuery;
|
|
while not EOF do begin
|
|
Pedido := TDatosPedido.Create;
|
|
with Pedido do
|
|
begin
|
|
CodigoContrato := FieldByName('CODIGOCONTRATO').AsString;
|
|
Codigo := FieldByName('CODIGO').AsString;
|
|
FechaAlta := FieldByName('FECHAALTA').AsString;
|
|
Usuario := FieldByName('USUARIO').AsString;
|
|
Referencia := FieldByName('REFERENCIA').AsString;
|
|
Descripcion := FieldByName('DESCRIPCION').AsString;
|
|
CodigoProv := FieldByName('CODIGOPROV').AsString;
|
|
NombreProv := FieldByName('NOMBREPROV').AsString;
|
|
Telefono1 := FieldByName('TELEFONO1').AsString;
|
|
Telefono2 := FieldByName('TELEFONO2').AsString;
|
|
Movil1 := FieldByName('MOVIL1').AsString;
|
|
Movil2 := FieldByName('MOVIL2').AsString;
|
|
Fax := FieldByName('FAX').AsString;
|
|
Correo := FieldByName('CORREO').AsString;
|
|
PersonaContacto := FieldByName('PERSONACONTACTO').AsString;
|
|
end;
|
|
FLista.Add(Pedido);
|
|
Next;
|
|
end;
|
|
finally
|
|
Close;
|
|
Transaction := NIL;
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
end.
|