unit srvPresupuestos_Impl; {----------------------------------------------------------------------------} { This unit was automatically generated by the RemObjects SDK after reading } { the RODL file associated with this project . } { } { This is where you are supposed to code the implementation of your objects. } {----------------------------------------------------------------------------} interface uses {vcl:} Classes, SysUtils, {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, {Ancestor Implementation:} DARemoteService_Impl, {Used RODLs:} DataAbstract_Intf, {Generated:} FactuGES_Intf, uDAScriptingProvider, uDABusinessProcessor, uDAClasses, uDADataTable, uDABINAdapter, uDAInterfaces; type { TsrvPresupuestos } TsrvPresupuestos = class(TDARemoteService, IsrvPresupuestos) BINAdapter: TDABINAdapter; Diagrams: TDADiagrams; bpPresupuestos: TDABusinessProcessor; bpDetallesPresupuestos: TDABusinessProcessor; schPresupuestos: TDASchema; DataDictionary: TDADataDictionary; procedure DARemoteServiceBeforeAcquireConnection(Sender: TDARemoteService; var ConnectionName: string); procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset; const IncludeSchema: Boolean; const MaxRecords: Integer); procedure DARemoteServiceCreate(Sender: TObject); procedure bpDetallesPresupuestosGenerateSQL(Sender: TDABusinessProcessor; ChangeType: TDAChangeType; const ReferencedStatement: TDAStatement; const aDelta: IDADelta; var SQL: string); protected { IsrvPresupuestos methods } function GetNextAutoInc(const GeneratorName: String): Integer; function GenerateReport(const ID: Integer): Binary; end; implementation {$R *.dfm} uses {Generated:} FactuGES_Invk, Dialogs, uDataModuleServer, uDatabaseUtils, uUsersManager, schPresupuestosClient_Intf, uBizPresupuestosServer, uRestriccionesUsuarioUtils, uRptPresupuestosCliente_Server; procedure Create_srvPresupuestos(out anInstance : IUnknown); begin anInstance := TsrvPresupuestos.Create(NIL); end; { srvPresupuestos } procedure TsrvPresupuestos.bpDetallesPresupuestosGenerateSQL( Sender: TDABusinessProcessor; ChangeType: TDAChangeType; const ReferencedStatement: TDAStatement; const aDelta: IDADelta; var SQL: string); begin dmServer.EscribirLog(SQL); end; procedure TsrvPresupuestos.DARemoteServiceBeforeAcquireConnection( Sender: TDARemoteService; var ConnectionName: string); begin ConnectionName := dmServer.ConnectionName; end; procedure TsrvPresupuestos.DARemoteServiceBeforeGetDatasetData( const Dataset: IDADataset; const IncludeSchema: Boolean; const MaxRecords: Integer); begin if DataSet.Name = nme_Presupuestos then begin { Aquí se asegura que el usuario sólo accede a presupuestos de las empresas a las que tiene permiso para acceder filtrando DataSet por ID_EMPRESA. } FiltrarAccesoUsuario(Session, Connection, schPresupuestos, DataSet, fld_PresupuestosID_EMPRESA); end; end; procedure TsrvPresupuestos.DARemoteServiceCreate(Sender: TObject); begin SessionManager := dmServer.SessionManager; bpPresupuestos.BusinessRulesID := BIZ_SERVER_PRESUPUESTO; end; function TsrvPresupuestos.GenerateReport(const ID: Integer): Binary; var AReportGenerator : TRptPresupuestosCliente; begin AReportGenerator := TRptPresupuestosCliente.Create(nil); try Result := AReportGenerator.GenerarPresupuesto(ID); finally FreeAndNIL(AReportGenerator); end; end; function TsrvPresupuestos.GetNextAutoInc(const GeneratorName: String): Integer; begin Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) end; initialization TROClassFactory.Create('srvPresupuestos', Create_srvPresupuestos, TsrvPresupuestos_Invoker); finalization end.