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

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.