Tecsitel_FactuGES2/Source/Modulos/Presupuestos de cliente/Data/uDataModulePresupuestosCliente.pas

136 lines
4.0 KiB
ObjectPascal
Raw Normal View History

unit uDataModulePresupuestosCliente;
interface
uses
DB, Classes, SysUtils, uDADesigntimeCall, uROServiceComponent,
uRORemoteService, uROClient, uROBinMessage, uDAScriptingProvider,
uDACDSDataTable, uROWinInetHttpChannel, uDADataTable, uDABINAdapter,
uDAClientDataModule, uROTypes,
uIDataModulePresupuestosCliente, uBizPresupuestosCliente, uBizDetallesPresupuestoCliente,
uIDataModulePresupuestosClienteReport, uDataModuleBase, uDAInterfaces,
uRODynamicRequest, uDADataStreamer, uDARemoteDataAdapter, uDABin2DataStreamer,
uDAMemDataTable;
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 GetReport(const AID: String): 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.GetReport(const AID: String): Binary;
begin
Result := (RORemoteService as IsrvPresupuestosCliente).GenerateReport(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;
begin
ShowHourglassCursor;
try
Result := Self.GetItems;
with Result.DataTable.Where do
begin
if NotEmpty then
AddOperator(opAND);
OpenBraket;
AddText(fld_PresupuestosClienteID + ' = ' + IntToStr(ID));
CloseBraket;
end;
finally
HideHourglassCursor;
end;
end;
function TDataModulePresupuestosCliente.GetItems: IBizPresupuestoCliente;
var
APresupuesto : TDAMemDataTable;
begin
ShowHourglassCursor;
try
APresupuesto := CloneDataTable(tbl_PresupuestosCliente);
// EL CAMPO REFERENCIA TIENEN QUE SER AUTOREFRESH!!!!!
APresupuesto.FieldByName(fld_PresupuestosClienteREFERENCIA).ServerAutoRefresh := TRUE;
AsignarClaseNegocio(APresupuesto);
with TBizPresupuestoCliente(APresupuesto.BusinessEventsObj) do
begin
showmessage('Voy a asignar los detalles');
Detalles := _GetDetalles;
end;
Result := (APresupuesto as IBizPresupuestoCliente);
finally
HideHourglassCursor;
end;
end;
end.