This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
AlonsoYSal_FactuGES/Modulos/Montajes/Servidor/srvMontajes_Impl.pas
2007-06-21 16:02:50 +00:00

143 lines
4.7 KiB
ObjectPascal

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.