Index: VerpakkingsDefinitie/WS/ProductsAgent.pas =================================================================== diff -u -r607 -r608 --- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 607) +++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 608) @@ -50,6 +50,8 @@ ProductVerpakkingenContext: TProductVerpakkingenContext): TList; // Verpakking meta procedure RegistreerProductGroepenDataset(ProductVerpakkingMetaContext: TProductVerpakkingMetaContext; DataSet: string); + procedure RegistreerProductVerpakkingMetaDataset(ProductVerpakkingMetaContext: TProductVerpakkingMetaContext; + DataSet: string); procedure RegistreerGelukteVerpakkingMetaQuery(ProductVerpakkingMetaContext: TProductVerpakkingMetaContext); procedure RegistreerMislukteVerpakkingMetaQuery(ProductVerpakkingMetaContext: TProductVerpakkingMetaContext; pxStatusObj: OptiServerService.pxStatus); @@ -73,6 +75,8 @@ ProductVerpakkingenContext: TProductVerpakkingenContext); // Verpakking meta procedure LaadProductGroepen(UserContext: TUserContext; ProductVerpakkingMetaContext: TProductVerpakkingMetaContext); + procedure LaadProductVerpakkingMetas(ProductGroep: string; UserContext: TUserContext; + ProductVerpakkingMetaContext: TProductVerpakkingMetaContext); end; implementation @@ -855,7 +859,7 @@ begin // Default data object casten. Dit uit klasse halen bespaart extra call. if ProductVerpakking.RawDefaultData = nil then - raise Exception.Create('Default data raw object mag niet leeg zijn') + raise Exception.Create('Default data raw object mag niet leeg zijn'){ TODO : Controleren dat nieuwe verpakking nod geen ID heeft en dus niet kan worden opgeslagen } else DefaultDataObj := pxBoxData(ProductVerpakking.RawDefaultData); @@ -961,8 +965,7 @@ begin // Gelukt RegistreerGelukteVerpakkingMetaQuery(ProductVerpakkingMetaContext); - RegistreerProductGroepenDataset(ProductVerpakkingMetaContext, - GetAllProductGroepenResponseObj.varDataSet); + RegistreerProductGroepenDataset(ProductVerpakkingMetaContext, GetAllProductGroepenResponseObj.varDataSet); end else // Mislukt @@ -1024,6 +1027,100 @@ end; end; +procedure TProductsAgent.LaadProductVerpakkingMetas(ProductGroep: string; UserContext: TUserContext; + ProductVerpakkingMetaContext: TProductVerpakkingMetaContext); +var + RequestData: OptiServerService.GetMetaViaProductGroep; + GetMetaViaProductGroepResponseObj: OptiServerService.GetMetaViaProductGroepResponse; +begin + RequestData := nil; + try + // Request + RequestData := OptiServerService.GetMetaViaProductGroep.Create(); + RequestData.SessionKey := UserContext.SessionKey; + RequestData.ProductGroep := ProductGroep; + + // Verpakking wissen + GetMetaViaProductGroepResponseObj := FOptiBoxServerSoap.GetMetaViaProductGroep(RequestData); + + // Response + if GetMetaViaProductGroepResponseObj.GetMetaViaProductGroepResult = nil then + begin + // Gelukt + RegistreerGelukteVerpakkingMetaQuery(ProductVerpakkingMetaContext); + RegistreerProductVerpakkingMetaDataset(ProductVerpakkingMetaContext, GetMetaViaProductGroepResponseObj.varDataSet); + end + else + // Mislukt + RegistreerMislukteVerpakkingMetaQuery(ProductVerpakkingMetaContext, + GetMetaViaProductGroepResponseObj.GetMetaViaProductGroepResult); + + finally + FreeAndNil(RequestData); + end; +end; + +procedure TProductsAgent.RegistreerProductVerpakkingMetaDataset(ProductVerpakkingMetaContext: TProductVerpakkingMetaContext; + DataSet: string); +var + TempStr: string; + Lijn: string; + Lijnen: TStringList; + LijnenMeta: TStringList; + XMLDoc: IXMLDocument; + MetaDatas: TList; + Meta: TProductVerpakkingMeta; +begin + try + // Producten inladen + LijnenMeta := TStringList.Create; + Lijnen := GeefBruikbareLijnenUitXMLDataSet(DataSet); + MetaDatas := TList.Create(); + // De 'Select' elementen overlopen en elk element mappen naar een property van een instantie. + // Deze instantie toevoegen aan de lijst. + for Lijn in Lijnen do + begin + if ContainsStr(Lijn, '') then + begin + // Meta blok afgerond + + // De eindtag zit geplakt aan de tag voor het nieuwe product. Bv