ybmputCategories.p 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. /*------------------------------------------------------------------------
  2. File : ybmProducts.p
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Tue Apr 06 15:28:25 CEST 2021
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. USING OpenEdge.Core.Collections.IListIterator FROM PROPATH.
  11. USING OpenEdge.Core.Collections.List FROM PROPATH.
  12. USING src.ch.adprime.api.yourbarmate.YourBarMateHandler FROM PROPATH.
  13. USING src.ch.adprime.api.yourbarmate.beans.Category FROM PROPATH.
  14. /*USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH. */
  15. /* *************************** Definitions ************************** */
  16. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO INIT '1000'.
  17. DEFINE VARIABLE cTestLive AS CHARACTER NO-UNDO.
  18. DEFINE VARIABLE cParameter AS CHARACTER NO-UNDO.
  19. DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO.
  20. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO.
  21. DEFINE VARIABLE cAnmeldung AS CHARACTER NO-UNDO.
  22. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
  23. DEFINE VARIABLE oYourBarMateHandler AS YourBarMateHandler NO-UNDO.
  24. DEFINE VARIABLE oCategory AS Category NO-UNDO.
  25. DEFINE VARIABLE oCategories AS List NO-UNDO.
  26. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO.
  27. DEFINE VARIABLE oBundleListIterator AS IListIterator NO-UNDO.
  28. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  29. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  30. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  31. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  32. DEFINE VARIABLE cId AS CHARACTER NO-UNDO.
  33. { propertiesYBM.i }
  34. DEFINE TEMP-TABLE tWarenGrp LIKE WarenGrp
  35. FIELD lOK AS LOGICAL
  36. FIELD lKGebinde AS LOGICAL
  37. .
  38. { funktionen.i }
  39. /* ******************** Preprocessor Definitions ******************** */
  40. /* ************************ Function Prototypes ********************** */
  41. FUNCTION loeschenWarengruppe RETURNS CHARACTER
  42. (ipiWgr AS INTEGER) FORWARD.
  43. /* *************************** Main Block *************************** */
  44. cAnmeldung = SUBSTITUTE ('&1&4&2&4&3', 'SYSTEM', 'SYSTEM', '1000', CHR(01) ). /* Benutzer, Passwort, Firma */
  45. RUN ANMELDUNG ( cAnmeldung ) NO-ERROR.
  46. cParameter = SESSION:PARAMETER.
  47. cParameter = REPLACE(cParameter, ',', ';').
  48. IF cParameter = '' OR
  49. cParameter = ? THEN cParameter = '1000;TEST'.
  50. DO ii = 1 TO NUM-ENTRIES(cParameter, ';'):
  51. CASE ii.
  52. WHEN 1 THEN
  53. cFirma = ENTRY(ii, cParameter, ';').
  54. WHEN 2 THEN
  55. cTestLive = ENTRY(ii, cParameter, ';').
  56. END CASE.
  57. END.
  58. cInstallation = DYNAMIC-FUNCTION ('getInstallation':U).
  59. cProgramm = ENTRY(1, THIS-PROCEDURE:NAME, '.').
  60. IF R-INDEX(cProgramm, '\') > 0 OR
  61. R-INDEX(cProgramm, '/') > 0 THEN
  62. DO:
  63. cProgramm = REPLACE(cProgramm, '\', '/').
  64. ii = R-INDEX(cProgramm, '/') + 1.
  65. cProgramm = TRIM(SUBSTRING(cProgramm,ii)).
  66. END.
  67. cLogFile = DYNAMIC-FUNCTION ('getLogFilePfad':U) + cProgramm + '_' + cTestLive + '.log'.
  68. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('Start KategorienUpdate &1', cTestLive) ).
  69. CASE cTestLive:
  70. WHEN 'LIVE' THEN
  71. DO:
  72. oYourBarMateHandler = NEW YourBarMateHandler().
  73. oYourBarMateHandler:cURL = cURI_Categories.
  74. oYourBarMateHandler:cApiKey = cApiName.
  75. oYourBarMateHandler:cApiKeyValue = cApiKey.
  76. oYourBarMateHandler:cServerNameIndicator = cServerNameIndicator.
  77. oYourBarMateHandler:lDebug = FALSE.
  78. END.
  79. WHEN 'TEST' THEN
  80. DO:
  81. oYourBarMateHandler = NEW YourBarMateHandler().
  82. oYourBarMateHandler:cURL = cURI_CategoriesDev.
  83. oYourBarMateHandler:cApiKey = cApiName.
  84. oYourBarMateHandler:cApiKeyValue = cApiKeyDev.
  85. oYourBarMateHandler:cServerNameIndicator = cServerNameIndicatorDev.
  86. oYourBarMateHandler:lDebug = TRUE.
  87. END.
  88. END CASE.
  89. /* ---------------------------------------------------------- */
  90. /* Bereits vorhandene Warengruppen abrufen */
  91. /* ---------------------------------------------------------- */
  92. RUN ybmgetCategories.r ( OUTPUT TABLE tWarenGrp ).
  93. ii = 0.
  94. FOR EACH tWarenGrp:
  95. tWarenGrp.lOK = TRUE.
  96. ii = ii + 1.
  97. END.
  98. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('Anzahl Kategorien bei YBM &1', ii) ).
  99. /* ---------------------------------------------------------- */
  100. /* Warengruppen bei YBM mit Warengruppen ERP abgleichen */
  101. /* ---------------------------------------------------------- */
  102. ii = 0.
  103. i1 = 0.
  104. FOR EACH tWarenGrp NO-LOCK:
  105. FIND FIRST WarenGrp NO-LOCK
  106. WHERE WarenGrp.Firma = cFirma
  107. AND WarenGrp.Wgr = tWarenGrp.Wgr NO-ERROR.
  108. IF NOT AVAILABLE WarenGrp THEN
  109. DO:
  110. ii = ii + 1.
  111. tWarenGrp.lOK = FALSE.
  112. opErrorMessage = DYNAMIC-FUNCTION ('loeschenWarengruppe':U, tWarenGrp.Wgr ) NO-ERROR.
  113. IF opErrorMessage = '' THEN
  114. DO:
  115. i1 = i1 + 1.
  116. NEXT.
  117. END.
  118. END.
  119. IF WarenGrp.lShopB2B OR
  120. WarenGrp.lShopB2C THEN NEXT.
  121. ii = ii + 1.
  122. tWarenGrp.lOK = FALSE.
  123. opErrorMessage = DYNAMIC-FUNCTION ('loeschenWarengruppe':U, tWarenGrp.Wgr ) NO-ERROR.
  124. IF opErrorMessage = '' THEN
  125. DO:
  126. i1 = i1 + 1.
  127. NEXT.
  128. END.
  129. END.
  130. IF ii > 0 THEN
  131. DO:
  132. opErrorMessage = SUBSTITUTE('&1 Warengruppe(n) von &2 zu löschenden Warengruppe(n) gelöscht', i1, ii).
  133. RUN writeLogFile.p ( cProgramm, cLogFile, opErrorMessage ).
  134. END.
  135. /* ---------------------------------------------------------- */
  136. /* Warengruppen / Kategorien senden */
  137. /* ---------------------------------------------------------- */
  138. oCategories = NEW List().
  139. ii = 0.
  140. FOR EACH WarenGrp NO-LOCK
  141. WHERE WarenGrp.Firma = cFirma
  142. /* AND (WarenGrp.lShopB2B = TRUE*/
  143. /* OR WarenGrp.lShopB2C = TRUE)*/
  144. :
  145. IF NOT WarenGrp.lShopB2B AND
  146. NOT WarenGrp.lShopB2C THEN
  147. DO:
  148. FIND FIRST tWarenGrp
  149. WHERE tWarenGrp.Wgr = WarenGrp.Wgr NO-ERROR.
  150. IF NOT AVAILABLE (tWarenGrp) THEN NEXT.
  151. END.
  152. oCategory = NEW Category ().
  153. oCategory:cId = STRING(WarenGrp.Wgr,'999').
  154. oCategory:cName = WarenGrp.Bez1.
  155. cString = oCategory:ToString().
  156. lRetVal = oCategories:Add(oCategory).
  157. ii = ii + 1.
  158. RUN writeLogFile.p (cProgramm, cLogfile, SUBSTITUTE('&1 - &2 - &3', ii, lRetVal, cString)).
  159. /* lRetVal = oYourBarMateHandler:putCategories (INPUT oCategories, OUTPUT opErrorMessage ). */
  160. /* RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('Kategorie &1 / &2 übertragen mit RetVal = &3 und ErrorMessage = &4', STRING(WarenGrp.Wgr,'999'), WarenGrp.Bez1, lRetVal, opErrorMessage) ).*/
  161. END.
  162. cString = oCategories:ToString().
  163. lRetVal = oYourBarMateHandler:putCategories (INPUT oCategories, OUTPUT opErrorMessage ).
  164. RUN writeLogFile.p (cProgramm, cLogfile, SUBSTITUTE('&1 - &2 - &3', ii, lRetVal, cString)).
  165. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE('&1 Kategorien übertragen mit RetVal = &2 und ErrorMessage = &3', ii, lRetVal, opErrorMessage) ).
  166. QUIT.
  167. /*FINALLY: */
  168. /* IF VALID-OBJECT (oCategory) THEN DELETE OBJECT oCategory .*/
  169. /* IF VALID-OBJECT (oCategories) THEN DELETE OBJECT oCategories .*/
  170. /* IF VALID-OBJECT (oYourBarMateHandler) THEN DELETE OBJECT oYourBarMateHandler.*/
  171. /*END FINALLY. */
  172. /* ************************ Function Implementations ***************** */
  173. FUNCTION loeschenWarengruppe RETURNS CHARACTER
  174. ( ipiWgr AS INTEGER ):
  175. /*------------------------------------------------------------------------------
  176. Purpose:
  177. Notes:
  178. ------------------------------------------------------------------------------*/
  179. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO.
  180. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  181. lRetVal = oYourBarMateHandler:deleteCategory(INPUT ipiWgr, OUTPUT cMessage ) NO-ERROR.
  182. IF lRetVal THEN
  183. DO:
  184. RUN writeLogFile.p ( cProgramm, cLogFile, cMessage ).
  185. cMessage = ''.
  186. END.
  187. RETURN cMessage.
  188. END FUNCTION.