git-svn-id: https://192.168.0.254/svn/Proyectos.AlonsoYSal_FactuGES/trunk@12 9a1d36f3-7752-2d40-8ccb-50eb49674c68
164 lines
5.5 KiB
ObjectPascal
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.
|