git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@1099 0c75b7a4-871f-7646-8a2f-f78d34cc349f
250 lines
7.3 KiB
ObjectPascal
250 lines
7.3 KiB
ObjectPascal
unit uDataModulePresupuestosCliente;
|
|
|
|
interface
|
|
|
|
uses
|
|
DB, Classes, SysUtils, uDADesigntimeCall,
|
|
uRORemoteService, uROClient, uROBinMessage, uDAScriptingProvider,
|
|
uDACDSDataTable, uROWinInetHttpChannel, uDADataTable, uDABINAdapter,
|
|
|
|
uROTypes,
|
|
uIDataModulePresupuestosCliente, uBizPresupuestosCliente, uBizDetallesPresupuestoCliente,
|
|
uIDataModulePresupuestosClienteReport, uDataModuleBase, uDAInterfaces,
|
|
uRODynamicRequest, uDADataStreamer, uDARemoteDataAdapter, uDABin2DataStreamer,
|
|
uDAMemDataTable, uIntegerListUtils;
|
|
|
|
type
|
|
TDataModulePresupuestosCliente = class(TDataModuleBase, IDataModulePresupuestosCliente, IDataModulePresupuestosClienteReport)
|
|
RORemoteService: TRORemoteService;
|
|
Bin2DataStreamer: TDABin2DataStreamer;
|
|
rda_PresupuestosCliente: TDARemoteDataAdapter;
|
|
tbl_PresupuestosCliente: TDAMemDataTable;
|
|
ds_PresupuestosCliente: TDADataSource;
|
|
tbl_PresupuestosCliente_Detalles: TDAMemDataTable;
|
|
ds_PresupuestosCliente_Detalles: TDADataSource;
|
|
RORemoteService1: TRORemoteService;
|
|
tbl_ListaAnosPresupuestos: TDAMemDataTable;
|
|
ds_ListaAnosPresupuestos: TDADataSource;
|
|
procedure DAClientDataModuleCreate(Sender: TObject);
|
|
|
|
private
|
|
function _GetDetalles : IBizDetallesPresupuestoCliente;
|
|
|
|
protected
|
|
procedure AsignarClaseNegocio(APresupuesto: TDADataTable);
|
|
|
|
public
|
|
function GetItems : IBizPresupuestoCliente; overload;
|
|
function GetItems(const AListaID: TIntegerList) : IBizPresupuestoCliente; overload;
|
|
|
|
function GetItem(const ID : Integer) : IBizPresupuestoCliente;
|
|
function NewItem : IBizPresupuestoCliente;
|
|
|
|
// Report
|
|
function GetRptPresupuestos(const AListaID: TIntegerList; Const AVerSello: Integer): Binary;
|
|
function GetRptWordPresupuesto(const AID: Integer; Const AVerSello: Integer): Binary;
|
|
function GetRptWordCertificadoTrabajos(const AID: Integer): Binary;
|
|
function GetRptPDFPresupuesto(const AID: Integer; Const AVerSello: Integer): Binary;
|
|
|
|
function GetAnosItems : TStringList;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
cxControls, FactuGES_Intf, uDataModuleConexion, Dialogs, DataAbstract4_Intf,
|
|
uDataTableUtils, schPresupuestosClienteClient_Intf, uBizContactos;
|
|
|
|
{ TdmPresupuestosCliente }
|
|
|
|
procedure TDataModulePresupuestosCliente.AsignarClaseNegocio(APresupuesto: TDADataTable);
|
|
begin
|
|
APresupuesto.BusinessRulesID := BIZ_CLIENT_PRESUPUESTO_CLIENTE;
|
|
end;
|
|
|
|
procedure TDataModulePresupuestosCliente.DAClientDataModuleCreate(Sender: TObject);
|
|
begin
|
|
RORemoteService.Channel := dmConexion.Channel;
|
|
RORemoteService.Message := dmConexion.Message;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetRptPDFPresupuesto(const AID: Integer; Const AVerSello: Integer): Binary;
|
|
var
|
|
AParam : TIntegerArray;
|
|
begin
|
|
AParam := TIntegerArray.Create;
|
|
try
|
|
AParam.Add(AID);
|
|
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInformeEnPDF(AParam, AVerSello)
|
|
finally
|
|
FreeANDNIL(AParam)
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetRptPresupuestos(const AListaID: TIntegerList; Const AVerSello: Integer): Binary;
|
|
var
|
|
AParam : TIntegerArray;
|
|
begin
|
|
AParam := AListaID.ToIntegerArray;
|
|
try
|
|
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInforme(AParam, AVerSello)
|
|
finally
|
|
FreeANDNIL(AParam)
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetRptWordCertificadoTrabajos(
|
|
const AID: Integer): Binary;
|
|
begin
|
|
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarCertificadoTrabajosEnWord(AID)
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetRptWordPresupuesto(const AID: Integer; Const AVerSello: Integer): Binary;
|
|
begin
|
|
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInformeEnWord(AID, AVerSello)
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.NewItem: IBizPresupuestoCliente;
|
|
begin
|
|
Result := GetItem(ID_NULO)
|
|
end;
|
|
|
|
{
|
|
function TDataModulePresupuestosCliente.SubirFichero(const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean;
|
|
begin
|
|
Result := False;
|
|
try
|
|
Result := (RORemoteService1 as IsrvGestorDocumentos).SubirFichero(TRdxAlmacenes_Presupuestos, ID, NombreFichero, Fichero);
|
|
finally
|
|
//
|
|
end;
|
|
end;
|
|
}
|
|
|
|
function TDataModulePresupuestosCliente._GetDetalles: IBizDetallesPresupuestoCliente;
|
|
var
|
|
ADetalles : TDAMemDataTable;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
ADetalles := CloneDataTable(tbl_PresupuestosCliente_Detalles);
|
|
with ADetalles do
|
|
begin
|
|
BusinessRulesID := BIZ_CLIENT_DETALLES_PRESUPUESTO_CLIENTE;
|
|
DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
|
|
end;
|
|
Result := (ADetalles as IBizDetallesPresupuestoCliente);
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetAnosItems: TStringList;
|
|
var
|
|
AListaAnos: TStringList;
|
|
begin
|
|
AListaAnos := TStringList.Create;
|
|
ShowHourglassCursor;
|
|
try
|
|
with tbl_ListaAnosPresupuestos do
|
|
begin
|
|
Open;
|
|
First;
|
|
while not eof do
|
|
begin
|
|
AListaAnos.Add(Format('%s=%s', [Fields[0].AsString, Fields[0].AsString]));
|
|
Next;
|
|
end;
|
|
Close;
|
|
end;
|
|
Result := AListaAnos;
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetItem(const ID: Integer): IBizPresupuestoCliente;
|
|
var
|
|
Condicion: TDAWhereExpression;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
Result := Self.GetItems;
|
|
|
|
with Result.DataTable.DynamicWhere do
|
|
begin
|
|
// (ID = :ID)
|
|
Condicion := NewBinaryExpression(NewField('', fld_PresupuestosClienteID), NewConstant(ID, datInteger), dboEqual);
|
|
|
|
if IsEmpty then
|
|
Expression := Condicion
|
|
else
|
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
|
end;
|
|
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetItems(
|
|
const AListaID: TIntegerList): IBizPresupuestoCliente;
|
|
var
|
|
Condicion: TDAWhereExpression;
|
|
i : Integer;
|
|
AArray : Array of TDAWhereExpression;
|
|
begin
|
|
if not Assigned(AListaID) then
|
|
raise Exception.Create('ListaID no asignada (GetItems)');
|
|
|
|
ShowHourglassCursor;
|
|
try
|
|
Result := Self.GetItems;
|
|
|
|
with Result.DataTable.DynamicWhere do
|
|
begin
|
|
// (ID in (1, 2, 3...)
|
|
|
|
SetLength(AArray, AListaID.Count);
|
|
for i := 0 to AListaID.Count - 1 do
|
|
AArray[i] := NewConstant(AListaID[i], datInteger);
|
|
|
|
Condicion := NewBinaryExpression(NewField('', fld_PresupuestosClienteID), NewList(AArray), dboIn);
|
|
|
|
if IsEmpty then
|
|
Expression := Condicion
|
|
else
|
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
|
end;
|
|
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePresupuestosCliente.GetItems: IBizPresupuestoCliente;
|
|
var
|
|
APresupuesto: TDAMemDataTable;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
APresupuesto := CloneDataTable(tbl_PresupuestosCliente);
|
|
AsignarClaseNegocio(APresupuesto);
|
|
|
|
// EL CAMPO REFERENCIA TIENEN QUE SER AUTOREFRESH!!!!!
|
|
APresupuesto.FieldByName(fld_PresupuestosClienteREFERENCIA).ServerAutoRefresh := TRUE;
|
|
|
|
with TBizPresupuestoCliente(APresupuesto.BusinessEventsObj) do
|
|
Detalles := _GetDetalles;
|
|
|
|
Result := (APresupuesto as IBizPresupuestoCliente);
|
|
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
end.
|