ddartikelexport.p 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  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.Collections.IListIterator FROM PROPATH.
  12. USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
  13. USING src.ch.adprime.api.digitaldrink.beans.Bundle FROM PROPATH.
  14. USING src.ch.adprime.api.digitaldrink.beans.Content FROM PROPATH.
  15. USING src.ch.adprime.api.digitaldrink.beans.Filter FROM PROPATH.
  16. USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
  17. USING src.ch.adprime.api.digitaldrink.beans.Product FROM PROPATH.
  18. USING src.ch.adprime.api.digitaldrink.beans.TrustLevel FROM PROPATH.
  19. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportRequest FROM PROPATH.
  20. USING src.ch.adprime.api.digitaldrink.control.ArtikelstammExportResponse 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. { propertiesDD.i }
  24. DEFINE VARIABLE oDigitalDrinkHandler AS DigitalDrinkHandler NO-UNDO.
  25. DEFINE VARIABLE oArtikelstammExport AS ArtikelstammExportRequest NO-UNDO.
  26. DEFINE VARIABLE oParameters AS Parameter NO-UNDO.
  27. DEFINE VARIABLE oFilters AS Filter NO-UNDO.
  28. DEFINE VARIABLE oProducts AS Product NO-UNDO.
  29. DEFINE VARIABLE oTrust AS TrustLevel NO-UNDO.
  30. DEFINE VARIABLE oBundles AS Bundle NO-UNDO.
  31. DEFINE VARIABLE oContent AS Content NO-UNDO.
  32. DEFINE VARIABLE oSupplierGLN AS Content NO-UNDO.
  33. DEFINE VARIABLE dtLastRequirementDate AS DATE NO-UNDO.
  34. DEFINE VARIABLE lRequirementAllDates AS LOGICAL NO-UNDO.
  35. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE oProductData AS ArtikelstammExportResponse NO-UNDO.
  37. DEFINE VARIABLE oProductsIterator AS IListIterator NO-UNDO.
  38. DEFINE VARIABLE oTrustIterator AS IListIterator NO-UNDO.
  39. DEFINE VARIABLE oBundlesIterator AS IListIterator NO-UNDO.
  40. DEFINE VARIABLE oContentIterator AS IListIterator NO-UNDO.
  41. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE cBundleName AS CHARACTER NO-UNDO.
  43. DEFINE VARIABLE cStringEx AS CHARACTER NO-UNDO EXTENT.
  44. DEFINE VARIABLE cStateId AS CHARACTER NO-UNDO.
  45. DEFINE VARIABLE cType AS CHARACTER NO-UNDO.
  46. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  47. DEFINE VARIABLE i1 AS INTEGER NO-UNDO INIT 0.
  48. DEFINE VARIABLE iAnzProdukte AS INTEGER NO-UNDO.
  49. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  50. DEFINE VARIABLE lResult 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. DEFINE VARIABLE iArt AS INTEGER NO-UNDO.
  55. DEFINE VARIABLE lFound AS LOGICAL NO-UNDO.
  56. DEFINE VARIABLE cHerstArtnr AS CHARACTER NO-UNDO.
  57. DEFINE VARIABLE cEANKGeb AS CHARACTER NO-UNDO.
  58. DEFINE VARIABLE cEANVGeb AS CHARACTER NO-UNDO.
  59. DEFINE VARIABLE cEANGGeb AS CHARACTER NO-UNDO.
  60. DEFINE VARIABLE iKGebMe AS DECIMAL NO-UNDO.
  61. DEFINE VARIABLE iVGebMe AS DECIMAL NO-UNDO.
  62. DEFINE VARIABLE iGGebMe AS DECIMAL NO-UNDO.
  63. DEFINE VARIABLE cDDVGebinde AS CHARACTER NO-UNDO.
  64. DEFINE VARIABLE lAktiv AS LOGICAL NO-UNDO.
  65. DEFINE VARIABLE lVerfuegbar AS LOGICAL NO-UNDO.
  66. DEFINE VARIABLE nInhalte AS DECIMAL NO-UNDO EXTENT 5.
  67. DEFINE VARIABLE nWert AS DECIMAL NO-UNDO.
  68. { ttDDArtikel.i }
  69. DEFINE BUFFER bttDDArtikel FOR ttDDArtikel.
  70. DEFINE TEMP-TABLE tCharList
  71. FIELD cFeld AS CHARACTER.
  72. DEFINE INPUT PARAMETER ipcGlnNr AS CHARACTER NO-UNDO.
  73. DEFINE OUTPUT PARAMETER TABLE FOR ttDDArtikel.
  74. /* ******************** Preprocessor Definitions ******************** */
  75. /* ************************ Function Prototypes ********************** */
  76. /* *************************** Main Block *************************** */
  77. /* ************************ Function Implementations ***************** */
  78. oDigitalDrinkHandler = NEW DigitalDrinkHandler(
  79. INPUT cURL_Export,
  80. INPUT cServerNameIndicator,
  81. INPUT cClientId,
  82. INPUT cPassword,
  83. INPUT cClientName,
  84. INPUT iGLN-Huber).
  85. oDigitalDrinkHandler:lDebug = lDebug.
  86. oProducts = NEW Product().
  87. /*oProducts:cManufacturerGLN = "7611793000004". /* Coca Cola */*/
  88. oProducts:cManufacturerGLN = ipcGlnNr.
  89. oBundles = NEW Bundle().
  90. oFilters = NEW Filter(INPUT oProducts, INPUT oBundles).
  91. oParameters = NEW Parameter().
  92. oParameters:cClientId = cClientId.
  93. oParameters:cClientName = cClientName.
  94. oParameters:lContentMappings = TRUE.
  95. oParameters:eLanguage = Language:de.
  96. oParameters:oFilters = oFilters.
  97. lResult = oDigitalDrinkHandler:getArtikelStammExport(INPUT cClientName, INPUT TYPE:EXP001, INPUT oParameters, OUTPUT opErrorMessage, OUTPUT oProductData).
  98. MESSAGE lResult opErrorMessage
  99. VIEW-AS ALERT-BOX.
  100. IF oProductData:oResponseStatus:cState <> 'DONE' THEN
  101. DO:
  102. MESSAGE 'Abfrage misslungen' VIEW-AS ALERT-BOX.
  103. RETURN 'ERROR'.
  104. END.
  105. iAnzProdukte = oProductData:oResponseStatus:iStateCount.
  106. oProductsIterator = oProductData:oProductsList:ListIterator().
  107. iAnzProdukte = oProductData:oProductsList:Size.
  108. DO WHILE oProductsIterator:HasNext():
  109. oProducts = CAST(oProductsIterator:Next(), Product).
  110. iAnzProdukte = iAnzProdukte + 1.
  111. /* ------------------------------------------------------------------ */
  112. /* Prüfung auf Freigegeben (Produzent oder DigitalDrink) */
  113. /* ------------------------------------------------------------------ */
  114. lRetVal = FALSE.
  115. oTrustIterator = oProducts:oTrustLevelList:ListIterator().
  116. /* DO WHILE oTrustIterator:HasNext(): */
  117. /* oTrust = CAST(oTrustIterator:NEXT(), TrustLevel ) NO-ERROR. */
  118. /* IF ERROR-STATUS:ERROR THEN MESSAGE 'Trust-Error' ERROR-STATUS:GET-MESSAGE (1).*/
  119. /* cString = oTrust:cCode. */
  120. /* CASE cString: */
  121. /* WHEN 'provedProducer' THEN */
  122. /* lRetVal = TRUE. */
  123. /* WHEN 'provedDigitalDrink' THEN */
  124. /* lRetVal = TRUE. */
  125. /* END. */
  126. /* IF lRetVal THEN LEAVE. */
  127. /* END. */
  128. /* IF NOT lRetVal THEN NEXT.*/
  129. cString = oProducts:cname.
  130. cStateId = oProducts:cStateId.
  131. CASE cStateId:
  132. WHEN 'Prd_Deleted' THEN
  133. NEXT.
  134. WHEN 'Prd_Created' THEN
  135. NEXT.
  136. WHEN 'Prd_Archived' THEN
  137. NEXT.
  138. WHEN 'Prd_Denied' THEN
  139. NEXT.
  140. WHEN 'Prd_Denied_SalesData' THEN
  141. NEXT.
  142. END CASE.
  143. oContent = oProducts:oContent.
  144. oBundlesIterator = oProducts:oBundlesList:ListIterator().
  145. BUNDLE:
  146. DO WHILE oBundlesIterator:HasNext():
  147. oBundles = CAST(oBundlesIterator:Next(), Bundle).
  148. cStateId = oBundles:cStateID.
  149. lAktiv = TRUE.
  150. lVerfuegbar = TRUE.
  151. CASE cStateId:
  152. WHEN 'Art_Deleted' THEN
  153. lAktiv = FALSE.
  154. WHEN 'Art_Created' THEN
  155. lVerfuegbar = FALSE.
  156. WHEN 'Art_Archived' THEN
  157. lAktiv = FALSE.
  158. WHEN 'Art_Denied' THEN
  159. lVerfuegbar = FALSE.
  160. WHEN 'Art_Denied_SalesData' THEN
  161. lVerfuegbar = FALSE.
  162. END CASE.
  163. cBundleName = oBundles:cname.
  164. /* IF lDebug THEN MESSAGE 'Bundle : ' cBundleName.*/
  165. cString = oBundles:cTypeID NO-ERROR.
  166. lRetVal = TRUE.
  167. iArt = 0.
  168. lFound = FALSE.
  169. ASSIGN
  170. cEANKGeb = ''
  171. cEANVGeb = ''
  172. cEANGGeb = ''.
  173. DO WHILE TRUE:
  174. IF oBundles:cGTIN = '' THEN
  175. DO:
  176. iArt = 2.
  177. cEANKGeb = oBundles:crootBundleGTIN.
  178. cEANVGeb = oBundles:cParentBundleGTIN.
  179. iGGebMe = oBundles:iQuantity.
  180. LEAVE.
  181. END.
  182. IF oBundles:cParentBundleGTIN = '' AND
  183. oBundles:crootBundleGTIN = '' THEN
  184. DO:
  185. iArt = 0.
  186. cEANKGeb = oBundles:cGTIN.
  187. iKGebMe = oBundles:fQuantityLiter * 100.
  188. LEAVE.
  189. END.
  190. cType = oBundles:cTypeID.
  191. IF cType BEGINS 'CON.BEV.PA' THEN
  192. DO:
  193. iArt = 2.
  194. cEANKGeb = oBundles:crootBundleGTIN.
  195. cEANVGeb = oBundles:cParentBundleGTIN.
  196. cEANGGeb = oBundles:cGTIN.
  197. iGGebMe = oBundles:iQuantity.
  198. LEAVE.
  199. END.
  200. iArt = 1.
  201. cEANKGeb = oBundles:crootBundleGTIN.
  202. cEANVGeb = oBundles:cGTIN.
  203. iVGebMe = oBundles:iQuantity.
  204. LEAVE.
  205. END.
  206. EXTENT(cStringEx) = ?.
  207. cString = ''.
  208. IF oBundles:oSuppliersGln:Count > 0 THEN
  209. DO:
  210. EXTENT(cStringEx) = oBundles:oSuppliersGln:Count.
  211. cStringEx = oBundles:oSuppliersGln:ToArray().
  212. DO ii = 1 TO oBundles:oSuppliersGln:Count:
  213. cString = cString
  214. + (IF cString = '' THEN '' ELSE ',')
  215. + cStringEx[ii].
  216. END.
  217. END.
  218. cHerstArtnr = oBundles:cManufacturerArtNo.
  219. IF cHerstArtnr = ? THEN cHerstArtnr = ''.
  220. IF iArt = 0 THEN
  221. DO:
  222. CREATE ttDDArtikel.
  223. ASSIGN
  224. ttDDArtikel.iArt = iArt
  225. ttDDArtikel.Bezeichnung = oBundles:cName
  226. ttDDArtikel.HerstArtnr = cHerstArtnr
  227. ttDDArtikel.LieferGLN = cString
  228. ttDDArtikel.Gebinde = oBundles:cTypeID
  229. ttDDArtikel.lFound = FALSE
  230. ttDDArtikel.EANKGeb = cEANKGeb
  231. ttDDArtikel.EANVGeb = ''
  232. ttDDArtikel.EANGGeb = ''
  233. ttDDArtikel.KGebMe = iKGebMe
  234. ttDDArtikel.KGebCd = oBundles:cTypeID
  235. ttDDArtikel.lAktiv = lAktiv
  236. ttDDArtikel.lVerfuegbar = lVerfuegbar
  237. ttDDArtikel.lAnzeigen = TRUE.
  238. IF oBundles:cTypeID = 'CON.BEV.BA.PR' OR
  239. oBundles:cTypeID = 'CON.BEV.BA.PO' THEN
  240. DO:
  241. iArt = 1.
  242. iVGebMe = iKGebMe / 100.
  243. iKGebMe = 100.
  244. ttDDArtikel.KGebMe = iKGebMe.
  245. END.
  246. END.
  247. IF iArt = 1 THEN
  248. DO:
  249. nInhalte = 0.
  250. i1 = 0.
  251. DO ii = 1 TO NUM-ENTRIES (oBundles:cName, ' '):
  252. cString = ENTRY(ii, oBundles:cName, ' ').
  253. nWert = DECIMAL(cString) NO-ERROR.
  254. IF ERROR-STATUS:ERROR THEN NEXT.
  255. IF nWert = 0 OR
  256. nWert = ? THEN NEXT.
  257. i1 = i1 + 1.
  258. nInhalte[i1] = nWert.
  259. END.
  260. IF i1 > 2 THEN DO:
  261. MESSAGE 'Produkt = ' STRING(oBundles:cName) '-' nInhalte[01] '-' nInhalte[02]
  262. VIEW-AS ALERT-BOX.
  263. iVGebMe = nInhalte[01] * nInhalte[02].
  264. END.
  265. CREATE ttDDArtikel.
  266. ASSIGN
  267. ttDDArtikel.iArt = iArt
  268. ttDDArtikel.Bezeichnung = oBundles:cName
  269. ttDDArtikel.HerstArtnr = cHerstArtnr
  270. ttDDArtikel.LieferGLN = cString
  271. ttDDArtikel.Gebinde = oBundles:cTypeID
  272. ttDDArtikel.lFound = FALSE
  273. ttDDArtikel.EANKGeb = cEANKGeb
  274. ttDDArtikel.EANVGeb = cEANVGeb
  275. ttDDArtikel.EANGGeb = ''
  276. ttDDArtikel.VGebMe = iVGebMe
  277. ttDDArtikel.VGebCd = oBundles:cTypeID
  278. ttDDArtikel.lAktiv = lAktiv
  279. ttDDArtikel.lVerfuegbar = lVerfuegbar
  280. ttDDArtikel.lAnzeigen = TRUE.
  281. END.
  282. IF iArt = 2 THEN
  283. DO:
  284. CREATE ttDDArtikel.
  285. ASSIGN
  286. ttDDArtikel.iArt = iArt
  287. ttDDArtikel.Bezeichnung = oBundles:cName
  288. ttDDArtikel.HerstArtnr = cHerstArtnr
  289. ttDDArtikel.LieferGLN = cString
  290. ttDDArtikel.Gebinde = oBundles:cTypeID
  291. ttDDArtikel.lFound = FALSE
  292. ttDDArtikel.EANKGeb = cEANKGeb
  293. ttDDArtikel.EANVGeb = cEANVGeb
  294. ttDDArtikel.EANGGeb = cEANGGeb
  295. ttDDArtikel.GGebMe = iGGebMe
  296. ttDDArtikel.GGebCd = oBundles:cTypeID
  297. ttDDArtikel.lAktiv = lAktiv
  298. ttDDArtikel.lVerfuegbar = lVerfuegbar
  299. ttDDArtikel.lAnzeigen = TRUE.
  300. END.
  301. END.
  302. END.