unit srvPedidosProveedor_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, uDAClasses, uDAScriptingProvider, uDABusinessProcessor, uDAInterfaces, uDADataTable, uDACDSDataTable, frxClass, frxDBSet, DB, IBDatabase, IBCustomDataSet, uDABINAdapter; type { TsrvPedidosProveedor } TsrvPedidosProveedor = class(TDARemoteService, IsrvPedidosProveedor) bpPedidosProveedor: TDABusinessProcessor; DADataCabecera: TDADataSource; DADataDetalles: TDADataSource; frxDBCabecera: TfrxDBDataset; frxDBDetalles: TfrxDBDataset; tbl_Pedido: TDACDSDataTable; tbl_DetallesPedido: TDACDSDataTable; IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; IBDataSet1: TIBDataSet; IBDataSet2: TIBDataSet; DataSource1: TDataSource; DataSource2: TDataSource; DABINAdapter: TDABINAdapter; frxReport1: TfrxReport; schPedidosProveedor: TDASchema; private protected function GetNextAutoinc: Integer; function DarNuevaReferencia: String; function GenerateReport(const Codigo: Integer): Binary; function PuedoEliminarPedido(const Codigo: Integer): Boolean; end; implementation {$R *.dfm} uses {Generated:} FactuGES_Invk, uDataModuleServer, dialogs; procedure Create_srvPedidosProveedor(out anInstance : IUnknown); begin anInstance := TsrvPedidosProveedor.Create(NIL); end; { srvPedidosProveedor } { TsrvPedidosProveedor } function TsrvPedidosProveedor.DarNuevaReferencia: String; var dsReferencia: IDADataset; begin dsReferencia := schPedidosProveedor.NewDataset(Connection, 'DarReferenciaPedido'); dsReferencia.Active := True; Result := dsReferencia.FieldByName('REFERENCIA').AsString; end; function TsrvPedidosProveedor.GenerateReport( const Codigo: Integer): Binary; var dsMaster: IDADataset; dsDetail: IDADataset; AStream: TMemoryStream; begin AStream := TMemoryStream.Create; Result := Binary.Create; try dsMaster := schPedidosProveedor.NewDataset(Connection, 'InformeCabeceraPedido', ['CODIGO'], [Codigo]); dsDetail := schPedidosProveedor.NewDataset(Connection, 'InformeDetallesPedido', ['CODIGOPEDIDO'], [Codigo], False); dsDetail.Active := True; AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_Pedido, TRUE, '', TRUE, TRUE); AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_DetallesPedido, TRUE, '', TRUE, TRUE); frxReport1.LoadFromFile(DarRutaInformes + 'InfPedido.fr3', True); frxReport1.PrepareReport; frxReport1.PreviewPages.SaveToStream(Result); finally AStream.Free; end; end; function TsrvPedidosProveedor.GetNextAutoinc: Integer; begin Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_PEDIDOS'); end; function TsrvPedidosProveedor.PuedoEliminarPedido(const Codigo: Integer): Boolean; var dsData: IDASQLCommand; begin Result := True; Connection.BeginTransaction; try dsData := schPedidosProveedor.NewCommand(Connection, 'Delete_PedidosProveedor', ['OLD_CODIGO'], [Codigo]); except on E: Exception do Result := False; end; Connection.RollbackTransaction; end; initialization TROClassFactory.Create('srvPedidosProveedor', Create_srvPedidosProveedor, TsrvPedidosProveedor_Invoker); finalization end.