unit uDataModuleObras; interface uses SysUtils, Classes, DB, uDADataTable, uDABINAdapter, uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, uRORemoteService, uROClient, uROBinMessage, uDADesigntimeCall, uIDataModuleObras, uBizObras, uDataModuleBase, uDARemoteDataAdapter, uDADataStreamer, uDABin2DataStreamer, uDAInterfaces, uDAMemDataTable, uRODynamicRequest; type TDataModuleObras = class(TDataModuleBase, IDataModuleObras) RORemoteService: TRORemoteService; Bin2DataStreamer: TDABin2DataStreamer; rda_Obras: TDARemoteDataAdapter; tbl_Obras: TDAMemDataTable; ds_Obras: TDADataSource; tbl_ObrasEjecucionesPedidosProveedor: TDAMemDataTable; ds_ObrasEjecucionesPedidosProveedor: TDADataSource; tbl_ObrasEjecucionesPresupuestos: TDAMemDataTable; ds_ObrasEjecucionesPresupuestos: TDADataSource; tbl_ObrasEjecuciones: TDAMemDataTable; ds_ObrasEjecuciones: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); protected function _GetPresupuestos : IBizEjecucionPresupuestos; function _GetPedidos : IBizEjecucionPedidosProveedor; function _GetEjecuciones : IBizEjecucionesObra; public function GetEjecucionPresupuestos(const IDEjecucion: Integer) : IBizEjecucionPresupuestos; function GetItems : IBizObra; function GetItem(const ID : Integer) : IBizObra; function NewItem : IBizObra; function DarListaObras(const IDEmpresa: Integer): TStringList; end; implementation {$R *.DFM} uses FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, schObrasClient_Intf; { TDataModuleObras } procedure TDataModuleObras.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; RORemoteService.Message := dmConexion.Message; end; function TDataModuleObras.NewItem: IBizObra; begin Result := GetItem(ID_NULO) end; function TDataModuleObras._GetEjecuciones: IBizEjecucionesObra; var AEjecuciones : TDAMemDataTable; begin ShowHourglassCursor; try AEjecuciones := CloneDataTable(tbl_ObrasEjecuciones); with AEjecuciones do begin BusinessRulesID := BIZ_CLIENT_OBRA_EJECUCION; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; with TBizEjecucionesObra(AEjecuciones.BusinessEventsObj) do begin Presupuestos := _GetPresupuestos; Pedidos := _GetPedidos; end; Result := (AEjecuciones as IBizEjecucionesObra); finally HideHourglassCursor; end; end; function TDataModuleObras._GetPedidos: IBizEjecucionPedidosProveedor; var ATable : TDAMemDataTable; begin ShowHourglassCursor; try ATable := CloneDataTable(tbl_ObrasEjecucionesPedidosProveedor); ATable.BusinessRulesID := BIZ_CLIENT_OBRA_EJECUCION_PEDIDO_PROVEEDOR; Result := ATable as IBizEjecucionPedidosProveedor; finally HideHourglassCursor; end; end; function TDataModuleObras._GetPresupuestos: IBizEjecucionPresupuestos; var ATable : TDAMemDataTable; begin ShowHourglassCursor; try ATable := CloneDataTable(tbl_ObrasEjecucionesPresupuestos); ATable.BusinessRulesID := BIZ_CLIENT_OBRA_EJECUCION_PRESUPUESTO; Result := ATable as IBizEjecucionPresupuestos; finally HideHourglassCursor; end; end; function TDataModuleObras.DarListaObras(const IDEmpresa: Integer): TStringList; var ABinary : Binary; begin ABinary := (RORemoteService as IsrvObras).DarListaObras(IdEmpresa); Result := TStringList.Create; Result.LoadFromStream(ABinary); end; function TDataModuleObras.GetEjecucionPresupuestos( const IDEjecucion: Integer): IBizEjecucionPresupuestos; var APresupuestos : TDAMemDataTable; Condicion: TDAWhereExpression; begin ShowHourglassCursor; try APresupuestos := CloneDataTable(tbl_ObrasEjecucionesPresupuestos); with APresupuestos do begin BusinessRulesID := BIZ_CLIENT_OBRA_EJECUCION_PRESUPUESTO; with DynamicWhere do begin // (ID_EJECUCION = :ID) Condicion := NewBinaryExpression(NewField('', fld_ObrasEjecucionesPresupuestosID_EJECUCION), NewConstant(IDEjecucion, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; end; Result := (APresupuestos as IBizEjecucionPresupuestos); finally HideHourglassCursor; end; end; function TDataModuleObras.GetItem(const ID: Integer): IBizObra; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin // (ID = :ID) Condicion := NewBinaryExpression(NewField('', fld_ObrasID), NewConstant(ID, datInteger), dboEqual); if IsEmpty then Expression := Condicion else Expression := NewBinaryExpression(Expression, Condicion, dboAnd); end; finally HideHourglassCursor; end; end; function TDataModuleObras.GetItems: IBizObra; var AObra : TDAMemDataTable; begin ShowHourglassCursor; try AObra := CloneDataTable(tbl_Obras); AObra.BusinessRulesID := BIZ_CLIENT_OBRA; with TBizObra(AObra.BusinessEventsObj) do Ejecuciones := _GetEjecuciones; Result := (AObra as IBizObra); finally HideHourglassCursor; end; end; end.