{ =============================================================================== Copyright (©) 2006. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 22-05-2006 Versión actual: 1.0.0 Fecha versión actual: 22-05-2006 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uDataModuleObras; interface uses {vcl:} SysUtils, Classes, DB, DBClient, {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, uBizObra; type TdmObras = class(TDAClientDataModule) DABINAdapter: TDABINAdapter; RORemoteService: TRORemoteService; tbl_Obras: TDACDSDataTable; ds_Obras: TDADataSource; tbl_PresupuestosObra: TDACDSDataTable; ds_PresupuestosObra: TDADataSource; tbl_ContactosObra: TDACDSDataTable; ds_ContactosObra: TDADataSource; tbl_ProyectosObra: TDACDSDataTable; ds_ProyectosObra: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); public function GetDataTableItems(Const IDBusiness: String): TDACDSDataTable; function GetItems: IBizObra; // function GetItemsSeleccionados(ASource : IBizObra): IBizObra; // function GetItem(Codigo: Integer): IBizObra; function getCodigoObra: Integer; function getCodigoPresupuesto: Integer; function getCodigoProyecto: Integer; end; var dmObras: TdmObras; implementation {$R *.DFM} uses Controls, Forms, uDAInterfaces, DataAbstract_Intf, FactuGES_Intf, uDataTableUtils, uROTypes, uEditorPreview, Dialogs, schObrasClient_Intf, uDataModuleBase, uBizContacto, cxControls; const MAX_RECORDS = 100; { ********************************* TdmObras ********************************* } procedure TdmObras.DAClientDataModuleCreate(Sender: TObject); begin RORemoteService.Channel := dmBase.Channel; RORemoteService.Message := dmBase.Message; end; function TdmObras.GetItems: IBizObra; begin Result := (GetDataTableItems(BIZ_OBRA) as IBizObra); end; function TdmObras.getCodigoObra: Integer; begin Result := (RORemoteService as IsrvObras).GetCodigo('GEN_OBRAS'); end; function TdmObras.getCodigoPresupuesto: Integer; begin Result := (RORemoteService as IsrvObras).GetCodigo('GEN_PRESUPUESTOS'); end; function TdmObras.getCodigoProyecto: Integer; begin Result := (RORemoteService as IsrvObras).GetCodigo('GEN_PROYECTOS'); end; {function TdmObras.GetItemsSeleccionados(ASource : IBizObra): IBizObra; var aObj : ISelectedRowList; dtObra : IBizObra; 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 := GetItem(ASource.CODIGO); Exit; end else dtObra := GetItems; end else raise Exception.Create('Interface no soportada (GetItemsSeleccionados)'); //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; end; } {function TdmObras.GetItem(Codigo: Integer): IBizObra; var AObra: IBizObra; begin try AObra := dmObras.GetItems; 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; end; end;} function TdmObras.GetDataTableItems(const IDBusiness: String): TDACDSDataTable; var dtObras: TDACDSDataTable; dtContactosObra: TDACDSDataTable; dtPresupuestosObra: TDACDSDataTable; dtProyectosObra: TDACDSDataTable; begin ShowHourglassCursor; try dtObras := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_Obras, dtObras); with dtObras do begin BusinessRulesID := IDBusiness; FieldByName(fld_ObrasFECHAINIOBR).BusinessRulesID := BIZ_FECINIFIN; FieldByName(fld_ObrasFECHAFINOBR).BusinessRulesID := BIZ_FECINIFIN; FieldByName(fld_ObrasAPLICAHONORARIOS).BusinessRulesID := BIZ_CALCULOHONORARIOS; FieldByName(fld_ObrasHONORARIOS).BusinessRulesID := BIZ_CALCULOHONORARIOS; FieldByName(fld_ObrasTOTALPRESUPUESTOSINI).BusinessRulesID := BIZ_CALCULOHONORARIOS; FieldByName(fld_ObrasTOTALPRESUPUESTOSFIN).BusinessRulesID := BIZ_CALCULOHONORARIOS; end; dtContactosObra := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_ContactosObra, dtContactosObra); with dtContactosObra do begin BusinessRulesID := BIZ_CONTACTOOBRA; end; (dtObras as IBizObra).Contactos := (dtContactosObra as IBizContactosObra); (dtObras as IBizObra).Contactos.Obra := (dtObras as IBizObra); dtPresupuestosObra := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_PresupuestosObra, dtPresupuestosObra); with dtPresupuestosObra do begin BusinessRulesID := BIZ_PRESUPUESTOOBRA; FieldByName(fld_PresupuestosObraRETENCION).BusinessRulesID := BIZ_RETENCION; FieldByName(fld_PresupuestosObraPRESUPUESTOFINAL).BusinessRulesID := BIZ_RETENCION; end; dtProyectosObra := TDACDSDataTable.Create(NIL); CloneDataTable(tbl_ProyectosObra, dtProyectosObra); with dtProyectosObra do begin BusinessRulesID := BIZ_PROYECTOSOBRA; end; (dtObras as IBizObra).Proyectos := (dtProyectosObra as IBizProyectosObra); (dtObras as IBizObra).Presupuestos := (dtPresupuestosObra as IBizPresupuestosObra); (dtObras as IBizObra).Contactos.Presupuestos := (dtObras as IBizObra).Presupuestos; (dtObras as IBizObra).Presupuestos.Obra := (dtObras as IBizObra); (dtObras as IBizObra).Proyectos.Obra := (dtObras as IBizObra); Result := dtObras; finally HideHourglassCursor; end; end; initialization dmObras := TdmObras.Create(nil); finalization FreeAndNil(dmObras); end.