ddabsatzzahlen.p 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. /*------------------------------------------------------------------------
  2. File : ddabsatzzahlen.p
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Wed Jun 23 09:36:53 CEST 2021
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. /* *************************** Definitions ************************** */
  11. USING OpenEdge.Core.Collections.List FROM PROPATH.
  12. USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
  13. USING src.ch.adprime.api.digitaldrink.DigitalDrinkHandler FROM PROPATH.
  14. USING src.ch.adprime.api.digitaldrink.beans.Customer FROM PROPATH.
  15. USING src.ch.adprime.api.digitaldrink.beans.Manufacturer FROM PROPATH.
  16. USING src.ch.adprime.api.digitaldrink.beans.AbsatzAbschluss FROM PROPATH.
  17. USING src.ch.adprime.api.digitaldrink.beans.Parameter FROM PROPATH.
  18. USING src.ch.adprime.api.digitaldrink.beans.ResponseStatus FROM PROPATH.
  19. USING src.ch.adprime.api.digitaldrink.beans.Sale FROM PROPATH.
  20. USING src.ch.adprime.api.digitaldrink.control.AbsatzdatenImport FROM PROPATH.
  21. USING src.ch.adprime.api.digitaldrink.control.AbsatzAbschlussImport FROM PROPATH.
  22. USING src.ch.adprime.api.digitaldrink.incl.BusinessType FROM PROPATH.
  23. USING src.ch.adprime.api.digitaldrink.incl.SalesUnit FROM PROPATH.
  24. USING src.ch.adprime.api.digitaldrink.incl.Type FROM PROPATH.
  25. DEFINE INPUT PARAMETER ipdVonDatum AS DATE NO-UNDO.
  26. DEFINE INPUT PARAMETER ipdBisDatum AS DATE NO-UNDO.
  27. DEFINE INPUT PARAMETER ipiHerst AS INTEGER NO-UNDO.
  28. DEFINE INPUT PARAMETER ipiLieferant AS INTEGER NO-UNDO.
  29. DEFINE INPUT PARAMETER ipcWgr AS CHARACTER NO-UNDO.
  30. DEFINE INPUT PARAMETER lAbschluss AS LOGICAL NO-UNDO.
  31. DEFINE INPUT PARAMETER lTest AS LOGICAL NO-UNDO.
  32. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO INIT '1000'.
  33. DEFINE VARIABLE iKnr AS INTEGER NO-UNDO.
  34. DEFINE VARIABLE iVGeb AS INTEGER NO-UNDO.
  35. DEFINE VARIABLE iKGeb AS INTEGER NO-UNDO.
  36. DEFINE VARIABLE cWgr AS CHARACTER NO-UNDO.
  37. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
  38. DEFINE VARIABLE opErrorMessage AS CHARACTER NO-UNDO.
  39. DEFINE VARIABLE cLogFilePfad AS CHARACTER NO-UNDO.
  40. DEFINE VARIABLE cLogFile AS CHARACTER NO-UNDO.
  41. DEFINE VARIABLE cProgramm AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE iJahr AS INTEGER NO-UNDO.
  43. DEFINE VARIABLE iMonat AS INTEGER NO-UNDO.
  44. DEFINE VARIABLE cAnmeldung AS CHARACTER NO-UNDO.
  45. DEFINE VARIABLE cVGebGLN AS CHARACTER NO-UNDO.
  46. DEFINE VARIABLE cHerstGLN AS CHARACTER NO-UNDO.
  47. DEFINE VARIABLE cHerst AS CHARACTER NO-UNDO.
  48. { propertiesDD.i }
  49. { properties.i }
  50. DEFINE VARIABLE oDigitalDrinkHandler AS DigitalDrinkHandler NO-UNDO.
  51. DEFINE VARIABLE oResponseStatus AS ResponseStatus NO-UNDO.
  52. DEFINE VARIABLE oAbsatzDatenImport AS AbsatzdatenImport NO-UNDO.
  53. DEFINE VARIABLE oAbsatzAbschlussImport AS AbsatzAbschlussImport NO-UNDO.
  54. DEFINE VARIABLE oCustomer AS Customer NO-UNDO.
  55. DEFINE VARIABLE oManufacturer AS Manufacturer NO-UNDO.
  56. DEFINE VARIABLE oAbsatzAbschluss AS AbsatzAbschluss NO-UNDO.
  57. DEFINE VARIABLE oSale AS Sale NO-UNDO.
  58. DEFINE TEMP-TABLE tArtbw LIKE Artbw
  59. FIELD JJ AS INTEGER
  60. FIELD MM AS INTEGER
  61. FIELD GLN AS CHARACTER
  62. INDEX tArtbw-k1 IS PRIMARY
  63. JJ
  64. MM
  65. GLN.
  66. DEFINE TEMP-TABLE tAbschluss
  67. FIELD JJ AS INTEGER
  68. FIELD MM AS INTEGER
  69. FIELD GLN AS CHARACTER
  70. FIELD cHerst AS CHARACTER
  71. FIELD lOK AS LOGICAL.
  72. DEFINE TEMP-TABLE tAbsatzZahlen
  73. FIELD JJ AS INTEGER
  74. FIELD MM AS INTEGER
  75. FIELD Knr AS INTEGER
  76. FIELD Artnr AS INTEGER
  77. FIELD Inhalt AS INTEGER
  78. FIELD Jahr AS INTEGER
  79. FIELD Herst AS INTEGER
  80. FIELD HerstGln AS CHARACTER
  81. FIELD Hersteller AS CHARACTER
  82. FIELD Fak_Datum AS DATE
  83. FIELD VGeb_Me AS INTEGER
  84. FIELD KGeb_Me AS INTEGER
  85. FIELD VGeb_Cd AS CHARACTER
  86. FIELD KGeb_Cd AS CHARACTER
  87. FIELD VGeb_Bez AS CHARACTER
  88. FIELD KGeb_Bez AS CHARACTER
  89. FIELD VGeb_Inhalt AS INTEGER
  90. FIELD KGeb_Inhalt AS INTEGER
  91. FIELD Bezeichnung AS CHARACTER
  92. FIELD Kgr AS INTEGER
  93. FIELD VGeb_gln AS CHARACTER
  94. INDEX tAbsatzZahlen-k1 IS PRIMARY
  95. JJ
  96. MM
  97. Knr
  98. Artnr
  99. Inhalt
  100. Jahr
  101. INDEX tAbsatzZahlen-k2
  102. JJ
  103. MM
  104. Herst
  105. Knr
  106. Artnr
  107. Inhalt
  108. Jahr.
  109. DEFINE BUFFER btAbsatzZahlen FOR tAbsatzZahlen.
  110. /* ******************** Preprocessor Definitions ******************** */
  111. /* *************************** Main Block *************************** */
  112. { super/funktionen.i }
  113. cAnmeldung = SUBSTITUTE('&2&1&3&1&4&1&5', CHR(01), cBatchUser, cBatchPassw, '1000' ).
  114. RUN ANMELDUNG ( INPUT cAnmeldung ).
  115. Firma = DYNAMIC-FUNCTION ('getMandant':U) NO-ERROR.
  116. cProgramm = ENTRY(1, THIS-PROCEDURE:NAME, '.' ).
  117. cLogFilePfad = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
  118. cLogFile = cLogFilePfad + cProgramm + '&1.log'.
  119. cLogFile = SUBSTITUTE(cLogFile, STRING(TODAY,'99999999')).
  120. OS-DELETE VALUE(cLogFile) NO-ERROR.
  121. /*ASSIGN */
  122. /* ipdVonDatum = 01/01/2020 */
  123. /* ipdBisDatum = 06/30/2020.*/
  124. EMPTY TEMP-TABLE tArtbw .
  125. EMPTY TEMP-TABLE tAbschluss .
  126. FOR EACH Artst NO-LOCK
  127. WHERE Artst.Firma = Firma
  128. AND Artst.Aktiv = TRUE,
  129. FIRST Tabel NO-LOCK
  130. WHERE Tabel.Firma = Firma
  131. AND Tabel.Recart = 'HERST'
  132. AND Tabel.CodeC = ''
  133. AND Tabel.CodeI = Artst.Herst
  134. AND Tabel.Bez2 <> '',
  135. FIRST Artbez NO-LOCK
  136. WHERE Artbez.Firma = Artst.Firma
  137. AND Artbez.Artnr = Artst.Artnr
  138. AND Artbez.Inhalt = Artst.Inhalt
  139. AND Artbez.Jahr = Artst.Jahr,
  140. FIRST KGebinde NO-LOCK
  141. WHERE KGebinde.Firma = Artst.Firma
  142. AND KGebinde.Geb_Cd = Artst.KGeb_Cd,
  143. FIRST VGebinde NO-LOCK
  144. WHERE VGebinde.Firma = Artst.Firma
  145. AND VGebinde.Geb_Cd = Artst.VGeb_Cd,
  146. EACH Artbw NO-LOCK
  147. WHERE Artbw.Firma = Artst.Firma
  148. AND Artbw.Artnr = Artst.Artnr
  149. AND Artbw.Inhalt = Artst.Inhalt
  150. AND Artbw.Jahr = Artst.Jahr
  151. AND Artbw.Fak_Dat <> ?
  152. AND Artbw.Fak_Dat >= ipdVonDatum
  153. AND Artbw.Fak_Dat <= ipdBisDatum
  154. AND Artbw.Tr_Art = 1
  155. AND Artbw.lDDUmsatz = FALSE ,
  156. FIRST Debst NO-LOCK
  157. WHERE Debst.Firma = Artst.Firma
  158. AND Debst.Knr = Artbw.Knr
  159. :
  160. IF SUBSTRING(Tabel.Bez2,01,01) < '0' OR
  161. SUBSTRING(Tabel.Bez2,01,01) > '9' THEN NEXT.
  162. IF ipiHerst <> 999999 THEN
  163. DO:
  164. IF Artst.Herst <> ipiHerst THEN NEXT.
  165. END.
  166. cVGebGLN = ''.
  167. IF ipiLieferant <> 999999 THEN
  168. DO:
  169. FIND FIRST ArtLief NO-LOCK
  170. WHERE ArtLief.Firma = Artst.Firma
  171. AND ArtLief.Artnr = Artst.Artnr
  172. AND ArtLief.Inhalt = Artst.Inhalt
  173. AND ArtLief.Jahr = Artst.Jahr
  174. AND ArtLief.Knr = ipiLieferant NO-ERROR.
  175. IF NOT AVAILABLE ArtLief THEN NEXT.
  176. cVGebGLN = ArtLief.Strichcode_VGeb.
  177. END.
  178. ELSE
  179. DO:
  180. FOR EACH ArtLief NO-LOCK
  181. WHERE ArtLief.Firma = Artst.Firma
  182. AND ArtLief.Artnr = Artst.Artnr
  183. AND ArtLief.Inhalt = Artst.Inhalt
  184. AND ArtLief.Jahr = Artst.Jahr
  185. AND ArtLief.Strichcode_VGeb <> '':
  186. cVGebGLN = ArtLief.Strichcode_VGeb.
  187. LEAVE.
  188. END.
  189. END.
  190. IF cVGebGLN = '' THEN NEXT.
  191. IF ipcWgr <> '' THEN
  192. DO:
  193. cWgr = STRING(Artst.Wg_Grp,'999').
  194. IF LOOKUP(cWgr, ipcWgr, ',') = 0 THEN NEXT.
  195. END.
  196. iKnr = (IF Debst.KnrFak > 0 AND Debst.KnrFak <> Debst.KnrLie THEN Debst.KnrFak ELSE Artbw.Knr).
  197. iJahr = YEAR (Artbw.Fak_Dat).
  198. iMonat = MONTH(Artbw.Fak_Dat).
  199. CREATE tArtbw.
  200. BUFFER-COPY Artbw TO tArtbw
  201. ASSIGN
  202. tArtbw.JJ = iJahr
  203. tArtbw.MM = iMonat
  204. tArtbw.GLN = Tabel.Bez2. /* Hersteller - GLN */
  205. FIND FIRST tAbsatzZahlen
  206. WHERE tAbsatzZahlen.JJ = iJahr
  207. AND tAbsatzZahlen.MM = iMonat
  208. AND tAbsatzZahlen.Knr = iKnr
  209. AND tAbsatzZahlen.Artnr = Artbw.Artnr
  210. AND tAbsatzZahlen.Inhalt = Artbw.Inhalt
  211. AND tAbsatzZahlen.Jahr = Artbw.Jahr
  212. AND tAbsatzZahlen.Fak_Datum = Artbw.Fak_Dat NO-ERROR.
  213. IF NOT AVAILABLE tAbsatzZahlen THEN
  214. DO:
  215. CREATE tAbsatzZahlen.
  216. ASSIGN
  217. tAbsatzZahlen.JJ = iJahr
  218. tAbsatzZahlen.MM = iMonat
  219. tAbsatzZahlen.Knr = iKnr
  220. tAbsatzZahlen.Artnr = Artbw.Artnr
  221. tAbsatzZahlen.Inhalt = Artbw.Inhalt
  222. tAbsatzZahlen.Jahr = Artbw.Jahr
  223. tAbsatzZahlen.Fak_Datum = Artbw.Fak_Dat
  224. tAbsatzZahlen.Herst = Artst.Herst
  225. tAbsatzZahlen.HerstGln = Tabel.Bez2
  226. tAbsatzZahlen.Hersteller = Tabel.Bez1
  227. tAbsatzZahlen.Bezeichnung = TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2)
  228. tAbsatzZahlen.KGeb_Cd = Artst.KGeb_Cd
  229. tAbsatzZahlen.VGeb_Cd = Artst.VGeb_Cd
  230. tAbsatzZahlen.KGeb_Bez = KGebinde.Bez
  231. tAbsatzZahlen.VGeb_Bez = VGebinde.Bez
  232. tAbsatzZahlen.KGeb_Inhalt = KGebinde.Inhalt
  233. tAbsatzZahlen.VGeb_Inhalt = VGebinde.Inhalt
  234. tAbsatzZahlen.Kgr = Debst.Ku_Grp
  235. tAbsatzZahlen.VGeb_gln = cVGebGLN
  236. .
  237. END.
  238. ASSIGN
  239. tAbsatzZahlen.KGeb_Me = tAbsatzZahlen.KGeb_Me + Artbw.KGeb_Me
  240. tAbsatzZahlen.VGeb_Me = tAbsatzZahlen.VGeb_Me + Artbw.VGeb_Me.
  241. END.
  242. IF lTest THEN lDebug = TRUE.
  243. IF lDebug THEN
  244. DO:
  245. oDigitalDrinkHandler = NEW DigitalDrinkHandler(
  246. INPUT cDevURL_Import,
  247. INPUT cDevServerNameIndicator,
  248. INPUT cClientId,
  249. INPUT cPassword,
  250. INPUT cClientName,
  251. INPUT iGLN-Huber).
  252. END.
  253. ELSE
  254. DO:
  255. oDigitalDrinkHandler = NEW DigitalDrinkHandler(
  256. INPUT cURL_Import,
  257. INPUT cServerNameIndicator,
  258. INPUT cClientId,
  259. INPUT cPassword,
  260. INPUT cClientName,
  261. INPUT iGLN-Huber).
  262. END.
  263. oDigitalDrinkHandler:lDebug = lDebug.
  264. FOR EACH btAbsatzZahlen USE-INDEX tAbsatzZahlen-k2
  265. BREAK BY btAbsatzZahlen.JJ
  266. BY btAbsatzZahlen.MM
  267. BY btAbsatzZahlen.Herst:
  268. IF NOT FIRST-OF (btAbsatzZahlen.Herst) THEN NEXT.
  269. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Start Absatzmeldung für Hersteller &1/&2, Jahr &3, Monat &4',
  270. btAbsatzZahlen.Herst, btAbsatzZahlen.Hersteller, btAbsatzZahlen.JJ, btAbsatzZahlen.MM) ).
  271. oAbsatzDatenImport = NEW AbsatzdatenImport(INPUT cClientId, INPUT cClientName, INPUT iGLN-Huber).
  272. oAbsatzDatenImport:lDebug = lDebug.
  273. /* ------------------------------------------------------ */
  274. /* Alle Kunden pro Hersteller und Monat */
  275. /* ------------------------------------------------------ */
  276. FOR EACH tAbsatzZahlen
  277. WHERE tAbsatzZahlen.JJ = btAbsatzZahlen.JJ
  278. AND tAbsatzZahlen.MM = btAbsatzZahlen.MM
  279. AND tAbsatzZahlen.Herst = btAbsatzZahlen.Herst
  280. BREAK BY tAbsatzZahlen.Knr:
  281. IF NOT FIRST-OF ( tAbsatzZahlen.Knr ) THEN NEXT.
  282. FIND Adresse NO-LOCK
  283. WHERE Adresse.Firma = Firma
  284. AND Adresse.Knr = tAbsatzZahlen.Knr NO-ERROR.
  285. oCustomer = NEW Customer().
  286. ASSIGN
  287. oCustomer:ino = tAbsatzZahlen.Knr
  288. oCustomer:cname1 = (IF Adresse.Firma1 <> '' THEN Adresse.Firma1 ELSE Adresse.Name)
  289. oCustomer:cname2 = (IF Adresse.Firma2 <> '' THEN Adresse.Firma2 ELSE Adresse.Vorname)
  290. oCustomer:cstreet = Adresse.Strasse
  291. oCustomer:czipcode = Adresse.Plz
  292. oCustomer:ccity = Adresse.Ort
  293. oCustomer:ccountry = Adresse.Lkz
  294. oCustomer:cphone1 = Adresse.Tel-1
  295. oCustomer:cphone2 = Adresse.Tel-2
  296. oCustomer:cfax = Adresse.Tel-3
  297. oCustomer:ctaxNumber = ''
  298. oCustomer:cmail = Adresse.Mail
  299. oCustomer:cstreet2 = ''
  300. oCustomer:cpostbox = Adresse.Postfach
  301. oCustomer:cinfo = ''
  302. oCustomer:cgln = ''.
  303. CASE tAbsatzZahlen.Kgr:
  304. WHEN 15 THEN
  305. oCustomer:eBusinessType = BusinessType:SC-02.
  306. WHEN 03 OR
  307. WHEN 12 OR
  308. WHEN 17 OR
  309. WHEN 14 THEN
  310. oCustomer:eBusinessType = BusinessType:SC-01.
  311. WHEN 10 THEN
  312. oCustomer:eBusinessType = BusinessType:SC-06.
  313. WHEN 04 THEN
  314. oCustomer:eBusinessType = BusinessType:SC-16.
  315. WHEN 05 OR
  316. WHEN 01 THEN
  317. oCustomer:eBusinessType = BusinessType:SC-09.
  318. WHEN 11 THEN
  319. oCustomer:eBusinessType = BusinessType:SC-04.
  320. WHEN 07 THEN
  321. oCustomer:eBusinessType = BusinessType:SC-11.
  322. OTHERWISE
  323. oCustomer:eBusinessType = BusinessType:SC-16.
  324. END CASE.
  325. oAbsatzDatenImport:addCustomer(oCustomer).
  326. END.
  327. /* ------------------------------------------------------ */
  328. /* Alle Verkäufe eines Herstellers pro Kunde und Monat */
  329. /* ------------------------------------------------------ */
  330. FOR EACH tAbsatzZahlen
  331. WHERE tAbsatzZahlen.Herst = btAbsatzZahlen.Herst
  332. AND tAbsatzZahlen.JJ = btAbsatzZahlen.JJ
  333. AND tAbsatzZahlen.MM = btAbsatzZahlen.MM
  334. BREAK BY tAbsatzZahlen.Herst
  335. BY tAbsatzZahlen.Knr
  336. BY tAbsatzZahlen.Artnr
  337. BY tAbsatzZahlen.Inhalt
  338. BY tAbsatzZahlen.Jahr :
  339. IF FIRST-OF ( tAbsatzZahlen.Herst ) THEN
  340. DO:
  341. oManufacturer = NEW Manufacturer().
  342. ASSIGN
  343. oManufacturer:cgln = tAbsatzZahlen.HerstGln
  344. oManufacturer:csalesDescription = tAbsatzZahlen.Hersteller.
  345. ASSIGN
  346. cHerstGLN = tAbsatzZahlen.HerstGln
  347. cHerst = tAbsatzZahlen.Hersteller.
  348. END.
  349. IF FIRST-OF ( tAbsatzZahlen.Jahr ) THEN
  350. DO:
  351. ASSIGN
  352. iVGeb = 0
  353. iKGeb = 0.
  354. END.
  355. ASSIGN
  356. iVGeb = iVGeb + tAbsatzZahlen.VGeb_Me
  357. iKGeb = iKGeb + tAbsatzZahlen.KGeb_Me.
  358. IF NOT LAST-OF ( tAbsatzZahlen.Jahr ) THEN NEXT.
  359. oSale = NEW Sale().
  360. ASSIGN
  361. oSale:icustomerNo = tAbsatzZahlen.Knr
  362. oSale:cGTIN = tAbsatzZahlen.VGeb_gln
  363. oSale:carticleNoClient = STRING(tAbsatzZahlen.Artnr ,'999999')
  364. + '.'
  365. + STRING(tAbsatzZahlen.Inhalt,'9999')
  366. + '.'
  367. + STRING(tAbsatzZahlen.Jahr ,'9999')
  368. oSale:carticleName = tAbsatzZahlen.Bezeichnung
  369. oSale:ifilling = tAbsatzZahlen.VGeb_Inhalt
  370. oSale:ffillingContent = tAbsatzZahlen.KGeb_Inhalt
  371. oSale:dtdate = tAbsatzZahlen.Fak_Datum
  372. oSale:fnormal = iKGeb * tAbsatzZahlen.KGeb_Inhalt / 10000
  373. oSale:fcampaign = 0
  374. oSale:ffree = 0
  375. oSale:ftotal = iKGeb * tAbsatzZahlen.KGeb_Inhalt / 10000
  376. oSale:eunit = SalesUnit:SU-03.
  377. oManufacturer:addSales(oSale).
  378. END.
  379. oAbsatzDatenImport:addManufacturer(oManufacturer).
  380. lRetVal = oDigitalDrinkHandler:getAbsatzDatenImport(INPUT oAbsatzDatenImport, INPUT Type:IMP001, OUTPUT opErrorMessage, OUTPUT oResponseStatus).
  381. lRetVal = TRUE.
  382. IF lRetVal THEN
  383. DO:
  384. CREATE tAbschluss.
  385. ASSIGN
  386. tAbschluss.GLN = cHerstGln
  387. tAbschluss.JJ = tAbsatzZahlen.JJ
  388. tAbschluss.MM = tAbsatzZahlen.MM
  389. tAbschluss.cHerst = cHerst
  390. tAbschluss.lOK = FALSE.
  391. END.
  392. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Ende Absatzmeldung für Hersteller &1/&2, Jahr &3, Monat &4 -> &5',
  393. btAbsatzZahlen.Herst, btAbsatzZahlen.Hersteller, btAbsatzZahlen.JJ, btAbsatzZahlen.MM, STRING(lRetVal,'OK/Fehlerhaft')) ).
  394. IF VALID-OBJECT (oSale) THEN DELETE OBJECT oSale.
  395. IF VALID-OBJECT (oManufacturer) THEN DELETE OBJECT oManufacturer.
  396. IF VALID-OBJECT (oCustomer) THEN DELETE OBJECT oCustomer.
  397. IF VALID-OBJECT (oAbsatzDatenImport) THEN DELETE OBJECT oAbsatzDatenImport.
  398. END.
  399. DO WHILE lAbschluss:
  400. FOR EACH tAbschluss:
  401. oAbsatzAbschlussImport = NEW AbsatzAbschlussImport(INPUT cClientId, INPUT cClientName, INPUT iGLN-Huber).
  402. oAbsatzAbschlussImport:lDebug = lDebug.
  403. oAbsatzAbschluss = NEW AbsatzAbschluss ().
  404. oAbsatzAbschluss:cgln = tAbschluss.GLN.
  405. oAbsatzAbschluss:iYear = tAbschluss.JJ.
  406. oAbsatzAbschluss:iMonth = tAbschluss.MM.
  407. lRetVal = oAbsatzAbschlussImport:oAbsatzAbschlussList:Add(oAbsatzAbschluss).
  408. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('&1 - &2 - &3 - &4 - &5', tAbschluss.cHerst, tAbschluss.GLN, tAbschluss.JJ, tAbschluss.MM, lRetVal) ).
  409. lRetVal = oDigitalDrinkHandler:getAbsatzAbschlussImport(INPUT oAbsatzAbschlussImport, INPUT Type:IMP002, OUTPUT opErrorMessage, OUTPUT oResponseStatus).
  410. RUN writeLogFile.p ( cProgramm, cLogFile, SUBSTITUTE ('Abschluss Absatzmeldung -> &1 / &2', STRING(lRetVal,'OK/Fehlerhaft'), opErrorMessage) ).
  411. tAbschluss.lOK = lRetVal.
  412. IF VALID-OBJECT (oAbsatzAbschluss) THEN DELETE OBJECT oAbsatzAbschluss.
  413. IF VALID-OBJECT (oAbsatzAbschlussImport) THEN DELETE OBJECT oAbsatzAbschlussImport .
  414. END.
  415. FOR EACH tAbschluss
  416. WHERE tAbschluss.lOK = TRUE,
  417. EACH tArtbw USE-INDEX tArtbw-k1
  418. WHERE tArtbw.JJ = tAbschluss.JJ
  419. AND tArtbw.MM = tAbschluss.MM
  420. AND tArtbw.GLN = tAbschluss.GLN:
  421. FIND Artbw
  422. WHERE Artbw.Firma = tArtbw.Firma
  423. AND Artbw.Trnr = tArtbw.Trnr NO-ERROR.
  424. IF NOT AVAILABLE Artbw THEN NEXT.
  425. Artbw.lDDUmsatz = TRUE.
  426. END.
  427. LEAVE.
  428. END.
  429. FINALLY:
  430. IF VALID-OBJECT (oSale) THEN DELETE OBJECT oSale.
  431. IF VALID-OBJECT (oManufacturer) THEN DELETE OBJECT oManufacturer.
  432. IF VALID-OBJECT (oCustomer) THEN DELETE OBJECT oCustomer.
  433. IF VALID-OBJECT (oAbsatzDatenImport) THEN DELETE OBJECT oAbsatzDatenImport.
  434. IF VALID-OBJECT (oAbsatzAbschluss) THEN DELETE OBJECT oAbsatzAbschluss.
  435. IF VALID-OBJECT (oAbsatzAbschlussImport) THEN DELETE OBJECT oAbsatzAbschlussImport.
  436. IF VALID-OBJECT (oDigitalDrinkHandler) THEN DELETE OBJECT oDigitalDrinkHandler.
  437. END FINALLY.