/*------------------------------------------------------------------------ File : digitaldrinkartikelexport.p Purpose : Syntax : Description : Author(s) : walter.riechsteiner Created : Thu Dec 17 06:48:29 CET 2020 Notes : ----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ 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.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.control.ArtikelstammExportRequest FROM PROPATH. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportResponse FROM PROPATH. USING src.ch.adprime.api.digitaldrink.incl.Language FROM PROPATH. USING src.ch.adprime.api.digitaldrink.incl.Type 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 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 cBundleName AS CHARACTER NO-UNDO. DEFINE VARIABLE cStringEx AS CHARACTER NO-UNDO EXTENT. DEFINE VARIABLE cStateId AS CHARACTER NO-UNDO. DEFINE VARIABLE cType AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO INIT 0. DEFINE VARIABLE iAnzProdukte AS INTEGER NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE lResult 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. DEFINE VARIABLE iArt AS INTEGER NO-UNDO. DEFINE VARIABLE lFound AS LOGICAL NO-UNDO. DEFINE VARIABLE cHerstArtnr AS CHARACTER NO-UNDO. DEFINE VARIABLE cEANKGeb AS CHARACTER NO-UNDO. DEFINE VARIABLE cEANVGeb AS CHARACTER NO-UNDO. DEFINE VARIABLE cEANGGeb AS CHARACTER NO-UNDO. DEFINE VARIABLE iKGebMe AS DECIMAL NO-UNDO. DEFINE VARIABLE iVGebMe AS DECIMAL NO-UNDO. DEFINE VARIABLE iGGebMe AS DECIMAL NO-UNDO. DEFINE VARIABLE cDDVGebinde AS CHARACTER NO-UNDO. DEFINE VARIABLE lAktiv AS LOGICAL NO-UNDO. DEFINE VARIABLE lVerfuegbar AS LOGICAL NO-UNDO. DEFINE VARIABLE nInhalte AS DECIMAL NO-UNDO EXTENT 5. DEFINE VARIABLE nWert AS DECIMAL NO-UNDO. { ttDDArtikel.i } DEFINE BUFFER bttDDArtikel FOR ttDDArtikel. DEFINE TEMP-TABLE tCharList FIELD cFeld AS CHARACTER. DEFINE INPUT PARAMETER ipcGlnNr AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER TABLE FOR ttDDArtikel. /* ******************** 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(). /*oProducts:cManufacturerGLN = "7611793000004". /* Coca Cola */*/ oProducts:cManufacturerGLN = ipcGlnNr. oBundles = NEW Bundle(). oFilters = NEW Filter(INPUT oProducts, INPUT oBundles). oParameters = NEW Parameter(). oParameters:cClientId = cClientId. oParameters:cClientName = cClientName. oParameters:lContentMappings = TRUE. oParameters:eLanguage = Language:de. oParameters:oFilters = oFilters. lResult = oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData). MESSAGE lResult opErrorMessage VIEW-AS ALERT-BOX. 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(). iAnzProdukte = oProductData:oProductsList:Size. DO WHILE oProductsIterator:HasNext(): oProducts = CAST(oProductsIterator:Next(), Product). iAnzProdukte = iAnzProdukte + 1. /* ------------------------------------------------------------------ */ /* Prüfung auf Freigegeben (Produzent oder DigitalDrink) */ /* ------------------------------------------------------------------ */ lRetVal = FALSE. oTrustIterator = oProducts:oTrustLevelList:ListIterator(). /* DO WHILE oTrustIterator:HasNext(): */ /* oTrust = CAST(oTrustIterator:NEXT(), TrustLevel ) NO-ERROR. */ /* IF ERROR-STATUS:ERROR THEN MESSAGE 'Trust-Error' ERROR-STATUS:GET-MESSAGE (1).*/ /* 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.*/ cString = oProducts:cname. cStateId = oProducts:cStateId. CASE cStateId: WHEN 'Prd_Deleted' THEN NEXT. WHEN 'Prd_Created' THEN NEXT. WHEN 'Prd_Archived' THEN NEXT. WHEN 'Prd_Denied' THEN NEXT. WHEN 'Prd_Denied_SalesData' THEN NEXT. END CASE. oContent = oProducts:oContent. oBundlesIterator = oProducts:oBundlesList:ListIterator(). BUNDLE: DO WHILE oBundlesIterator:HasNext(): oBundles = CAST(oBundlesIterator:Next(), Bundle). cStateId = oBundles:cStateID. lAktiv = TRUE. lVerfuegbar = TRUE. CASE cStateId: WHEN 'Art_Deleted' THEN lAktiv = FALSE. WHEN 'Art_Created' THEN lVerfuegbar = FALSE. WHEN 'Art_Archived' THEN lAktiv = FALSE. WHEN 'Art_Denied' THEN lVerfuegbar = FALSE. WHEN 'Art_Denied_SalesData' THEN lVerfuegbar = FALSE. END CASE. cBundleName = oBundles:cname. /* IF lDebug THEN MESSAGE 'Bundle : ' cBundleName.*/ cString = oBundles:cTypeID NO-ERROR. lRetVal = TRUE. iArt = 0. lFound = FALSE. ASSIGN cEANKGeb = '' cEANVGeb = '' cEANGGeb = ''. DO WHILE TRUE: IF oBundles:cGTIN = '' THEN DO: iArt = 2. cEANKGeb = oBundles:crootBundleGTIN. cEANVGeb = oBundles:cParentBundleGTIN. iGGebMe = oBundles:iQuantity. LEAVE. END. IF oBundles:cParentBundleGTIN = '' AND oBundles:crootBundleGTIN = '' THEN DO: iArt = 0. cEANKGeb = oBundles:cGTIN. iKGebMe = oBundles:fQuantityLiter * 100. LEAVE. END. cType = oBundles:cTypeID. IF cType BEGINS 'CON.BEV.PA' THEN DO: iArt = 2. cEANKGeb = oBundles:crootBundleGTIN. cEANVGeb = oBundles:cParentBundleGTIN. cEANGGeb = oBundles:cGTIN. iGGebMe = oBundles:iQuantity. LEAVE. END. iArt = 1. cEANKGeb = oBundles:crootBundleGTIN. cEANVGeb = oBundles:cGTIN. iVGebMe = oBundles:iQuantity. LEAVE. END. EXTENT(cStringEx) = ?. cString = ''. IF oBundles:oSuppliersGln:Count > 0 THEN DO: EXTENT(cStringEx) = oBundles:oSuppliersGln:Count. cStringEx = oBundles:oSuppliersGln:ToArray(). DO ii = 1 TO oBundles:oSuppliersGln:Count: cString = cString + (IF cString = '' THEN '' ELSE ',') + cStringEx[ii]. END. END. cHerstArtnr = oBundles:cManufacturerArtNo. IF cHerstArtnr = ? THEN cHerstArtnr = ''. IF iArt = 0 THEN DO: CREATE ttDDArtikel. ASSIGN ttDDArtikel.iArt = iArt ttDDArtikel.Bezeichnung = oBundles:cName ttDDArtikel.HerstArtnr = cHerstArtnr ttDDArtikel.LieferGLN = cString ttDDArtikel.Gebinde = oBundles:cTypeID ttDDArtikel.lFound = FALSE ttDDArtikel.EANKGeb = cEANKGeb ttDDArtikel.EANVGeb = '' ttDDArtikel.EANGGeb = '' ttDDArtikel.KGebMe = iKGebMe ttDDArtikel.KGebCd = oBundles:cTypeID ttDDArtikel.lAktiv = lAktiv ttDDArtikel.lVerfuegbar = lVerfuegbar ttDDArtikel.lAnzeigen = TRUE. IF oBundles:cTypeID = 'CON.BEV.BA.PR' OR oBundles:cTypeID = 'CON.BEV.BA.PO' THEN DO: iArt = 1. iVGebMe = iKGebMe / 100. iKGebMe = 100. ttDDArtikel.KGebMe = iKGebMe. END. END. IF iArt = 1 THEN DO: nInhalte = 0. i1 = 0. DO ii = 1 TO NUM-ENTRIES (oBundles:cName, ' '): cString = ENTRY(ii, oBundles:cName, ' '). nWert = DECIMAL(cString) NO-ERROR. IF ERROR-STATUS:ERROR THEN NEXT. IF nWert = 0 OR nWert = ? THEN NEXT. i1 = i1 + 1. nInhalte[i1] = nWert. END. IF i1 > 2 THEN DO: MESSAGE 'Produkt = ' STRING(oBundles:cName) '-' nInhalte[01] '-' nInhalte[02] VIEW-AS ALERT-BOX. iVGebMe = nInhalte[01] * nInhalte[02]. END. CREATE ttDDArtikel. ASSIGN ttDDArtikel.iArt = iArt ttDDArtikel.Bezeichnung = oBundles:cName ttDDArtikel.HerstArtnr = cHerstArtnr ttDDArtikel.LieferGLN = cString ttDDArtikel.Gebinde = oBundles:cTypeID ttDDArtikel.lFound = FALSE ttDDArtikel.EANKGeb = cEANKGeb ttDDArtikel.EANVGeb = cEANVGeb ttDDArtikel.EANGGeb = '' ttDDArtikel.VGebMe = iVGebMe ttDDArtikel.VGebCd = oBundles:cTypeID ttDDArtikel.lAktiv = lAktiv ttDDArtikel.lVerfuegbar = lVerfuegbar ttDDArtikel.lAnzeigen = TRUE. END. IF iArt = 2 THEN DO: CREATE ttDDArtikel. ASSIGN ttDDArtikel.iArt = iArt ttDDArtikel.Bezeichnung = oBundles:cName ttDDArtikel.HerstArtnr = cHerstArtnr ttDDArtikel.LieferGLN = cString ttDDArtikel.Gebinde = oBundles:cTypeID ttDDArtikel.lFound = FALSE ttDDArtikel.EANKGeb = cEANKGeb ttDDArtikel.EANVGeb = cEANVGeb ttDDArtikel.EANGGeb = cEANGGeb ttDDArtikel.GGebMe = iGGebMe ttDDArtikel.GGebCd = oBundles:cTypeID ttDDArtikel.lAktiv = lAktiv ttDDArtikel.lVerfuegbar = lVerfuegbar ttDDArtikel.lAnzeigen = TRUE. END. END. END.