unit srvMontajes_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, uDADataTable, uDACDSDataTable, DB, frxClass, frxDBSet, uDAInterfaces, uDABINAdapter; type { TsrvMontajes } TsrvMontajes = class(TDARemoteService, IsrvMontajes) bpMontajes: TDABusinessProcessor; frxDBCabecera: TfrxDBDataset; DADataCabecera: TDADataSource; tbl_Montaje: TDACDSDataTable; frxDBDetalles: TfrxDBDataset; DADataDetalles: TDADataSource; tbl_Ficha: TDACDSDataTable; DABINAdapter: TDABINAdapter; frxReport1: TfrxReport; schMontajes: TDASchema; private protected { IsrvMontajes methods } function GetNextAutoinc(const Generador: String): Integer; function PuedoEliminarMontaje(const Codigo: Integer): Boolean; function GenerateReportFicha(const Codigo: Integer): Binary; function GenerateReportEtiquetas(const Codigo: Integer; const NumEtiquetas : Integer): Binary; function DarNuevaReferencia(const TipoMontaje: String): String; end; implementation {$R *.dfm} uses {Generated:} FactuGES_Invk, uDataModuleServer, schMontajesClient_Intf; procedure Create_srvMontajes(out anInstance : IUnknown); begin anInstance := TsrvMontajes.Create(NIL); end; { srvMontajes } function TsrvMontajes.GetNextAutoinc(const Generador: String): Integer; begin Result := uDataModuleServer.GetNextAutoinc(Connection, Generador); end; function TsrvMontajes.PuedoEliminarMontaje(const Codigo: Integer): Boolean; var dsData: IDASQLCommand; begin Result := True; Connection.BeginTransaction; try dsData := schMontajes.NewCommand(Connection, 'Delete_Montajes', ['OLD_CODIGO'], [Codigo]); except on E: Exception do Result := False; end; Connection.RollbackTransaction; end; function TsrvMontajes.GenerateReportFicha(const Codigo: Integer): Binary; var dsMaster: IDADataset; dsDetail: IDADataset; AStream: TMemoryStream; begin AStream := TMemoryStream.Create; Result := Binary.Create; try dsMaster := schMontajes.NewDataset(Connection, nme_InformeCabeceraFicha, ['CODIGO'], [Codigo]); dsDetail := schMontajes.NewDataset(Connection, nme_InformeDetallesFicha, ['CODIGO'], [Codigo], False); dsDetail.Active := True; AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_Montaje, TRUE, '', TRUE, TRUE); AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_Ficha, TRUE, '', TRUE, TRUE); frxReport1.LoadFromFile(DarRutaInformes + 'InfFicha.fr3', True); frxReport1.PrepareReport; frxReport1.PreviewPages.SaveToStream(Result); finally AStream.Free; end; end; function TsrvMontajes.GenerateReportEtiquetas( const Codigo: Integer; const NumEtiquetas : Integer): Binary; var dsMaster: IDADataset; AStream: TMemoryStream; begin AStream := TMemoryStream.Create; Result := Binary.Create; try dsMaster := schMontajes.NewDataset(Connection, nme_Refresh_Montajes, ['CODIGO'], [Codigo]); AStream.Clear; ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); ServiceAdapter.ReadDataset(AStream, tbl_Montaje, TRUE, '', TRUE, TRUE); frxReport1.LoadFromFile(DarRutaInformes + 'InfEtiquetasMontajes.fr3', True); frxReport1.Variables['NumEtiquetas'] := NumEtiquetas; frxReport1.PrepareReport; frxReport1.PreviewPages.SaveToStream(Result); finally AStream.Free; end; end; function TsrvMontajes.DarNuevaReferencia(const TipoMontaje: String): String; var dsReferencia: IDADataset; begin dsReferencia := schMontajes.NewDataset(Connection, 'DarNuevaReferencia', ['TIPO'], [TipoMontaje]); Result := dsReferencia.FieldByName('REFERENCIA').AsString; end; initialization TROClassFactory.Create('srvMontajes', Create_srvMontajes, TsrvMontajes_Invoker); finalization end.