Index: VerpakkingsDefinitie/VerpakkingsDefinitie.dproj
===================================================================
diff -u -r573 -r579
--- VerpakkingsDefinitie/VerpakkingsDefinitie.dproj (.../VerpakkingsDefinitie.dproj) (revision 573)
+++ VerpakkingsDefinitie/VerpakkingsDefinitie.dproj (.../VerpakkingsDefinitie.dproj) (revision 579)
@@ -119,6 +119,7 @@
dfm
+
Cfg_2
Base
Index: VerpakkingsDefinitie/WS/ProductsAgent.pas
===================================================================
diff -u -r578 -r579
--- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 578)
+++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 579)
@@ -4,7 +4,7 @@
uses SysUtils, System.Classes,
ObserverPattern, ApplicationContext,
- SelectService, OptiServerService;
+ SelectService, OptiServerService, UI_Data;
// Resource strings are stored as resources and linked into the executable or
// library so that they can be modified without recompiling the program.
@@ -19,6 +19,10 @@
private
FSelectServerSoap: SelectService.ProdSelectServerSoap;
FOptiBoxServerSoap: OptiServerService.OptiBoxServerSoap;
+ function GeefUiConfigLink(UserContext: TUserContext; UiInstellingenContext: TUiInstellingenContext): string;
+ procedure RegistreerMislukteOpzoeking(UiInstellingenContext: TUiInstellingenContext;
+ pxStatusObj: OptiServerService.pxStatus); overload;
+ procedure RegistreerLoadResultaten(UiInstellingenContext: TUiInstellingenContext; Instellingen: UI_Data.IXMLOptiBoxType);
function GeefBruikbareLijnenUitXMLDataSet(DataSetXml: string): TStringList;
procedure RegistreerZoekResultaten(ProductsContext: TProductsContext; DataSet: string); overload;
procedure RegistreerMislukteOpzoeking(ProductsContext: TProductsContext; pxStatusObj: SelectService.pxStatus); overload;
@@ -30,6 +34,7 @@
ProductDetailContext: TProductDetailContext): string;
public
Constructor Create();
+ procedure LaadUIInstellingen(UserContext: TUserContext; UiInstellingenContext: TUiInstellingenContext);
procedure ZoekOp(UserContext: TUserContext; ProductsContext: TProductsContext; Zoekmethode: TZoekMethode; Zoek: string;
KLNr: string; LevNr: string; StockType: string; Taal: string);
procedure ZoekProductDataMetProductNr(ProductNr: Integer; UserContext: TUserContext;
@@ -47,6 +52,76 @@
FOptiBoxServerSoap := OptiServerService.GetOptiBoxServerSoap(false, OPTI_SERVER_URL, nil);
end;
+function TProductsAgent.GeefUiConfigLink(UserContext: TUserContext; UiInstellingenContext: TUiInstellingenContext): string;
+var
+ ZoekData: OptiServerService.GetUIResource;
+ GetUIResourceResponseObj: OptiServerService.GetUIResourceResponse;
+begin
+ ZoekData := nil;
+ try
+ // Request
+ ZoekData := OptiServerService.GetUIResource.Create();
+ ZoekData.SessionKey := UserContext.SessionKey;
+
+ GetUIResourceResponseObj := FOptiBoxServerSoap.GetUIResource(ZoekData);
+
+ // Response
+ if GetUIResourceResponseObj.GetUIResourceResult <> nil then
+ // Mislukt
+ RegistreerMislukteOpzoeking(UiInstellingenContext, GetUIResourceResponseObj.GetUIResourceResult);
+
+ // Gelukt, bruikbare informatie uit antwoord halen
+ if GetUIResourceResponseObj.varUIResource <> nil then
+ Result := GetUIResourceResponseObj.varUIResource.ValuesURL
+ else
+ Result := ''
+
+ finally
+ ZoekData.Free();
+ end;
+end;
+
+procedure TProductsAgent.RegistreerMislukteOpzoeking(UiInstellingenContext: TUiInstellingenContext;
+ pxStatusObj: OptiServerService.pxStatus);
+begin
+ // Ander velden leegmaken
+ UiInstellingenContext.Instellingen := nil;
+
+ UiInstellingenContext.IsOK := pxStatusObj.IsOK;
+ UiInstellingenContext.ErrorMessage := pxStatusObj.Message_;
+ UiInstellingenContext.InternalErrorMessage := pxStatusObj.InternalMessage;
+
+ UiInstellingenContext.NotifyChanged();
+end;
+
+procedure TProductsAgent.LaadUIInstellingen(UserContext: TUserContext; UiInstellingenContext: TUiInstellingenContext);
+var
+ UiConfigLink: string;
+ OptiBox: UI_Data.IXMLOptiBoxType;
+begin
+ UiConfigLink := GeefUiConfigLink(UserContext, UiInstellingenContext);
+
+ if UiConfigLink = '' then
+ exit; // Return error response from previous call
+
+ OptiBox := LoadOptiBox(UiConfigLink);
+
+ RegistreerLoadResultaten(UiInstellingenContext, OptiBox);
+end;
+
+procedure TProductsAgent.RegistreerLoadResultaten(UiInstellingenContext: TUiInstellingenContext;
+ Instellingen: UI_Data.IXMLOptiBoxType);
+begin
+ // Ander velden leegmaken
+ UiInstellingenContext.IsOK := True;
+ UiInstellingenContext.ErrorMessage := '';
+ UiInstellingenContext.InternalErrorMessage := '';
+
+ UiInstellingenContext.Instellingen := Instellingen;
+
+ UiInstellingenContext.NotifyChanged();
+end;
+
procedure TProductsAgent.ZoekOp(UserContext: TUserContext; ProductsContext: TProductsContext; Zoekmethode: TZoekMethode;
Zoek: string; KLNr: string; LevNr: string; StockType: string; Taal: string);
var
@@ -181,7 +256,7 @@
LijnenProduct.Add('