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/Informes/InformeEstadoObra.pas
2007-06-26 08:08:27 +00:00

139 lines
3.5 KiB
ObjectPascal

unit InformeEstadoObra;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, InformeBaseFR3, frxCross, frxClass, frxIBXComponents, frxDBSet,
DB, IBCustomDataSet, IBDatabase, TablaCitas, IBQuery;
type
TdmInformeEstadoObra = class(TdmInformeBaseFR3)
frxTablaCitas: TfrxDBDataset;
frxTablaInstaladores: TfrxDBDataset;
frxTablaObras: TfrxDBDataset;
dsCitas: TDataSource;
dsInstaladores: TDataSource;
dsObras: TDataSource;
TablaCitas: TIBQuery;
TablaObrasInstaladores: TIBQuery;
TablaObras: TIBQuery;
frxReport1: TfrxReport;
procedure FReportBeforePrint(Sender: TfrxReportComponent);
private
FCodigoContrato: variant;
protected
procedure PrepararConsultas; override;
public
EstadoObra : array[TPartidasObra, tcPedido..tcEntregaCliente] of String;
Proveedores : array[TPartidasObra] of String;
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
property CodigoContrato : variant read FCodigoContrato write FCodigoContrato;
end;
var
dmInformeEstadoObra: TdmInformeEstadoObra;
implementation
uses
TablaObras, TablaObrasInstaladores, frxPreview;
{$R *.dfm}
{ TdmInformeEstadoObra }
constructor TdmInformeEstadoObra.Create(AOwner: TComponent);
begin
inherited;
FCodigoContrato := NULL;
FNombreInforme := 'InformeEstadoObra.fr3';
end;
destructor TdmInformeEstadoObra.Destroy;
begin
inherited;
end;
procedure TdmInformeEstadoObra.PrepararConsultas;
var
Cont : TTipoCitas;
begin
inherited;
with TablaObras do
begin
Database := FBaseDatos;
Transaction := FTransaccion;
SQL.Clear;
SQL.Assign(dmTablaObras.sqlConsultar);
ParamByName('CODIGOCONTRATO').AsString := FCodigoContrato;
Prepare;
Open;
end;
with TablaCitas do
begin
Database := FBaseDatos;
Transaction := FTransaccion;
SQL.Clear;
SQL.Add('select START, CAPTION, NOMBRE, TIPOTAREA ');
SQL.Add('from CITAS, INSTALADORES ');
SQL.Add('WHERE CODIGOCONTRATO = :CODIGOCONTRATO');
SQL.Add('and CODIGO = RESOURCEID ');
SQL.Add('and TIPOTAREA IN (');
for Cont := tcEntrega to tcRemate do
begin
SQL.Add('''' + TextoTipoCita[Ord(Cont)] + '''');
if Cont < tcRemate then
SQL.Add(', ');
end;
SQL.Add(')');
ParamByName('CODIGOCONTRATO').AsString := FCodigoContrato;
Prepare;
Open;
end;
with TablaObrasInstaladores do
begin
Database := FBaseDatos;
Transaction := FTransaccion;
SQL.Clear;
SQL.Assign(dmTablaObrasInstaladores.sqlGrid);
ParamByName('CODIGOCONTRATO').AsString := FCodigoContrato;
Prepare;
Open;
end;
end;
procedure TdmInformeEstadoObra.FReportBeforePrint(
Sender: TfrxReportComponent);
var
Cross: TfrxCrossView;
APartida : TPartidasObra;
ATipoCita : TTipoCitas;
Col, Row : Integer;
Cadena : String;
begin
if Sender is TfrxCrossView then
begin
Cross := TfrxCrossView(Sender);
for APartida := poCocina to poVarios do
begin
Col := Ord(APartida);
Cross.AddValue(['Proveedores'], [LiteralPartidasObra[Col]], [Proveedores[APartida]]);
for ATipoCita := tcPedido to tcEntregaCliente do
begin
Row := Ord(ATipoCita);
Cadena := EstadoObra[APartida, ATipoCita];
Cross.AddValue([LiteralTipoCita[Row]], [LiteralPartidasObra[Col]], [EstadoObra[APartida, ATipoCita]]);
end;
end;
end;
end;
end.