unit uDataModuleArticulos; interface uses {vcl:} SysUtils, Classes, DB, DBClient, {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, uBizArticulos; type TdmArticulos = class(TDAClientDataModule) DABINAdapter: TDABINAdapter; RORemoteService: TRORemoteService; tbl_Articulos: TDACDSDataTable; ds_Articulos: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); private public function GetDataTableItems: TDACDSDataTable; function GetItems: IBizArticulosAlmacen; function GetItemsLibres: IBizArticulosAlmacen; function GetItem(Codigo : Integer): IBizArticulosAlmacen; function GetNextAutoinc : integer; procedure Preview; end; var dmArticulos: TdmArticulos; implementation {$R *.DFM} uses Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, uDataTableUtils, uROTypes, uEditorPreview, uBizMontajes, Dialogs, schArticulosClient_Intf, uDataModuleBase, uDBSelectionList; const MAX_RECORDS = 100; procedure TdmArticulos.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmBase.Channel; RORemoteService.Message := dmBase.Message; end; procedure TdmArticulos.Preview; var AStream: TMemoryStream; AEditorPreview : TfEditorPreview; begin { AStream := Binary.Create; AEditorPreview := TfEditorPreview.Create(Application); try AStream := (RemoteService as ISrvContactos).GenerateReport; AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); AEditorPreview.ShowModal; finally AEditorPreview.Release; AStream.Free; end; } end; {function TdmAlmacenes.GetCliente(Codigo: Integer): IBizCliente; var // dtContactos: TDACDSDataTable; // dtCategorias: TDACDSDataTable; // ACursor: TCursor; begin { ACursor := Screen.Cursor; Screen.Cursor := crHourGlass; try dtContactos := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_Contactos, dtContactos); dtContactos.BusinessRulesID := 'BizCliente'; dtCategorias := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_CategoriasContacto, dtCategorias); dtCategorias.BusinessRulesID := 'BizCategoria'; (dtContactos as IBizContacto).Categorias := (dtCategorias as IBizCategoriasContacto); Result := (dtContactos as IBizCliente); GetCliente(Result, Codigo); finally Screen.Cursor := ACursor; end; end; } function TdmArticulos.GetItems: IBizArticulosAlmacen; var AArticulos : IBizArticulosAlmacen; begin AArticulos := (GetDataTableItems as IBizArticulosAlmacen); with AArticulos.DataTable.Where do begin Clear; OpenBraket; AddText('(MONTAJES.SITUACION is null) OR (MONTAJES.SITUACION not in (''' + SITUACION_PENDIENTEPAGO + ''', ''' + SITUACION_PAGADO + '''))', False); CloseBraket; end; Result := AArticulos; end; function TdmArticulos.GetItem(Codigo: Integer): IBizArticulosAlmacen; var AArticuloAlmacen: IBizArticulosAlmacen; begin AArticuloAlmacen := GetItems; with AArticuloAlmacen.DataTable do begin if Active then Active := False; Where.Clear; Where.OpenBraket; Where.AddText('ARTICULOS.' + fld_ARTICULOSCODIGO + ' = ' + IntToStr(Codigo), False); Where.CloseBraket; end; Result := AArticuloAlmacen; end; function TdmArticulos.GetNextAutoinc: integer; begin Result := (RORemoteService as IsrvArticulos).GetNextAutoinc; end; function TdmArticulos.GetDataTableItems: TDACDSDataTable; var dtArticulos: TDACDSDataTable; ACursor: TCursor; begin ACursor := Screen.Cursor; Screen.Cursor := crHourGlass; try dtArticulos := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_Articulos, dtArticulos); dtArticulos.BusinessRulesID := 'BizArticulosAlmacen'; Result := dtArticulos; finally Screen.Cursor := ACursor; end; end; function TdmArticulos.GetItemsLibres: IBizArticulosAlmacen; var AArticulos : IBizArticulosAlmacen; begin AArticulos := GetItems; with AArticulos.DataTable.Where do begin if not Empty then AddOperator(opAND); Clear; OpenBraket; AddText('ARTICULOS.CODIGOMONTAJE is null', False); CloseBraket; end; Result := AArticulos; end; initialization dmArticulos := TdmArticulos.Create(nil); finalization FreeAndNil(dmArticulos); end.