/*------------------------------------------------------------------------ File : ybmProducts.p Purpose : Syntax : Description : Author(s) : walter.riechsteiner Created : Tue Apr 06 15:28:25 CEST 2021 Notes : ----------------------------------------------------------------------*/ USING OpenEdge.Core.Collections.IListIterator FROM PROPATH. USING OpenEdge.Core.Collections.List FROM PROPATH. USING src.ch.adprime.api.yourbarmate.YourBarMateHandler FROM PROPATH. USING src.ch.adprime.api.yourbarmate.beans.Category FROM PROPATH. /*USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH. */ /* *************************** Definitions ************************** */ DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO INIT '1000'. DEFINE VARIABLE cTestLive AS CHARACTER NO-UNDO. DEFINE VARIABLE cParameter AS CHARACTER NO-UNDO. DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO. DEFINE VARIABLE cAnmeldung AS CHARACTER NO-UNDO. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO. DEFINE VARIABLE oYourBarMateHandler AS YourBarMateHandler NO-UNDO. DEFINE VARIABLE oCategory AS Category NO-UNDO. DEFINE VARIABLE oCategories AS List NO-UNDO. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO. DEFINE VARIABLE oBundleListIterator AS IListIterator NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. DEFINE VARIABLE cId AS CHARACTER NO-UNDO. { propertiesYBM.i } DEFINE TEMP-TABLE tWarenGrp LIKE WarenGrp FIELD lOK AS LOGICAL FIELD lKGebinde AS LOGICAL . { funktionen.i } /* ******************** Preprocessor Definitions ******************** */ /* ************************ Function Prototypes ********************** */ FUNCTION loeschenWarengruppe RETURNS CHARACTER (ipiWgr AS INTEGER) FORWARD. /* *************************** Main Block *************************** */ cAnmeldung = SUBSTITUTE ('&1&4&2&4&3', 'SYSTEM', 'SYSTEM', '1000', CHR(01) ). /* Benutzer, Passwort, Firma */ RUN ANMELDUNG ( cAnmeldung ) NO-ERROR. cParameter = SESSION:PARAMETER. cParameter = REPLACE(cParameter, ',', ';'). IF cParameter = '' OR cParameter = ? THEN cParameter = '1000;TEST'. DO ii = 1 TO NUM-ENTRIES(cParameter, ';'): CASE ii. WHEN 1 THEN cFirma = ENTRY(ii, cParameter, ';'). WHEN 2 THEN cTestLive = ENTRY(ii, cParameter, ';'). END CASE. END. cInstallation = DYNAMIC-FUNCTION ('getInstallation':U). cProgramm = ENTRY(1, THIS-PROCEDURE:NAME, '.'). IF R-INDEX(cProgramm, '\') > 0 OR R-INDEX(cProgramm, '/') > 0 THEN DO: cProgramm = REPLACE(cProgramm, '\', '/'). ii = R-INDEX(cProgramm, '/') + 1. cProgramm = TRIM(SUBSTRING(cProgramm,ii)). END. cLogFile = DYNAMIC-FUNCTION ('getLogFilePfad':U) + cProgramm + '_' + cTestLive + '.log'. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('Start KategorienUpdate &1', cTestLive) ). CASE cTestLive: WHEN 'LIVE' THEN DO: oYourBarMateHandler = NEW YourBarMateHandler(). oYourBarMateHandler:cURL = cURI_Categories. oYourBarMateHandler:cApiKey = cApiName. oYourBarMateHandler:cApiKeyValue = cApiKey. oYourBarMateHandler:cServerNameIndicator = cServerNameIndicator. oYourBarMateHandler:lDebug = FALSE. END. WHEN 'TEST' THEN DO: oYourBarMateHandler = NEW YourBarMateHandler(). oYourBarMateHandler:cURL = cURI_CategoriesDev. oYourBarMateHandler:cApiKey = cApiName. oYourBarMateHandler:cApiKeyValue = cApiKeyDev. oYourBarMateHandler:cServerNameIndicator = cServerNameIndicatorDev. oYourBarMateHandler:lDebug = TRUE. END. END CASE. /* ---------------------------------------------------------- */ /* Bereits vorhandene Warengruppen abrufen */ /* ---------------------------------------------------------- */ RUN ybmgetCategories.r ( OUTPUT TABLE tWarenGrp ). ii = 0. FOR EACH tWarenGrp: tWarenGrp.lOK = TRUE. ii = ii + 1. END. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('Anzahl Kategorien bei YBM &1', ii) ). /* ---------------------------------------------------------- */ /* Warengruppen bei YBM mit Warengruppen ERP abgleichen */ /* ---------------------------------------------------------- */ ii = 0. i1 = 0. FOR EACH tWarenGrp NO-LOCK: FIND FIRST WarenGrp NO-LOCK WHERE WarenGrp.Firma = cFirma AND WarenGrp.Wgr = tWarenGrp.Wgr NO-ERROR. IF NOT AVAILABLE WarenGrp THEN DO: ii = ii + 1. tWarenGrp.lOK = FALSE. opErrorMessage = DYNAMIC-FUNCTION ('loeschenWarengruppe':U, tWarenGrp.Wgr ) NO-ERROR. IF opErrorMessage = '' THEN DO: i1 = i1 + 1. NEXT. END. END. IF WarenGrp.lShopB2B OR WarenGrp.lShopB2C THEN NEXT. ii = ii + 1. tWarenGrp.lOK = FALSE. opErrorMessage = DYNAMIC-FUNCTION ('loeschenWarengruppe':U, tWarenGrp.Wgr ) NO-ERROR. IF opErrorMessage = '' THEN DO: i1 = i1 + 1. NEXT. END. END. IF ii > 0 THEN DO: opErrorMessage = SUBSTITUTE('&1 Warengruppe(n) von &2 zu löschenden Warengruppe(n) gelöscht', i1, ii). RUN writeLogFile.p ( cProgramm, cLogFile, opErrorMessage ). END. /* ---------------------------------------------------------- */ /* Warengruppen / Kategorien senden */ /* ---------------------------------------------------------- */ oCategories = NEW List(). ii = 0. FOR EACH WarenGrp NO-LOCK WHERE WarenGrp.Firma = cFirma /* AND (WarenGrp.lShopB2B = TRUE*/ /* OR WarenGrp.lShopB2C = TRUE)*/ : IF NOT WarenGrp.lShopB2B AND NOT WarenGrp.lShopB2C THEN DO: FIND FIRST tWarenGrp WHERE tWarenGrp.Wgr = WarenGrp.Wgr NO-ERROR. IF NOT AVAILABLE (tWarenGrp) THEN NEXT. END. oCategory = NEW Category (). oCategory:cId = STRING(WarenGrp.Wgr,'999'). oCategory:cName = WarenGrp.Bez1. cString = oCategory:ToString(). lRetVal = oCategories:Add(oCategory). ii = ii + 1. RUN writeLogFile.p (cProgramm, cLogfile, SUBSTITUTE('&1 - &2 - &3', ii, lRetVal, cString)). /* lRetVal = oYourBarMateHandler:putCategories (INPUT oCategories, OUTPUT opErrorMessage ). */ /* RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('Kategorie &1 / &2 übertragen mit RetVal = &3 und ErrorMessage = &4', STRING(WarenGrp.Wgr,'999'), WarenGrp.Bez1, lRetVal, opErrorMessage) ).*/ END. cString = oCategories:ToString(). lRetVal = oYourBarMateHandler:putCategories (INPUT oCategories, OUTPUT opErrorMessage ). RUN writeLogFile.p (cProgramm, cLogfile, SUBSTITUTE('&1 - &2 - &3', ii, lRetVal, cString)). RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('&1 Kategorien übertragen mit RetVal = &2 und ErrorMessage = &3', ii, lRetVal, opErrorMessage) ). QUIT. /*FINALLY: */ /* IF VALID-OBJECT (oCategory) THEN DELETE OBJECT oCategory .*/ /* IF VALID-OBJECT (oCategories) THEN DELETE OBJECT oCategories .*/ /* IF VALID-OBJECT (oYourBarMateHandler) THEN DELETE OBJECT oYourBarMateHandler.*/ /*END FINALLY. */ /* ************************ Function Implementations ***************** */ FUNCTION loeschenWarengruppe RETURNS CHARACTER ( ipiWgr AS INTEGER ): /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. lRetVal = oYourBarMateHandler:deleteCategory(INPUT ipiWgr, OUTPUT cMessage ) NO-ERROR. IF lRetVal THEN DO: RUN writeLogFile.p ( cProgramm, cLogFile, cMessage ). cMessage = ''. END. RETURN cMessage. END FUNCTION.