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/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas

164 lines
5.5 KiB
ObjectPascal

unit srvAlbaranesCliente_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, uDAInterfaces, frxClass, DB, frxDBSet,
uDACDSDataTable, uDABINAdapter;
type
{ TsrvAlbaranesCliente }
TsrvAlbaranesCliente = class(TDARemoteService, IsrvAlbaranesCliente)
bpAlbaranes: TDABusinessProcessor;
frxDBDetalles: TfrxDBDataset;
frxDBCabecera: TfrxDBDataset;
DADataCabecera: TDADataSource;
DADataDetalles: TDADataSource;
tbl_AlbaranPago: TDACDSDataTable;
tbl_DetallesAlbaranPago: TDACDSDataTable;
DABINAdapter: TDABINAdapter;
frxReport1: TfrxReport;
schAlbaranesCliente: TDASchema;
private
protected
function GetNextAutoinc: Integer;
function ExisteAlbaranDePresupuesto(const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean;
function GenerateReport(const Codigo: Integer): Binary;
function DarNuevaReferencia: String;
function PuedoEliminarAlbaran(const CodigoAlbaran: Integer): Boolean;
function DarSumaImportes(const FechaIni: DateTime; const FechaFin: DateTime): TstImportes;
end;
implementation
{$R *.dfm}
uses
{Generated:} FactuGES_Invk, uDataModuleServer, Forms, Dialogs,
schAlbaranesClienteClient_Intf;
procedure Create_srvAlbaranesCliente(out anInstance : IUnknown);
begin
anInstance := TsrvAlbaranesCliente.Create(NIL);
end;
{ TsrvAlbaranesCliente }
function TsrvAlbaranesCliente.DarSumaImportes(const FechaIni,
FechaFin: DateTime): TstImportes;
var
dsSuma: IDADataset;
AImportes : TstImportes;
begin
Connection.BeginTransaction;
AImportes := TstImportes.Create;
dsSuma := schAlbaranesCliente.NewDataset(Connection, nme_DarSumaImportes, ['FECHAINI', 'FECHAFIN'], [FechaIni, FechaFin]);
try
dsSuma.Open;
if dsSuma.RecordCount > 0 then
with AImportes do
begin
BaseImponible := dsSuma.FieldByName(fld_DarSumaImportesBASEIMPONIBLE).AsCurrency;
ImporteIVA := dsSuma.FieldByName(fld_DarSumaImportesIMPORTEIVA).AsCurrency;
ImporteTotal := dsSuma.FieldByName(fld_DarSumaImportesIMPORTETOTAL).AsCurrency;
end;
Result := AImportes;
finally
dsSuma.Close;
end;
Connection.RollbackTransaction;
end;
function TsrvAlbaranesCliente.DarNuevaReferencia: String;
var
dsReferencia: IDADataset;
begin
dsReferencia := schAlbaranesCliente.NewDataset(Connection, 'DarReferenciaAlbaran');
dsReferencia.Active := True;
Result := dsReferencia.FieldByName('REFERENCIA').AsString;
end;
function TsrvAlbaranesCliente.ExisteAlbaranDePresupuesto(
const CodigoPresupuesto: Integer; out CodigoAlbaran: Integer): Boolean;
var
ADataSet : IDADataset;
begin
Result := False;
ADataSet := schAlbaranesCliente.NewDataset(Connection, nme_AlbaranDePresupuesto);
ADataSet.ParamByName('CODIGOPRESUPUESTO').AsInteger := CodigoPresupuesto;
ADataSet.Open;
if ADataSet.RecordCount > 0 then
begin
CodigoAlbaran := ADataSet.FieldByName(fld_AlbaranDePresupuestoCODIGO).AsInteger;
Result := True;
end;
ADataSet.Close;
end;
function TsrvAlbaranesCliente.GenerateReport(const Codigo: Integer): Binary;
var
dsMaster: IDADataset;
dsDetail: IDADataset;
AStream: TMemoryStream;
begin
AStream := TMemoryStream.Create;
Result := Binary.Create;
try
dsMaster := schAlbaranesCliente.NewDataset(Connection, 'InformeCabeceraAlbaranPago', ['CODIGO'], [Codigo]);
dsDetail := schAlbaranesCliente.NewDataset(Connection, 'InformeDetallesAlbaranPago', ['CODIGOALBARAN'], [Codigo]);
AStream.Clear;
ServiceAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
ServiceAdapter.ReadDataset(AStream, tbl_AlbaranPago, TRUE, '', TRUE, TRUE);
AStream.Clear;
ServiceAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1);
ServiceAdapter.ReadDataset(AStream, tbl_DetallesAlbaranPago, TRUE, '', TRUE, TRUE);
frxReport1.LoadFromFile(DarRutaInformes + 'InfAlbaran.fr3', True);
frxReport1.PrepareReport;
frxReport1.PreviewPages.SaveToStream(Result);
finally
AStream.Free;
end;
end;
function TsrvAlbaranesCliente.GetNextAutoinc: Integer;
begin
Result := uDataModuleServer.GetNextAutoinc(Connection, 'GEN_ALBARANESCLIENTE');
end;
function TsrvAlbaranesCliente.PuedoEliminarAlbaran(
const CodigoAlbaran: Integer): Boolean;
var
dsAlbaran: IDASQLCommand;
begin
Result := True;
Connection.BeginTransaction;
try
dsAlbaran := schAlbaranesCliente.NewCommand(Connection, 'Delete_AlbaranCliente', ['OLD_CODIGO'], [CodigoAlbaran]);
except
on E: Exception do
Result := False;
end;
Connection.RollbackTransaction;
end;
initialization
TROClassFactory.Create('srvAlbaranesCliente', Create_srvAlbaranesCliente, TsrvAlbaranesCliente_Invoker);
finalization
end.