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/Pedidos a proveedor/Servidor/srvPedidosProveedor_Impl.pas

127 lines
4.1 KiB
ObjectPascal

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.