USING src.ch.adprime.api.yourbarmate.beans.Product FROM PROPATH. USING src.ch.adprime.api.yourbarmate.beans.PatchProduct FROM PROPATH. USING src.ch.adprime.api.yourbarmate.beans.Vessel FROM PROPATH. USING src.ch.adprime.api.yourbarmate.beans.Bundle FROM PROPATH. USING src.ch.adprime.api.yourbarmate.beans.PalletBundle FROM PROPATH. USING src.ch.adprime.api.yourbarmate.incl.ProductsStatus FROM PROPATH. USING src.ch.adprime.api.yourbarmate.incl.ProductsVesselUnit FROM PROPATH. USING src.ch.adprime.api.yourbarmate.incl.ProductsBundlesType FROM PROPATH. USING src.ch.adprime.api.yourbarmate.YourBarMateHandler FROM PROPATH. USING src.ch.adprime.communication.HttpHandler FROM PROPATH. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH. USING OpenEdge.Core.Collections.IListIterator FROM PROPATH. USING OpenEdge.Core.Collections.ListIterator FROM PROPATH. USING OpenEdge.Core.String FROM PROPATH. USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH. USING OpenEdge.Web.DataObject.Writer.JsonObjectValueWriter FROM PROPATH. DEFINE VARIABLE oJProduct AS JsonObject NO-UNDO. DEFINE VARIABLE oJVessel AS JsonObject NO-UNDO. DEFINE VARIABLE oJBundle AS JsonArray NO-UNDO. DEFINE VARIABLE oProduct AS Product NO-UNDO. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO. DEFINE VARIABLE oYourBarMateHandler AS YourBarMateHandler NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO. DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO. DEFINE VARIABLE oJsondsProduct AS JsonObject NO-UNDO. DEFINE VARIABLE oJsonProduct AS JsonObject NO-UNDO. DEFINE VARIABLE oJsonArray AS jsonArray NO-UNDO. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO. DEFINE VARIABLE cUrl AS CHARACTER NO-UNDO. DEFINE VARIABLE oBody AS JsonObject NO-UNDO. DEFINE VARIABLE hFeld AS HANDLE NO-UNDO. { propertiesYBM.i } { ybm_product.i } /*DEFINE DATASET dsProdukt */ /* SERIALIZE-HIDDEN */ /* FOR tProduct, tVessel, tBundle, tPalletBundle */ /* */ /* /* DATA-RELATION Relation1 FOR tProduct, tVessel*/ */ /* /* RELATION-FIELDS (rtProduct, rtProduct) NESTED*/ */ /* PARENT-ID-RELATION RELATION1 FOR tProduct, tVessel */ /* PARENT-ID-FIELD rtProduct */ /* /* PARENT-FIELDS-BEFORE (cId, eStatus, cCategory, cName, cOrder_by)*/*/ /* PARENT-FIELDS-BEFORE (eStatus, cCategory, cName, cOrder_by) */ /* */ /* /* DATA-RELATION Relation2 FOR tProduct, tBundle*/ */ /* /* RELATION-FIELDS (rtProduct, rtProduct) NESTED*/ */ /* PARENT-ID-RELATION RELATION2 FOR tProduct, tBundle */ /* PARENT-ID-FIELD rtProduct */ /* PARENT-FIELDS-AFTER (iPrice, cPrice_per, iMinOrderCount) */ /* */ /* /* DATA-RELATION Relation3 FOR tBundle, tPalletBundle*/ */ /* /* RELATION-FIELDS (rtBundle, rtBundle) NESTED */ */ /* PARENT-ID-RELATION RELATION3 FOR tBundle, tPalletBundle */ /* PARENT-ID-FIELD rtBundle */ /* . */ oYourBarMateHandler = NEW YourBarMateHandler(). oYourBarMateHandler:cURL = cURI_ProductsDev. oYourBarMateHandler:cApiKey = cApiName. oYourBarMateHandler:cApiKeyValue = cApiKeyDev. oYourBarMateHandler:cServerNameIndicator = cServerNameIndicatorDev. oYourBarMateHandler:lDebug = TRUE. CREATE tProduct. ASSIGN tProduct.cId = '021857-0050-0000' tProduct.eStatus = 'ACTIVE' tProduct.cCategory = '020' tProduct.cName = 'Fusetea Lemon PET Einweg, PE 50cl' tProduct.cOrder_by = 'vessel' tProduct.iPrice = 128 tProduct.cPrice_per = 'vessel' tProduct.iMinOrderCount = 24 tProduct.rtProduct = RECID(tProduct) . CREATE tVessel. ASSIGN tVessel.Unit = 'cl' tVessel.iSize = 50 tVessel.rtProduct = RECID(tProduct) tVessel.rtVessel = RECID(tVessel) . CREATE tBundle. ASSIGN tBundle.eType = 'carton' tBundle.iSize = 12 tBundle.rtProduct = RECID(tProduct) tBundle.rtBundle = RECID(tBundle) . CREATE tBundle. ASSIGN tBundle.eType = 'pallet' tBundle.iSize = 108 tBundle.rtProduct = RECID(tProduct) tBundle.rtBundle = RECID(tBundle) . CREATE tPalletBundle. ASSIGN tPalletBundle.eType = 'carton' tPalletBundle.iSize = 12 tPalletBundle.rtBundle = RECID(tBundle) tPalletBundle.rtPalletBundle = RECID(tPalletBundle) . hFeld = htProduct:BUFFER-FIELD('cId'). hFeld:SERIALIZE-HIDDEN = TRUE. FIND FIRST tProduct. oJProduct = NEW JsonObject(). oJProduct:READ(htProduct). FIND FIRST tVessel. oJVessel = NEW JsonObject(). oJVessel:READ(htVessel). DEFINE VARIABLE oJsonPallet AS JsonObject. oJBundle = NEW JsonArray(). FOR EACH tBundle. oJsonObject = NEW jSonObject(). oJsonObject:READ(htBundle). FOR EACH tPalletBundle NO-LOCK WHERE tPalletBundle.rtBundle = tBundle.rtBundle: oJsonPallet = NEW JsonObject(). oJsonPallet:Read(htPalletBundle). oJsonObject:Add('pallet_bundle', oJsonPallet). END. oJBundle:Add(oJsonObject). END. oJProduct:Add('vessel', oJVessel). oJProduct:Add('bundles', oJBundle). /*oJProduct:Remove('id').*/ oJProduct:WRITE(lcString, TRUE). cString = lcString. MESSAGE cString VIEW-AS ALERT-BOX. /*oParser = NEW ObjectModelParser(). */ /*oTestJson = NEW JsonObject(). */ /*oTestJson = CAST(oParser:Parse(lcString), JsonObject). */ cURL = cURI_ProductsDev + "/" + '021857-0050-0000'. /* Send HTTP-Request */ lRetVal = HttpHandler:patch(INPUT cURL, INPUT cApiName, INPUT cApiKeyDev, INPUT cServerNameIndicatorDev, INPUT oJProduct, OUTPUT opErrorMessage, OUTPUT oResponse). DEFINE VARIABLE oJsonResponse AS JsonObject. oParser = NEW ObjectModelParser(). oJsonResponse = CAST(oParser:Parse(CAST(oResponse:Entity, JsonObject):GetJsonText()), JsonObject). oJsonResponse:WRITE(cString, TRUE). /*IF NOT lRetVal THEN*/ /*DO: */ opErrorMessage = 'RetVal = ' + STRING(lRetVal) + ' Status ' + STRING(oResponse:StatusCode) + ' ' + opErrorMessage + ' -> ' + '021857-0050-0000'. RUN writeLogFile.p ('YourBarMateHandler', SESSION:TEMP-DIRECTORY + "patchProduct.log", opErrorMessage ). RUN writeLogFile.p ('YourBarMateHandler', SESSION:TEMP-DIRECTORY + "patchProduct.log", cString ). /*END.*/