Index: VerpakkingsDefinitie/WS/ProductsAgent.pas =================================================================== diff -u -r599 -r600 --- VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 599) +++ VerpakkingsDefinitie/WS/ProductsAgent.pas (.../ProductsAgent.pas) (revision 600) @@ -36,6 +36,7 @@ // Verpakkingen procedure MapPxBoxDataNaarProductVerpakking(pxBoxDataObj: OptiServerService.pxBoxData; ProductVerpakking: TProductVerpakking); procedure MapProductVerpakkingNaarPxBoxData(ProductVerpakking: TProductVerpakking; pxBoxDataObj: OptiServerService.pxBoxData); + procedure RegistreerGelukteVerpakkingQuery(ProductVerpakkingenContext: TProductVerpakkingenContext); procedure RegistreerMislukteVerpakkingQuery(ProductVerpakkingenContext: TProductVerpakkingenContext; pxStatusObj: OptiServerService.pxStatus); overload; function GetVerpakkingIDsViaProduct(ProductNr: Integer; UserContext: TUserContext; @@ -60,6 +61,8 @@ ProductVerpakkingenContext: TProductVerpakkingenContext); procedure OpslaanProductVerpakking(ProductVerpakking: TProductVerpakking; UserContext: TUserContext; ProductVerpakkingenContext: TProductVerpakkingenContext); + procedure VerwijderVerpakking(ProductVerpakking: TProductVerpakking; UserContext: TUserContext; + ProductVerpakkingenContext: TProductVerpakkingenContext); end; implementation @@ -541,9 +544,7 @@ // Gelukt // Andere velden juist zetten - ProductVerpakkingenContext.IsOK := True; - ProductVerpakkingenContext.ErrorMessage := ''; - ProductVerpakkingenContext.InternalErrorMessage := ''; + RegistreerGelukteVerpakkingQuery(ProductVerpakkingenContext); MapPxBoxDataNaarProductVerpakking(GetBoxDataViaIDResponseObj.varBoxData, NieuweVerpakking); @@ -593,9 +594,8 @@ if (Product = nil) or (CutOrder < 0) then exit; - ProductVerpakkingenContext.IsOK := True; - ProductVerpakkingenContext.ErrorMessage := ''; - ProductVerpakkingenContext.InternalErrorMessage := ''; + // 'Gelukte' query emuleren + RegistreerGelukteVerpakkingQuery(ProductVerpakkingenContext); // Nieuwe productverpakking aanmaken NieuweProductVerpakking := TProductVerpakking.Create(); @@ -658,22 +658,67 @@ // Response if SaveBoxDataResponseObj.SaveBoxDataResult.IsOK then begin - // Gelukt, ID juist zetten + // Gelukt + RegistreerGelukteVerpakkingQuery(ProductVerpakkingenContext); + // ID juist zetten ProductVerpakking.ID := SaveBoxDataResponseObj.SaveBoxDataResult.Data; ProductVerpakkingenContext.NotifyChanged(); end else begin // Mislukt - ProductVerpakkingenContext.IsOK := SaveBoxDataResponseObj.SaveBoxDataResult.IsOK; - ProductVerpakkingenContext.ErrorMessage := SaveBoxDataResponseObj.SaveBoxDataResult.Message_; - ProductVerpakkingenContext.InternalErrorMessage := SaveBoxDataResponseObj.SaveBoxDataResult.InternalMessage; + RegistreerMislukteVerpakkingQuery(ProductVerpakkingenContext, SaveBoxDataResponseObj.SaveBoxDataResult); end; finally FreeAndNil(RequestData); end; end; +procedure TProductsAgent.VerwijderVerpakking(ProductVerpakking: TProductVerpakking; UserContext: TUserContext; + ProductVerpakkingenContext: TProductVerpakkingenContext); +var + RequestData: OptiServerService.DeleteBoxDataViaID; + DeleteBoxDataViaIDResponseObj: OptiServerService.DeleteBoxDataViaIDResponse; +begin + RequestData := nil; + + // Als product nog niet is opgeslagen op server heeft het geen ID + // Enkel verwijderen uit lijst en stoppen. + if ProductVerpakking.ID = '' then + begin + ProductVerpakkingenContext.VerwijderProductVerpakking(ProductVerpakking); + exit; + end; + + // Eerst verwijderen van server, dan lokaal. + try + // Request + RequestData := OptiServerService.DeleteBoxDataViaID.Create(); + RequestData.SessionKey := UserContext.SessionKey; + RequestData.BoxDataID := ProductVerpakking.ID; + + // Verpakking wissen + DeleteBoxDataViaIDResponseObj := FOptiBoxServerSoap.DeleteBoxDataViaID(RequestData); + + // Response + if DeleteBoxDataViaIDResponseObj.DeleteBoxDataViaIDResult = nil then + begin + // Gelukt + RegistreerGelukteVerpakkingQuery(ProductVerpakkingenContext); + end + else + begin + // Mislukt + RegistreerMislukteVerpakkingQuery(ProductVerpakkingenContext, DeleteBoxDataViaIDResponseObj.DeleteBoxDataViaIDResult); + end; + + // Wissen uit lijst + ProductVerpakkingenContext.VerwijderProductVerpakking(ProductVerpakking); + finally + FreeAndNil(RequestData); + end; +end; + procedure TProductsAgent.MapPxBoxDataNaarProductVerpakking(pxBoxDataObj: OptiServerService.pxBoxData; ProductVerpakking: TProductVerpakking); var @@ -820,11 +865,16 @@ end; end; +procedure TProductsAgent.RegistreerGelukteVerpakkingQuery(ProductVerpakkingenContext: TProductVerpakkingenContext); +begin + ProductVerpakkingenContext.IsOK := True; + ProductVerpakkingenContext.ErrorMessage := ''; + ProductVerpakkingenContext.InternalErrorMessage := ''; +end; + procedure TProductsAgent.RegistreerMislukteVerpakkingQuery(ProductVerpakkingenContext: TProductVerpakkingenContext; pxStatusObj: OptiServerService.pxStatus); begin - ProductVerpakkingenContext.Reset(false); - ProductVerpakkingenContext.IsOK := pxStatusObj.IsOK; ProductVerpakkingenContext.ErrorMessage := pxStatusObj.Message_; ProductVerpakkingenContext.InternalErrorMessage := pxStatusObj.InternalMessage;