ddinhaltsstoffe.p 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. /*------------------------------------------------------------------------
  2. File : digitaldrinkartikelexport.p
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Thu Dec 17 06:48:29 CET 2020
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. /* *************************** Definitions ************************** */
  11. USING OpenEdge.Core.Assert FROM PROPATH.
  12. USING OpenEdge.Core.Collections.IListIterator FROM PROPATH.
  13. USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
  14. USING src.ch.adprime.api.digitaldrink.beans.Bundle FROM PROPATH.
  15. USING src.ch.adprime.api.digitaldrink.beans.Content FROM PROPATH.
  16. USING src.ch.adprime.api.digitaldrink.beans.ContentDetails FROM PROPATH.
  17. USING src.ch.adprime.api.digitaldrink.beans.Filter FROM PROPATH.
  18. USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
  19. USING src.ch.adprime.api.digitaldrink.beans.Product FROM PROPATH.
  20. USING src.ch.adprime.api.digitaldrink.beans.TrustLevel FROM PROPATH.
  21. USING src.ch.adprime.api.digitaldrink.incl.Language FROM PROPATH.
  22. USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
  23. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportRequest FROM PROPATH.
  24. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportResponse FROM PROPATH.
  25. { propertiesDD.i }
  26. DEFINE VARIABLE oDigitalDrinkHandler AS DigitalDrinkHandler NO-UNDO.
  27. DEFINE VARIABLE oArtikelstammExport AS ArtikelstammExportRequest NO-UNDO.
  28. DEFINE VARIABLE oParameters AS Parameter NO-UNDO.
  29. DEFINE VARIABLE oFilters AS Filter NO-UNDO.
  30. DEFINE VARIABLE oProducts AS Product NO-UNDO.
  31. DEFINE VARIABLE oTrust AS TrustLevel NO-UNDO.
  32. DEFINE VARIABLE oBundles AS Bundle NO-UNDO.
  33. DEFINE VARIABLE oContent AS Content NO-UNDO.
  34. DEFINE VARIABLE oContentDetails AS ContentDetails NO-UNDO.
  35. DEFINE VARIABLE oSupplierGLN AS Content NO-UNDO.
  36. DEFINE VARIABLE dtLastRequirementDate AS DATE NO-UNDO.
  37. DEFINE VARIABLE lRequirementAllDates AS LOGICAL NO-UNDO.
  38. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO.
  39. DEFINE VARIABLE oProductData AS ArtikelstammExportResponse NO-UNDO.
  40. DEFINE VARIABLE oProductsIterator AS IListIterator NO-UNDO.
  41. DEFINE VARIABLE oTrustIterator AS IListIterator NO-UNDO.
  42. DEFINE VARIABLE oBundlesIterator AS IListIterator NO-UNDO.
  43. DEFINE VARIABLE oContentIterator AS IListIterator NO-UNDO.
  44. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  45. DEFINE VARIABLE cStringEx AS CHARACTER NO-UNDO EXTENT.
  46. DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
  47. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  48. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  49. DEFINE VARIABLE iAnzProdukte AS INTEGER NO-UNDO.
  50. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  51. DEFINE VARIABLE lBasis AS LOGICAL NO-UNDO.
  52. DEFINE VARIABLE lInhalt AS LOGICAL NO-UNDO.
  53. DEFINE VARIABLE lMarketing AS LOGICAL NO-UNDO.
  54. { ttinhaltsstoffe.i }
  55. DEFINE TEMP-TABLE tCharList
  56. FIELD cFeld AS CHARACTER
  57. .
  58. DEFINE INPUT PARAMETER ipcGlnNr AS CHARACTER NO-UNDO.
  59. DEFINE INPUT PARAMETER ipcGtinNr AS CHARACTER NO-UNDO.
  60. DEFINE OUTPUT PARAMETER TABLE FOR tinhalt.
  61. /* ******************** Preprocessor Definitions ******************** */
  62. /* ************************ Function Prototypes ********************** */
  63. /* *************************** Main Block *************************** */
  64. /* ************************ Function Implementations ***************** */
  65. oDigitalDrinkHandler = NEW DigitalDrinkHandler(
  66. INPUT cURL_Export,
  67. INPUT cServerNameIndicator,
  68. INPUT cClientId,
  69. INPUT cPassword,
  70. INPUT cClientName,
  71. INPUT iGLN-Huber).
  72. oDigitalDrinkHandler:lDebug = lDebug.
  73. oProducts = NEW Product().
  74. IF ipcGlnNr <> '' THEN oProducts:cManufacturerGLN = ipcGlnNr.
  75. oBundles = NEW Bundle().
  76. oBundles:cGTIN =ipcGtinNr.
  77. oFilters = NEW Filter(INPUT oProducts, INPUT oBundles).
  78. MESSAGE ipcGlnNr '-' ipcGtinNr
  79. VIEW-AS ALERT-BOX.
  80. oParameters = NEW Parameter().
  81. oParameters:cClientId = cClientId.
  82. oParameters:cClientName = cClientName.
  83. oParameters:lContentMappings = TRUE.
  84. oParameters:eLanguage = Language:de.
  85. oParameters:oFilters = oFilters.
  86. /*Assert:Equals(TRUE, oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData)).*/
  87. oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData).
  88. IF oProductData:oResponseStatus:cState <> 'DONE' THEN
  89. DO:
  90. MESSAGE 'Abfrage misslungen' VIEW-AS ALERT-BOX.
  91. RETURN 'ERROR'.
  92. END.
  93. iAnzProdukte = oProductData:oResponseStatus:iStateCount.
  94. oProductsIterator = oProductData:oProductsList:ListIterator().
  95. DO WHILE oProductsIterator:HasNext():
  96. oProducts = CAST(oProductsIterator:Next(), Product).
  97. oTrustIterator = oProducts:oTrustLevelList:ListIterator().
  98. /* ------------------------------------------------------------------ */
  99. /* Prüfung auf Freigegeben (Produzent oder DigitalDrink) */
  100. /* ------------------------------------------------------------------ */
  101. lRetVal = FALSE.
  102. DO WHILE oTrustIterator:HasNext():
  103. oTrust = CAST(oTrustIterator:NEXT(), TrustLevel ).
  104. cString = oTrust:cCode.
  105. CASE cString:
  106. WHEN 'provedProducer' THEN
  107. lRetVal = TRUE.
  108. WHEN 'provedDigitalDrink' THEN
  109. lRetVal = TRUE.
  110. END.
  111. IF lRetVal THEN LEAVE.
  112. END.
  113. /* IF NOT lRetVal THEN NEXT.*/
  114. /* ------------------------------------------------------------------ */
  115. /* Allergiestoffe */
  116. /* ------------------------------------------------------------------ */
  117. oContent = oProducts:oContent.
  118. EXTENT(cStringEx) = ?.
  119. cStringEx = oContent:oallergenic:ToArray().
  120. DO ii = 1 TO oContent:oallergenic:Count:
  121. CREATE tInhalt.
  122. ASSIGN
  123. tInhalt.cType = 'allergenic'
  124. tInhalt.cStoff = cStringEx[ii].
  125. END.
  126. /* ------------------------------------------------------------------ */
  127. /* animalSubstances */
  128. /* ------------------------------------------------------------------ */
  129. oContent = oProducts:oContent.
  130. IF oContent:oAnimalSubstances:Count <> ? AND
  131. oContent:oAnimalSubstances:Count <> 0 THEN
  132. DO:
  133. EXTENT(cStringEx) = ?.
  134. cStringEx = oContent:oAnimalSubstances:ToArray().
  135. DO ii = 1 TO oContent:oAnimalSubstances:Count:
  136. CREATE tInhalt.
  137. ASSIGN
  138. tInhalt.cType = 'animalSubstances'
  139. tInhalt.cStoff = cStringEx[ii].
  140. END.
  141. END.
  142. /* ------------------------------------------------------------------ */
  143. /* vegetable */
  144. /* ------------------------------------------------------------------ */
  145. oContent = oProducts:oContent.
  146. IF oContent:oVegetables:Count <> ? AND
  147. oContent:oVegetables:Count <> 0 THEN
  148. DO:
  149. EXTENT(cStringEx) = ?.
  150. cStringEx = oContent:oVegetables:ToArray().
  151. DO ii = 1 TO oContent:oVegetables:Count:
  152. CREATE tInhalt.
  153. ASSIGN
  154. tInhalt.cType = 'vegetables'
  155. tInhalt.cStoff = cStringEx[ii].
  156. END.
  157. END.
  158. /* ------------------------------------------------------------------ */
  159. /* fruits */
  160. /* ------------------------------------------------------------------ */
  161. oContent = oProducts:oContent.
  162. IF oContent:oFruits:Count <> ? AND
  163. oContent:oFruits:Count <> 0 THEN
  164. DO:
  165. EXTENT(cStringEx) = ?.
  166. cStringEx = oContent:oFruits:ToArray().
  167. DO ii = 1 TO oContent:oFruits:Count:
  168. CREATE tInhalt.
  169. ASSIGN
  170. tInhalt.cType = 'Fruits'
  171. tInhalt.cStoff = cStringEx[ii].
  172. END.
  173. END.
  174. /* ------------------------------------------------------------------ */
  175. /* fruits */
  176. /* ------------------------------------------------------------------ */
  177. oContent = oProducts:oContent.
  178. IF oContent:oDyes:Count <> ? AND
  179. oContent:oDyes:Count <> 0 THEN
  180. DO:
  181. EXTENT(cStringEx) = ?.
  182. cStringEx = oContent:oDyes:ToArray().
  183. DO ii = 1 TO oContent:oDyes:Count:
  184. CREATE tInhalt.
  185. ASSIGN
  186. tInhalt.cType = 'Dyes'
  187. tInhalt.cStoff = cStringEx[ii].
  188. END.
  189. END.
  190. /* ------------------------------------------------------------------ */
  191. /* Preservative */
  192. /* ------------------------------------------------------------------ */
  193. oContent = oProducts:oContent.
  194. IF oContent:oPreservative:Count <> ? AND
  195. oContent:oPreservative:Count <> 0 THEN
  196. DO:
  197. EXTENT(cStringEx) = ?.
  198. cStringEx = oContent:oPreservative:ToArray().
  199. DO ii = 1 TO oContent:oPreservative:Count:
  200. CREATE tInhalt.
  201. ASSIGN
  202. tInhalt.cType = 'Preservative'
  203. tInhalt.cStoff = cStringEx[ii].
  204. END.
  205. END.
  206. /* ------------------------------------------------------------------ */
  207. /* Emulsifiers */
  208. /* ------------------------------------------------------------------ */
  209. oContent = oProducts:oContent.
  210. IF oContent:oEmulsifiers:Count <> ? AND
  211. oContent:oEmulsifiers:Count <> 0 THEN
  212. DO:
  213. EXTENT(cStringEx) = ?.
  214. cStringEx = oContent:oEmulsifiers:ToArray().
  215. DO ii = 1 TO oContent:oEmulsifiers:Count:
  216. CREATE tInhalt.
  217. ASSIGN
  218. tInhalt.cType = 'Emulsifiers'
  219. tInhalt.cStoff = cStringEx[ii].
  220. END.
  221. END.
  222. /* ------------------------------------------------------------------ */
  223. /* Sweeteners */
  224. /* ------------------------------------------------------------------ */
  225. oContent = oProducts:oContent.
  226. IF oContent:oSweeteners:Count <> ? AND
  227. oContent:oSweeteners:Count <> 0 THEN
  228. DO:
  229. EXTENT(cStringEx) = ?.
  230. cStringEx = oContent:oSweeteners:ToArray().
  231. DO ii = 1 TO oContent:oSweeteners:Count:
  232. CREATE tInhalt.
  233. ASSIGN
  234. tInhalt.cType = 'Sweeteners'
  235. tInhalt.cStoff = cStringEx[ii].
  236. END.
  237. END.
  238. /* ------------------------------------------------------------------ */
  239. /* nutritionInfo */
  240. /* ------------------------------------------------------------------ */
  241. oContent = oProducts:oContent.
  242. oContentIterator = oContent:oNutritionInfoList:ListIterator().
  243. DO WHILE oContentIterator:HasNext():
  244. oContentDetails = CAST(oContentIterator:Next(), ContentDetails ).
  245. CREATE tInhalt.
  246. ASSIGN
  247. tInhalt.cType = oContentDetails:cName
  248. tInhalt.cStoff = oContentDetails:cDescription
  249. tInhalt.nWert = oContentDetails:fValue.
  250. END.
  251. /* ------------------------------------------------------------------ */
  252. /* vitamins */
  253. /* ------------------------------------------------------------------ */
  254. oContent = oProducts:oContent.
  255. oContentIterator = oContent:oVitaminList:ListIterator().
  256. DO WHILE oContentIterator:HasNext():
  257. oContentDetails = CAST(oContentIterator:Next(), ContentDetails ).
  258. CREATE tInhalt.
  259. ASSIGN
  260. tInhalt.cType = oContentDetails:cName
  261. tInhalt.cStoff = oContentDetails:cDescription
  262. tInhalt.nWert = oContentDetails:fValue.
  263. END.
  264. /* ------------------------------------------------------------------ */
  265. /* acidifier */
  266. /* ------------------------------------------------------------------ */
  267. oContent = oProducts:oContent.
  268. oContentIterator = oContent:oAcidifierList:ListIterator().
  269. DO WHILE oContentIterator:HasNext():
  270. oContentDetails = CAST(oContentIterator:Next(), ContentDetails ).
  271. CREATE tInhalt.
  272. ASSIGN
  273. tInhalt.cType = oContentDetails:cName
  274. tInhalt.cStoff = oContentDetails:cDescription
  275. tInhalt.nWert = oContentDetails:fValue.
  276. END.
  277. END.