unit uDataModuleObrasFinal; interface uses SysUtils, Classes, uBizObraFinal, uBizObra; type TdmObrasFinal = class(TDataModule) public function GetFacturasItems: IBizFacturasObras; overload; function GetFacturasItems(CodigoObra: Integer): IBizFacturasObras; overload; function GetFacturasItem(Codigo: Integer): IBizFacturasObras; function GetRecibosItems: IBizRecibosObras; overload; function GetRecibosItems(CodigoObra: Integer): IBizRecibosObras; overload; function GetRecibosItem(Codigo: Integer): IBizRecibosObras; function GetObrasItems: IBizObraFinal; function GetObraItem(Codigo: Integer): IBizObraFinal; function GetItemsSeleccionados(ASource : IBizObraFinal): IBizObraFinal; end; var dmObrasFinal: TdmObrasFinal; implementation {$R *.dfm} uses uDAInterfaces, uDBSelectionList, uDataModuleObras, uDataModuleFacturasCliente, uDataModuleRecibosCliente, cxControls; { TdmObrasFinal } function TdmObrasFinal.GetFacturasItems: IBizFacturasObras; begin Result := (dmFacturasCliente.GetDataTableItems(BIZ_FACTURASOBRAS) as IBizFacturasObras); end; function TdmObrasFinal.GetObrasItems: IBizObraFinal; begin Result := (dmObras.GetDataTableItems(BIZ_OBRAFINAL) as IBizObraFinal); end; function TdmObrasFinal.GetItemsSeleccionados(ASource : IBizObraFinal): IBizObraFinal; var aObj : ISelectedRowList; dtObra : IBizObraFinal; i : integer; Cadena: Variant; begin if Supports(ASource, ISelectedRowList, aObj) then begin if (aObj.SelectedRows.Count = 1) then begin ASource.DataTable.GotoBookmark(aObj.SelectedRows[0]); Result := GetObraItem(ASource.CODIGO); Exit; end else dtObra := GetObrasItems; end else raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); ShowHourglassCursor; try //Si esta abierta cerramos para poner el where if dtObra.DataTable.Active then dtObra.DataTable.Active := False; with dtObra.DataTable.Where do begin Cadena := ''; for i := 0 to aObj.SelectedRows.Count - 1 do begin ASource.DataTable.GotoBookmark(aObj.SelectedRows[i]); if Cadena <> '' then Cadena:= Cadena + ', '; Cadena:= Cadena + IntToStr(ASource.CODIGO); end; Clear; Cadena := '(' + Cadena + ')'; AddCondition('CODIGO', cIn, Cadena); end; Result := dtObra; finally HideHourglassCursor; end; end; function TdmObrasFinal.GetObraItem(Codigo: Integer): IBizObraFinal; var AObra: IBizObraFinal; begin ShowHourglassCursor; try AObra := GetObrasItems; with AObra.DataTable do begin if Active then Active := False; Where.Clear; Where.AddText('OBRAS.CODIGO' + ' = ' + IntToStr(Codigo)); Active := True; end; Result := AObra; finally AObra := Nil; HideHourglassCursor; end; end; function TdmObrasFinal.GetFacturasItems(CodigoObra: Integer): IBizFacturasObras; var AFacturas: IBizFacturasObras; begin ShowHourglassCursor; try AFacturas := GetFacturasItems; with AFacturas.DataTable do begin if Active then Active := False; Where.Clear; Where.AddText('CODIGOOBRA' + ' = ' + IntToStr(CodigoObra)); end; Result := AFacturas; finally HideHourglassCursor; end; end; function TdmObrasFinal.GetRecibosItems: IBizRecibosObras; begin Result := (dmRecibosCliente.GetDataTableItems(BIZ_RECIBOSOBRAS) as IBizRecibosObras); end; function TdmObrasFinal.GetRecibosItems(CodigoObra: Integer): IBizRecibosObras; var ARecibos: IBizRecibosObras; begin ShowHourglassCursor; try ARecibos := GetRecibosItems; with ARecibos.DataTable do begin if Active then Active := False; Where.Clear; Where.AddText('CODIGOOBRA' + ' = ' + IntToStr(CodigoObra)); end; Result := ARecibos; finally HideHourglassCursor; end; end; function TdmObrasFinal.GetFacturasItem(Codigo: Integer): IBizFacturasObras; var AFacturas: IBizFacturasObras; begin ShowHourglassCursor; try AFacturas := GetFacturasItems; with AFacturas.DataTable do begin if Active then Active := False; Where.Clear; Where.AddText('CODIGO' + ' = ' + IntToStr(Codigo)); end; Result := AFacturas; finally HideHourglassCursor; end; end; function TdmObrasFinal.GetRecibosItem(Codigo: Integer): IBizRecibosObras; var ARecibos: IBizRecibosObras; begin ShowHourglassCursor; try ARecibos := GetRecibosItems; with ARecibos.DataTable do begin if Active then Active := False; Where.Clear; Where.AddText('CODIGO' + ' = ' + IntToStr(Codigo)); end; Result := ARecibos; finally HideHourglassCursor; end; end; initialization dmObrasFinal := TdmObrasFinal.Create(nil); finalization FreeAndNil(dmObrasFinal); end.