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('