unit uDataModulePedidosProveedor; interface uses SysUtils, Classes, DB, uDAClientDataModule, uDADataTable, uDABINAdapter, uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, uIDataModulePedidosProveedor, uIDataModulePedidosProveedorReport, uBizPedidosProveedor, uBizDetallesPedidoProveedor, uDADesigntimeCall; type TDataModulePedidosProveedor = class(TDAClientDataModule, IDataModulePedidosProveedor, IDataModulePedidosProveedorReport) ROChannel: TROWinInetHTTPChannel; ROMessage: TROBinMessage; RORemoteService: TRORemoteService; DABinAdapter: TDABINAdapter; tbl_PedidosProveedor: TDACDSDataTable; ds_PedidosProveedor: TDADataSource; tbl_PedidosProveedor_Detalles: TDACDSDataTable; ds_PedidosProveedor_Detalles: TDADataSource; DADesigntimeCall1: TDADesigntimeCall; LoginRemoteService: TRORemoteService; procedure DAClientDataModuleCreate(Sender: TObject); public function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; function _GetDetalles : IBizDetallesPedidoProveedor; function GetItems : IBizPedidoProveedor; function GetItem(const ID : Integer) : IBizPedidoProveedor; function GetNextID(const DataSetName : String) : Integer; function NewItem : IBizPedidoProveedor; // Report function GetReport(const AID: Integer): Binary; end; implementation {$R *.DFM} uses FactuGES_Intf, uDataModuleConexion, uDataTableUtils, uDAInterfaces, schPedidosProveedorClient_Intf, uBizContactos, cxControls; { TdmPedidosProveedor } procedure TDataModulePedidosProveedor.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmConexion.Channel; RORemoteService.Message := dmConexion.Message; end; function TDataModulePedidosProveedor.GetNextID(const DataSetName: String): Integer; var aGeneratorName : String; begin if DataSetName = nme_PedidosProveedor then aGeneratorName := 'GEN_PEDIDOS_PROV_ID'; if DataSetName = nme_PedidosProveedor_Detalles then aGeneratorName := 'GEN_PEDIDOS_PROV_DETALLES_ID'; Result := (RORemoteService as IsrvPedidosProveedor).GetNextAutoInc(aGeneratorName) end; function TDataModulePedidosProveedor.GetReport(const AID: Integer): Binary; begin Result := (RORemoteService as IsrvPedidosProveedor).GenerateReport(AID) end; function TDataModulePedidosProveedor.NewItem: IBizPedidoProveedor; begin Result := GetItem(ID_NULO) end; function TDataModulePedidosProveedor._CloneDataTable(const ADataTable : TDACDSDataTable): TDACDSDataTable; begin Result := NIL; if not Assigned(ADataTable) then raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); Result := TDACDSDataTable.Create(NIL); CloneDataTable(ADataTable, Result); end; function TDataModulePedidosProveedor._GetDetalles: IBizDetallesPedidoProveedor; var ADetalles : TDACDSDataTable; begin ShowHourglassCursor; try ADetalles := _CloneDataTable(tbl_PedidosProveedor_Detalles); with ADetalles do begin BusinessRulesID := BIZ_CLIENT_DETALLES_PEDIDO_PROVEEDOR; DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; end; Result := (ADetalles as IBizDetallesPedidoProveedor); finally HideHourglassCursor; end; end; function TDataModulePedidosProveedor.GetItem(const ID: Integer): IBizPedidoProveedor; begin ShowHourglassCursor; try Result := Self.GetItems; with Result.DataTable.Where do begin if NotEmpty then AddOperator(opAND); OpenBraket; AddText('PEDIDOS_PROVEEDOR.' + fld_PedidosProveedorID + ' = ' + IntToStr(ID)); CloseBraket; end; finally HideHourglassCursor; end; end; function TDataModulePedidosProveedor.GetItems: IBizPedidoProveedor; var APedido : TDACDSDataTable; begin ShowHourglassCursor; try APedido := _CloneDataTable(tbl_PedidosProveedor); APedido.BusinessRulesID := BIZ_CLIENT_PEDIDO_PROVEEDOR; with TBizPedidoProveedor(APedido.BusinessEventsObj) do begin Detalles := _GetDetalles; end; Result := (APedido as IBizPedidoProveedor); finally HideHourglassCursor; end; end; end.