Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas
david e7e45f1323 - #12 -> Enviar documentos por correo electrónico. Adaptación de los módulos (sin terminar)
- En los controladores, cambiar TObservador por TControllerBase
- Limpieza de código y warnings.


git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@528 0c75b7a4-871f-7646-8a2f-f78d34cc349f
2008-08-22 14:52:35 +00:00

174 lines
5.2 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;
procedure DAClientDataModuleCreate(Sender: TObject);
private
function _GetDetalles : IBizDetallesPresupuestoCliente;
protected
procedure AsignarClaseNegocio(APresupuesto: TDADataTable); virtual;
public
function GetItems : IBizPresupuestoCliente; virtual;
function GetItem(const ID : Integer) : IBizPresupuestoCliente;
function NewItem : IBizPresupuestoCliente;
// Report
function GetRptPresupuestos(const AListaID: TIntegerList): Binary;
function GetRptWordPresupuesto(const AID: Integer): Binary;
function GetRptWordCertificadoTrabajos(const AID: Integer): Binary;
function GetRptPDFPresupuesto(const AID: Integer): Binary;
end;
implementation
{$R *.DFM}
uses
cxControls, FactuGES_Intf, uDataModuleConexion, Dialogs,
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): Binary;
var
AParam : TIntegerArray;
begin
AParam := TIntegerArray.Create;
try
AParam.Add(AID);
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInformeEnPDF(AParam)
finally
FreeANDNIL(AParam)
end;
end;
function TDataModulePresupuestosCliente.GetRptPresupuestos(const AListaID: TIntegerList): Binary;
var
AParam : TIntegerArray;
begin
AParam := AListaID.ToIntegerArray;
try
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInforme(AParam)
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): Binary;
begin
Result := (RORemoteService as IsrvPresupuestosCliente).GenerarInformeEnWord(AID)
end;
function TDataModulePresupuestosCliente.NewItem: IBizPresupuestoCliente;
begin
Result := GetItem(ID_NULO)
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.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: 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.