diff --git a/Source/Informes/InfEtiquetasAlbaranCliente.fr3 b/Source/Informes/InfEtiquetasAlbaranCliente.fr3
new file mode 100644
index 0000000..07fd716
--- /dev/null
+++ b/Source/Informes/InfEtiquetasAlbaranCliente.fr3
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas
index 411bd0f..b319fc8 100644
--- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas
+++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteController.pas
@@ -49,8 +49,8 @@ type
procedure Preview(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
procedure Print(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
- procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente);
- procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente);
+ procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
+ procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
procedure RecalcularImportes(AAlbaran: IBizAlbaranCliente);
function EsModificable(AAlbaran: IBizAlbaranCliente): Boolean;
@@ -149,8 +149,8 @@ type
procedure Preview(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
procedure Print(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
- procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente);
- procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente);
+ procedure EtiquetasPreview(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
+ procedure EtiquetasPrint(AAlbaran : IBizAlbaranCliente; AllItems: Boolean = false);
function DarListaAnosAlbaranes: TStringList;
procedure FiltrarAno(AAlbaran: IBizAlbaranCliente; ADynWhereDataTable: WideString; const Ano: String);
@@ -857,27 +857,71 @@ begin
Result := not (AAlbaran.ID_FACTURA > 0);
end;
-procedure TAlbaranesClienteController.EtiquetasPreview(AAlbaran: IBizAlbaranCliente);
+procedure TAlbaranesClienteController.EtiquetasPreview(AAlbaran: IBizAlbaranCliente; AllItems: Boolean = false);
var
AReportController : IAlbaranesClienteReportController;
+ ID_Albaranes: TIntegerList;
+
begin
AReportController := TAlbaranesClienteReportController.Create;
+ ID_Albaranes := TIntegerList.Create;
+
try
- AReportController.EtiquetasPreview(AAlbaran.ID);
+ //Si deseamos previsualizar todos los items del objeto albaran
+ if AllItems then
+ begin
+ with AAlbaran.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ ID_Albaranes.Add(AAlbaran.ID);
+ Next;
+ end;
+ end;
+ end
+ //Solo previsualizamos el item seleccionado
+ else
+ ID_Albaranes.Add(AAlbaran.ID);
+
+ AReportController.EtiquetasPreview(ID_Albaranes);
finally
AReportController := NIL;
+ FreeANDNIL(ID_Albaranes);
end;
end;
-procedure TAlbaranesClienteController.EtiquetasPrint(AAlbaran: IBizAlbaranCliente);
+procedure TAlbaranesClienteController.EtiquetasPrint(AAlbaran: IBizAlbaranCliente; AllItems: Boolean = false);
var
AReportController : IAlbaranesClienteReportController;
+ ID_Albaranes: TIntegerList;
+
begin
AReportController := TAlbaranesClienteReportController.Create;
+ ID_Albaranes := TIntegerList.Create;
+
try
- AReportController.EtiquetasPrint(AAlbaran.ID);
+ //Si deseamos previsualizar todos los items del objeto albaran
+ if AllItems then
+ begin
+ with AAlbaran.DataTable do
+ begin
+ First;
+ while not EOF do
+ begin
+ ID_Albaranes.Add(AAlbaran.ID);
+ Next;
+ end;
+ end;
+ end
+ //Solo previsualizamos el item seleccionado
+ else
+ ID_Albaranes.Add(AAlbaran.ID);
+
+ AReportController.EtiquetasPrint(ID_Albaranes);
finally
AReportController := NIL;
+ FreeANDNIL(ID_Albaranes);
end;
end;
diff --git a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas
index ddb349b..190d1fe 100644
--- a/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas
+++ b/Source/Modulos/Albaranes de cliente/Controller/uAlbaranesClienteReportController.pas
@@ -12,10 +12,10 @@ type
['{4BCC7A93-3322-494C-A3FA-118F4B62CB15}']
procedure Preview(const AListaID : TIntegerList);
procedure Print(const AListaID : TIntegerList);
- procedure EtiquetasPreview(const AID : integer);
- procedure EtiquetasPrint(const AID : integer);
+ procedure EtiquetasPreview(const AListaID: TIntegerList);
+ procedure EtiquetasPrint(const AListaID: TIntegerList);
function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean;
- function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean;
+ function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean;
end;
TAlbaranesClienteReportController = class(TControllerBase, IAlbaranesClienteReportController)
@@ -30,9 +30,9 @@ type
procedure Preview(const AListaID : TIntegerList);
procedure Print(const AListaID : TIntegerList);
function ExportToWord(const AID: Integer; const AFileName : String = ''): Boolean;
- function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean;
- procedure EtiquetasPreview(const AID : integer);
- procedure EtiquetasPrint(const AID : integer);
+ function ExportToPDF(const AID: Integer; const AFileName : String = ''): Boolean;
+ procedure EtiquetasPreview(const AListaID: TIntegerList);
+ procedure EtiquetasPrint(const AListaID: TIntegerList);
end;
@@ -64,7 +64,7 @@ begin
inherited;
end;
-procedure TAlbaranesClienteReportController.EtiquetasPreview(const AID: integer);
+procedure TAlbaranesClienteReportController.EtiquetasPreview(const AListaID: TIntegerList);
var
AStream: Binary;
AEditor : IEditorAlbaranesClientePreview;
@@ -73,7 +73,7 @@ begin
ShowHourglassCursor;
try
- AStream := FDataModule.GetEtiquetas(AID);
+ AStream := FDataModule.GetEtiquetas(AListaID);
try
CreateEditor('EditorAlbaranesClientePreview', IEditorAlbaranesClientePreview, AEditor);
if Assigned(AEditor) then
@@ -92,7 +92,7 @@ begin
end;
end;
-procedure TAlbaranesClienteReportController.EtiquetasPrint(const AID: integer);
+procedure TAlbaranesClienteReportController.EtiquetasPrint(const AListaID: TIntegerList);
var
AStream: Binary;
AEditor : IEditorAlbaranesClientePreview;
@@ -101,7 +101,7 @@ begin
ShowHourglassCursor;
try
- AStream := FDataModule.GetEtiquetas(AID);
+ AStream := FDataModule.GetEtiquetas(AListaID);
try
CreateEditor('EditorAlbaranesClientePreview', IEditorAlbaranesClientePreview, AEditor);
if Assigned(AEditor) then
diff --git a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas
index 6f9ad0f..313ebf8 100644
--- a/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas
+++ b/Source/Modulos/Albaranes de cliente/Data/uDataModuleAlbaranesCliente.pas
@@ -41,7 +41,7 @@ type
// Report
function GetRptAlbaranes(const ListaID: TIntegerList): Binary;
function GetRptWordAlbaran(const AID: Integer): Binary;
- function GetEtiquetas(const AID: Integer): Binary;
+ function GetEtiquetas(const ListaID: TIntegerList): Binary;
function GetRptPDFAlbaran(const AID: Integer): Binary;
function GetAnosItems : TStringList;
@@ -165,9 +165,16 @@ begin
end;
end;
-function TDataModuleAlbaranesCliente.GetEtiquetas(const AID: Integer): Binary;
+function TDataModuleAlbaranesCliente.GetEtiquetas(const ListaID: TIntegerList): Binary;
+var
+ AParam : TIntegerArray;
begin
- Result := (RORemoteService as IsrvAlbaranesCliente).GenerarInformeEtiquetas(AID)
+ AParam := ListaID.ToIntegerArray;
+ try
+ Result := (RORemoteService as IsrvAlbaranesCliente).GenerarInformeEtiquetas(AParam)
+ finally
+// FreeAndNil(AParam);
+ end;
end;
function TDataModuleAlbaranesCliente.GetItem(const ID: Integer): IBizAlbaranCliente;
diff --git a/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas b/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas
index d9464ef..64178cf 100644
--- a/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas
+++ b/Source/Modulos/Albaranes de cliente/Model/Data/uIDataModuleAlbaranesClienteReport.pas
@@ -11,7 +11,7 @@ type
function GetRptAlbaranes(const AListaID: TIntegerList): Binary;
function GetRptWordAlbaran(const AID: Integer): Binary;
function GetRptPDFAlbaran(const AID: Integer): Binary;
- function GetEtiquetas(const AID: Integer): Binary;
+ function GetEtiquetas(const ListaID: TIntegerList): Binary;
end;
implementation
diff --git a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas
index e8c0451..2c43439 100644
--- a/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas
+++ b/Source/Modulos/Albaranes de cliente/Reports/uRptAlbaranesCliente_Server.pas
@@ -69,7 +69,7 @@ type
procedure _GenerarAlbaran(const AID: Integer);
public
function GenerarAlbaran(const AListaID : TIntegerArray): Binary;
- function GenerarEtiquetas(const AID : Integer): Binary;
+ function GenerarEtiquetas(const AListaID : TIntegerArray): Binary;
function GenerarAlbaranEnPDF(const ListaID : TIntegerArray): Binary;
end;
@@ -170,41 +170,36 @@ begin
end;
end;
-function TRptAlbaranesCliente.GenerarEtiquetas(const AID: Integer): Binary;
-{var
- dsMaster: IDADataset;
- dsDetail: IDADataset;
- AStream: TMemoryStream;}
+function TRptAlbaranesCliente.GenerarEtiquetas(const AListaID : TIntegerArray): Binary;
+var
+ i: Integer;
+ AInforme: Variant;
+
begin
- Result := NIL;
-{
- AStream := TMemoryStream.Create;
Result := Binary.Create;
- FConnection.BeginTransaction;
try
- dsMaster := schReport.NewDataset(FConnection, ds_InformeCabecera, ['ID'], [AID]);
- dsDetail := schReport.NewDataset(FConnection, ds_InformeDetallesEtiquetas, ['ID_ALBARAN'], [AID], False);
+ //Vamos generando todos y cada uno de los albaranes recibidos
+ for i := 0 to AListaID.Count - 1 do
+ begin
+ FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ try
+ tbl_Cabecera.Active := False;
+ tbl_Cabecera.ParamByName('ID').AsInteger := AListaID.Items[i];
+ tbl_Cabecera.Active := True;
- AStream.Clear;
- DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
- DABINAdapter.ReadDataset(AStream, tbl_Cabecera, TRUE, '', TRUE, TRUE);
+ AInforme := DarRutaFichero(DarRutaInformes, rptInfEtiquetas);
+ if VarIsNull(AInforme) then
+ raise Exception.Create (('Error Servidor: GenerarEtiquetas, no encuentra informe ' + rptInfEtiquetas));
- AStream.Clear;
- DABINAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1);
- DABINAdapter.ReadDataset(AStream, tbl_Detalles, TRUE, '', TRUE, TRUE);
-
- frxReport.LoadFromFile(DarRutaInformes + rptInfEtiquetas, True);
- if withRefCliente then
- frxReport.Variables.Variables['withRefCliente'] := 1
- else
- frxReport.Variables.Variables['withRefCliente'] := 0;
- frxReport.PrepareReport(False);
+ frxReport.LoadFromFile(AInforme, True);
+ frxReport.PrepareReport(False);
+ finally
+ FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
+ end;
+ end;
frxReport.PreviewPages.SaveToStream(Result);
finally
- AStream.Free;
- FConnection.RollbackTransaction;
end;
-}
end;
end.
diff --git a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas
index 6105068..a34bd3f 100644
--- a/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas
+++ b/Source/Modulos/Albaranes de cliente/Servidor/srvAlbaranesCliente_Impl.pas
@@ -34,7 +34,7 @@ type
protected
{ IsrvAlbaranesCliente methods }
function GenerarInforme(const ListaID: TIntegerArray): Binary;
- function GenerarInformeEtiquetas(const ID: Integer): Binary;
+ function GenerarInformeEtiquetas(const ListaID : TIntegerArray): Binary;
function GenerarInformeEnWord(const ID: Integer): Binary;
function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
end;
@@ -92,15 +92,13 @@ begin
end;
end;
-function TsrvAlbaranesCliente.GenerarInformeEtiquetas(const ID: Integer): Binary;
+function TsrvAlbaranesCliente.GenerarInformeEtiquetas(const ListaID : TIntegerArray): Binary;
var
AReportGenerator : TRptAlbaranesCliente;
begin
- Result := NIL;
-
AReportGenerator := TRptAlbaranesCliente.Create(nil);
try
- Result := AReportGenerator.GenerarEtiquetas(ID);
+ Result := AReportGenerator.GenerarEtiquetas(ListaID);
finally
FreeAndNIL(AReportGenerator);
end;
diff --git a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas
index 853711c..e2d6c9f 100644
--- a/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas
+++ b/Source/Modulos/Albaranes de cliente/Views/uEditorAlbaranesCliente.pas
@@ -425,6 +425,18 @@ begin
if Respuesta <> IDCANCEL then
begin
case JsImprimirDialog.CustomButtonResult of
+ 300 : begin // Lista de elementos visibles
+ if AllItems then
+ begin
+ SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Albaranes as ISeleccionable).SelectedRecords);
+ AAlbaranes := (Controller as IAlbaranesClienteController).ExtraerSeleccionados(Albaranes) as IBizAlbaranCliente;
+ end
+ else
+ AAlbaranes := Albaranes;
+
+ if Assigned(AAlbaranes) then
+ FController.EtiquetasPrint(AAlbaranes, AllItems);
+ end;
200 : begin // Lista de elementos visibles
inherited;
end;
@@ -522,9 +534,8 @@ begin
AAlbaranes := Albaranes;
if Assigned(AAlbaranes) then
- FController.Preview(AAlbaranes, AllItems);
+ FController.EtiquetasPreview(AAlbaranes, AllItems);
end;
-
200 : begin // Lista de elementos visibles
inherited;
end;
diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL
index 5485d55..40e0237 100644
--- a/Source/Servicios/FactuGES.RODL
+++ b/Source/Servicios/FactuGES.RODL
@@ -370,7 +370,7 @@
-
+
diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas
index 9666cd1..2660747 100644
--- a/Source/Servicios/FactuGES_Intf.pas
+++ b/Source/Servicios/FactuGES_Intf.pas
@@ -587,7 +587,7 @@ type
IsrvAlbaranesCliente = interface(IDataAbstractService)
['{6E910718-9AB0-47BB-9875-B0DE66A68D7A}']
function GenerarInforme(const ListaID: TIntegerArray): Binary;
- function GenerarInformeEtiquetas(const ID: Integer): Binary;
+ function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary;
function GenerarInformeEnWord(const ID: Integer): Binary;
function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
end;
@@ -603,7 +603,7 @@ type
function __GetInterfaceName:string; override;
function GenerarInforme(const ListaID: TIntegerArray): Binary;
- function GenerarInformeEtiquetas(const ID: Integer): Binary;
+ function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary;
function GenerarInformeEnWord(const ID: Integer): Binary;
function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
end;
@@ -1898,15 +1898,16 @@ begin
end
end;
-function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ID: Integer): Binary;
+function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary;
begin
try
result := nil;
__Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEtiquetas');
- __Message.Write('ID', TypeInfo(Integer), ID, []);
+ __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
__Message.Finalize;
__TransportChannel.Dispatch(__Message);
+ ListaID.Free;
__Message.Read('Result', TypeInfo(Binary), result, []);
finally
diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas
index 60633af..dd6ab10 100644
--- a/Source/Servicios/FactuGES_Invk.pas
+++ b/Source/Servicios/FactuGES_Invk.pas
@@ -1101,17 +1101,18 @@ begin
end;
procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions);
-{ function GenerarInformeEtiquetas(const ID: Integer): Binary; }
+{ function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; }
var
- ID: Integer;
+ ListaID: FactuGES_Intf.TIntegerArray;
lResult: Binary;
__lObjectDisposer: TROObjectDisposer;
begin
+ ListaID := nil;
lResult := nil;
try
- __Message.Read('ID', TypeInfo(Integer), ID, []);
+ __Message.Read('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
- lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEtiquetas(ID);
+ lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEtiquetas(ListaID);
__Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvAlbaranesCliente', 'GenerarInformeEtiquetasResponse');
__Message.Write('Result', TypeInfo(Binary), lResult, []);
@@ -1121,6 +1122,7 @@ begin
finally
__lObjectDisposer := TROObjectDisposer.Create(__Instance);
try
+ __lObjectDisposer.Add(ListaID);
__lObjectDisposer.Add(lResult);
finally
__lObjectDisposer.Free();
diff --git a/Source/Servicios/RODLFILE.res b/Source/Servicios/RODLFILE.res
index b743f7b..9127952 100644
Binary files a/Source/Servicios/RODLFILE.res and b/Source/Servicios/RODLFILE.res differ