/*------------------------------------------------------------------------ File : digitaldrinkartikelexport.p Purpose : Syntax : Description : Author(s) : walter.riechsteiner Created : Thu Dec 17 06:48:29 CET 2020 Notes : ----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ USING OpenEdge.Core.Assert FROM PROPATH. USING OpenEdge.Core.Collections.IListIterator FROM PROPATH. USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.Bundle FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.Content FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.ContentDetails FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.Filter FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.Product FROM PROPATH. USING src.ch.adprime.api.digitaldrink.beans.TrustLevel FROM PROPATH. USING src.ch.adprime.api.digitaldrink.incl.Language FROM PROPATH. USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportRequest FROM PROPATH. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportResponse FROM PROPATH. { propertiesDD.i } DEFINE VARIABLE oDigitalDrinkHandler AS DigitalDrinkHandler NO-UNDO. DEFINE VARIABLE oArtikelstammExport AS ArtikelstammExportRequest NO-UNDO. DEFINE VARIABLE oParameters AS Parameter NO-UNDO. DEFINE VARIABLE oFilters AS Filter NO-UNDO. DEFINE VARIABLE oProducts AS Product NO-UNDO. DEFINE VARIABLE oTrust AS TrustLevel NO-UNDO. DEFINE VARIABLE oBundles AS Bundle NO-UNDO. DEFINE VARIABLE oContent AS Content NO-UNDO. DEFINE VARIABLE oContentDetails AS ContentDetails NO-UNDO. DEFINE VARIABLE oSupplierGLN AS Content NO-UNDO. DEFINE VARIABLE dtLastRequirementDate AS DATE NO-UNDO. DEFINE VARIABLE lRequirementAllDates AS LOGICAL NO-UNDO. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO. DEFINE VARIABLE oProductData AS ArtikelstammExportResponse NO-UNDO. DEFINE VARIABLE oProductsIterator AS IListIterator NO-UNDO. DEFINE VARIABLE oTrustIterator AS IListIterator NO-UNDO. DEFINE VARIABLE oBundlesIterator AS IListIterator NO-UNDO. DEFINE VARIABLE oContentIterator AS IListIterator NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE cStringEx AS CHARACTER NO-UNDO EXTENT. DEFINE VARIABLE cType AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. DEFINE VARIABLE iAnzProdukte AS INTEGER NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE lBasis AS LOGICAL NO-UNDO. DEFINE VARIABLE lInhalt AS LOGICAL NO-UNDO. DEFINE VARIABLE lMarketing AS LOGICAL NO-UNDO. { ttinhaltsstoffe.i } DEFINE TEMP-TABLE tCharList FIELD cFeld AS CHARACTER . DEFINE INPUT PARAMETER ipcGlnNr AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER ipcGtinNr AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER TABLE FOR tinhalt. /* ******************** Preprocessor Definitions ******************** */ /* ************************ Function Prototypes ********************** */ /* *************************** Main Block *************************** */ /* ************************ Function Implementations ***************** */ oDigitalDrinkHandler = NEW DigitalDrinkHandler( INPUT cURL_Export, INPUT cServerNameIndicator, INPUT cClientId, INPUT cPassword, INPUT cClientName, INPUT iGLN-Huber). oDigitalDrinkHandler:lDebug = lDebug. oProducts = NEW Product(). IF ipcGlnNr <> '' THEN oProducts:cManufacturerGLN = ipcGlnNr. oBundles = NEW Bundle(). oBundles:cGTIN =ipcGtinNr. oFilters = NEW Filter(INPUT oProducts, INPUT oBundles). MESSAGE ipcGlnNr '-' ipcGtinNr VIEW-AS ALERT-BOX. oParameters = NEW Parameter(). oParameters:cClientId = cClientId. oParameters:cClientName = cClientName. oParameters:lContentMappings = TRUE. oParameters:eLanguage = Language:de. oParameters:oFilters = oFilters. /*Assert:Equals(TRUE, oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData)).*/ oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData). IF oProductData:oResponseStatus:cState <> 'DONE' THEN DO: MESSAGE 'Abfrage misslungen' VIEW-AS ALERT-BOX. RETURN 'ERROR'. END. iAnzProdukte = oProductData:oResponseStatus:iStateCount. oProductsIterator = oProductData:oProductsList:ListIterator(). DO WHILE oProductsIterator:HasNext(): oProducts = CAST(oProductsIterator:Next(), Product). oTrustIterator = oProducts:oTrustLevelList:ListIterator(). /* ------------------------------------------------------------------ */ /* Prüfung auf Freigegeben (Produzent oder DigitalDrink) */ /* ------------------------------------------------------------------ */ lRetVal = FALSE. DO WHILE oTrustIterator:HasNext(): oTrust = CAST(oTrustIterator:NEXT(), TrustLevel ). cString = oTrust:cCode. CASE cString: WHEN 'provedProducer' THEN lRetVal = TRUE. WHEN 'provedDigitalDrink' THEN lRetVal = TRUE. END. IF lRetVal THEN LEAVE. END. /* IF NOT lRetVal THEN NEXT.*/ /* ------------------------------------------------------------------ */ /* Allergiestoffe */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. EXTENT(cStringEx) = ?. cStringEx = oContent:oallergenic:ToArray(). DO ii = 1 TO oContent:oallergenic:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'allergenic' tInhalt.cStoff = cStringEx[ii]. END. /* ------------------------------------------------------------------ */ /* animalSubstances */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oAnimalSubstances:Count <> ? AND oContent:oAnimalSubstances:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oAnimalSubstances:ToArray(). DO ii = 1 TO oContent:oAnimalSubstances:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'animalSubstances' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* vegetable */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oVegetables:Count <> ? AND oContent:oVegetables:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oVegetables:ToArray(). DO ii = 1 TO oContent:oVegetables:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'vegetables' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* fruits */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oFruits:Count <> ? AND oContent:oFruits:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oFruits:ToArray(). DO ii = 1 TO oContent:oFruits:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'Fruits' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* fruits */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oDyes:Count <> ? AND oContent:oDyes:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oDyes:ToArray(). DO ii = 1 TO oContent:oDyes:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'Dyes' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* Preservative */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oPreservative:Count <> ? AND oContent:oPreservative:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oPreservative:ToArray(). DO ii = 1 TO oContent:oPreservative:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'Preservative' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* Emulsifiers */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oEmulsifiers:Count <> ? AND oContent:oEmulsifiers:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oEmulsifiers:ToArray(). DO ii = 1 TO oContent:oEmulsifiers:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'Emulsifiers' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* Sweeteners */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. IF oContent:oSweeteners:Count <> ? AND oContent:oSweeteners:Count <> 0 THEN DO: EXTENT(cStringEx) = ?. cStringEx = oContent:oSweeteners:ToArray(). DO ii = 1 TO oContent:oSweeteners:Count: CREATE tInhalt. ASSIGN tInhalt.cType = 'Sweeteners' tInhalt.cStoff = cStringEx[ii]. END. END. /* ------------------------------------------------------------------ */ /* nutritionInfo */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. oContentIterator = oContent:oNutritionInfoList:ListIterator(). DO WHILE oContentIterator:HasNext(): oContentDetails = CAST(oContentIterator:Next(), ContentDetails ). CREATE tInhalt. ASSIGN tInhalt.cType = oContentDetails:cName tInhalt.cStoff = oContentDetails:cDescription tInhalt.nWert = oContentDetails:fValue. END. /* ------------------------------------------------------------------ */ /* vitamins */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. oContentIterator = oContent:oVitaminList:ListIterator(). DO WHILE oContentIterator:HasNext(): oContentDetails = CAST(oContentIterator:Next(), ContentDetails ). CREATE tInhalt. ASSIGN tInhalt.cType = oContentDetails:cName tInhalt.cStoff = oContentDetails:cDescription tInhalt.nWert = oContentDetails:fValue. END. /* ------------------------------------------------------------------ */ /* acidifier */ /* ------------------------------------------------------------------ */ oContent = oProducts:oContent. oContentIterator = oContent:oAcidifierList:ListIterator(). DO WHILE oContentIterator:HasNext(): oContentDetails = CAST(oContentIterator:Next(), ContentDetails ). CREATE tInhalt. ASSIGN tInhalt.cType = oContentDetails:cName tInhalt.cStoff = oContentDetails:cDescription tInhalt.nWert = oContentDetails:fValue. END. END.