cocacola_v2.p 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
  2. &ANALYZE-RESUME
  3. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DECLARATIONS Procedure
  4. USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
  5. USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
  6. &ANALYZE-RESUME
  7. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
  8. /*------------------------------------------------------------------------
  9. File :
  10. Purpose :
  11. Syntax :
  12. Description :
  13. Author(s) :
  14. Created :
  15. Notes :
  16. ----------------------------------------------------------------------*/
  17. /* This .W file was created with the Progress AppBuilder. */
  18. /*----------------------------------------------------------------------*/
  19. /* *************************** Definitions ************************** */
  20. DEFINE INPUT PARAMETER ipcParam AS CHARACTER NO-UNDO EXTENT.
  21. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  22. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO.
  23. DEFINE VARIABLE cInstall AS CHARACTER NO-UNDO.
  24. DEFINE VARIABLE nMenge AS DECIMAL NO-UNDO.
  25. DEFINE VARIABLE hDS AS HANDLE NO-UNDO.
  26. DEFINE VARIABLE hTempTable AS HANDLE NO-UNDO.
  27. DEFINE VARIABLE iTransDet AS INTEGER NO-UNDO.
  28. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  29. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO.
  30. DEFINE VARIABLE iSpace AS INTEGER NO-UNDO.
  31. DEFINE VARIABLE cDatei AS CHARACTER NO-UNDO.
  32. DEFINE VARIABLE cParameter AS CHARACTER NO-UNDO.
  33. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  34. DEFINE VARIABLE lBatch AS LOGICAL NO-UNDO.
  35. DEFINE VARIABLE ipFirma AS CHARACTER NO-UNDO INIT '1000'.
  36. DEFINE VARIABLE ipSalerId AS CHARACTER NO-UNDO INIT '2700721304'.
  37. DEFINE VARIABLE ipHerst AS INTEGER NO-UNDO INIT 35.
  38. DEFINE VARIABLE ipLiefnr AS INTEGER NO-UNDO INIT 523.
  39. DEFINE VARIABLE ipabDatum AS DATE NO-UNDO INIT 01/01/2023.
  40. DEFINE VARIABLE ipDatei AS CHARACTER NO-UNDO INIT 'C:\TEMP\'.
  41. DEFINE VARIABLE oJsonObject AS JsonObject NO-UNDO.
  42. DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
  43. DEFINE VARIABLE lcJsonObject AS LONGCHAR NO-UNDO.
  44. DEFINE STREAM sXML.
  45. DEFINE STREAM sTEMP.
  46. DEFINE BUFFER bSteuer FOR Steuer.
  47. { incl/cocacola_v2_ds.i }
  48. DEFINE TEMP-TABLE tArtbw LIKE Artbw
  49. FIELD Herst AS INTEGER
  50. FIELD ProdVol AS DECIMAL
  51. FIELD LiefKnr AS CHARACTER
  52. INDEX tArtbw-k1 IS PRIMARY
  53. Knr
  54. Artnr
  55. Inhalt
  56. Jahr
  57. Datum
  58. INDEX tArtbw-k2
  59. Artnr
  60. Inhalt
  61. Jahr
  62. INDEX tArtbw-k3
  63. Knr
  64. Aufnr
  65. Artnr
  66. Inhalt
  67. Jahr.
  68. DEFINE TEMP-TABLE tCustomer
  69. FIELD Knr AS INTEGER
  70. FIELD Ku_Grp AS CHARACTER
  71. FIELD lFakKnr AS LOGICAL
  72. INDEX tCustomer-k1 IS PRIMARY
  73. Knr
  74. .
  75. DEFINE TEMP-TABLE tXML
  76. FIELD iZeile AS INTEGER
  77. FIELD iSpace AS INTEGER
  78. FIELD cLine AS CHARACTER
  79. .
  80. /* _UIB-CODE-BLOCK-END */
  81. &ANALYZE-RESUME
  82. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  83. /* ******************** Preprocessor Definitions ******************** */
  84. &Scoped-define PROCEDURE-TYPE Procedure
  85. &Scoped-define DB-AWARE no
  86. /* _UIB-PREPROCESSOR-BLOCK-END */
  87. &ANALYZE-RESUME
  88. /* ************************ Function Prototypes ********************** */
  89. &IF DEFINED(EXCLUDE-createControlList) = 0 &THEN
  90. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createControlList Procedure
  91. FUNCTION createControlList RETURNS LOGICAL
  92. ( ) FORWARD.
  93. /* _UIB-CODE-BLOCK-END */
  94. &ANALYZE-RESUME
  95. &ENDIF
  96. &IF DEFINED(EXCLUDE-createCustomers) = 0 &THEN
  97. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createCustomers Procedure
  98. FUNCTION createCustomers RETURNS INTEGER
  99. ( ) FORWARD.
  100. /* _UIB-CODE-BLOCK-END */
  101. &ANALYZE-RESUME
  102. &ENDIF
  103. &IF DEFINED(EXCLUDE-createProducts) = 0 &THEN
  104. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createProducts Procedure
  105. FUNCTION createProducts RETURNS INTEGER
  106. ( ) FORWARD.
  107. /* _UIB-CODE-BLOCK-END */
  108. &ANALYZE-RESUME
  109. &ENDIF
  110. &IF DEFINED(EXCLUDE-createSales) = 0 &THEN
  111. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createSales Procedure
  112. FUNCTION createSales RETURNS LOGICAL
  113. ( /* parameter-definitions */ ) FORWARD.
  114. /* _UIB-CODE-BLOCK-END */
  115. &ANALYZE-RESUME
  116. &ENDIF
  117. &IF DEFINED(EXCLUDE-findArtbw) = 0 &THEN
  118. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD findArtbw Procedure
  119. FUNCTION findArtbw RETURNS DECIMAL
  120. ( /* parameter-definitions */ ) FORWARD.
  121. /* _UIB-CODE-BLOCK-END */
  122. &ANALYZE-RESUME
  123. &ENDIF
  124. /* *********************** Procedure Settings ************************ */
  125. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  126. /* Settings for THIS-PROCEDURE
  127. Type: Procedure
  128. Allow:
  129. Frames: 0
  130. Add Fields to: Neither
  131. Other Settings: CODE-ONLY COMPILE
  132. */
  133. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  134. /* ************************* Create Window ************************** */
  135. &ANALYZE-SUSPEND _CREATE-WINDOW
  136. /* DESIGN Window definition (used by the UIB)
  137. CREATE WINDOW Procedure ASSIGN
  138. HEIGHT = 15
  139. WIDTH = 60.
  140. /* END WINDOW DEFINITION */
  141. */
  142. &ANALYZE-RESUME
  143. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  144. /* *************************** Main Block *************************** */
  145. hDS = DATASET dsSALE:HANDLE.
  146. hDS:SET-CALLBACK-PROCEDURE ("BEFORE-FILL", "POSTDATAFILLDS", THIS-PROCEDURE ).
  147. hDS:SET-CALLBACK-PROCEDURE ("AFTER-FILL" , "POSTDATAFILLDS", THIS-PROCEDURE ).
  148. DO ii = 1 TO EXTENT(ipcParam):
  149. CASE ii:
  150. WHEN 1 THEN
  151. ipFirma = ipcParam[ii].
  152. WHEN 2 THEN
  153. ipSalerId = ipcParam[ii].
  154. WHEN 3 THEN
  155. ipHerst = INTEGER(ipcParam[ii]).
  156. WHEN 4 THEN
  157. ipLiefnr = INTEGER(ipcParam[ii]).
  158. WHEN 5 THEN
  159. ipabDatum = DATE(ipcParam[ii]).
  160. WHEN 6 THEN
  161. ipDatei = ipcParam[ii].
  162. END CASE.
  163. END.
  164. lBatch = DYNAMIC-FUNCTION ('getBatch':U) NO-ERROR.
  165. IF lBatch = ? THEN lBatch = TRUE.
  166. IF SESSION:BATCH THEN lBatch = TRUE.
  167. IF lBatch THEN ipabDatum = TODAY - 60.
  168. FIND bSteuer NO-LOCK
  169. WHERE bSteuer.Firma = ipFirma NO-ERROR.
  170. AdFirma = bSteuer.AdFirma.
  171. cInstall = bSteuer.Fwc10.
  172. cFirma = ipFirma.
  173. nMenge = DYNAMIC-FUNCTION ('findArtbw':U).
  174. DYNAMIC-FUNCTION ('createCustomers':U).
  175. DYNAMIC-FUNCTION ('createProducts':U).
  176. DYNAMIC-FUNCTION ('createSales':U).
  177. DYNAMIC-FUNCTION ('createControlList':U).
  178. cDatei = ipDatei + SUBSTITUTE('CUS_&1&2&3_&4.txt', STRING(YEAR(TODAY),'9999'), STRING(MONTH(TODAY),'99'), STRING(DAY(TODAY),'99'), REPLACE(STRING(TIME,'HH:MM'), ':', '') ).
  179. hTempTable = TEMP-TABLE CUS:DEFAULT-BUFFER-HANDLE.
  180. hTempTable:WRITE-JSON('File', cDatei, TRUE /*formatted*/, "UTF-8").
  181. cDatei = ipDatei + SUBSTITUTE('PRO_&1&2&3_&4.txt', STRING(YEAR(TODAY),'9999'), STRING(MONTH(TODAY),'99'), STRING(DAY(TODAY),'99'), REPLACE(STRING(TIME,'HH:MM'), ':', '') ).
  182. hTempTable = TEMP-TABLE PRO:DEFAULT-BUFFER-HANDLE.
  183. hTempTable:WRITE-JSON('File', cDatei, TRUE /*formatted*/, "UTF-8").
  184. hDS:FILL() NO-ERROR.
  185. cDatei = ipDatei + SUBSTITUTE('SAL_&1&2&3_&4.txt', STRING(YEAR(TODAY),'9999'), STRING(MONTH(TODAY),'99'), STRING(DAY(TODAY),'99'), REPLACE(STRING(TIME,'HH:MM'), ':', '') ).
  186. oJsonObject = NEW JsonObject().
  187. oJsonObject:READ(hDS).
  188. oJsonObject:WRITE(lcJsonObject, FALSE).
  189. lcJsonObject = SUBSTRING(lcJsonObject,10).
  190. lcJsonObject = SUBSTRING(lcJsonObject,01, LENGTH(lcJsonObject) - 3).
  191. DELETE OBJECT oJsonObject.
  192. oJsonObject = NEW JsonObject().
  193. oParser = NEW ObjectModelParser().
  194. oJsonObject = CAST(oParser:PARSE (lcJsonObject), JsonObject).
  195. oJsonObject:WRITE(lcJsonObject, TRUE).
  196. COPY-LOB lcJsonObject TO FILE cDatei NO-CONVERT.
  197. DELETE OBJECT oJsonObject.
  198. DELETE OBJECT oParser.
  199. /* _UIB-CODE-BLOCK-END */
  200. &ANALYZE-RESUME
  201. /* ********************** Internal Procedures *********************** */
  202. &IF DEFINED(EXCLUDE-POSTDATAFILLDS) = 0 &THEN
  203. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE POSTDATAFILLDS Procedure
  204. PROCEDURE POSTDATAFILLDS :
  205. /*------------------------------------------------------------------------------
  206. Purpose:
  207. Parameters: <none>
  208. Notes:
  209. ------------------------------------------------------------------------------*/
  210. DEFINE INPUT PARAMETER DATASET-HANDLE iphDS.
  211. END PROCEDURE.
  212. /* _UIB-CODE-BLOCK-END */
  213. &ANALYZE-RESUME
  214. &ENDIF
  215. /* ************************ Function Implementations ***************** */
  216. &IF DEFINED(EXCLUDE-createControlList) = 0 &THEN
  217. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createControlList Procedure
  218. FUNCTION createControlList RETURNS LOGICAL
  219. ( ):
  220. /*------------------------------------------------------------------------------
  221. Purpose:
  222. Notes:
  223. ------------------------------------------------------------------------------*/
  224. cDatei = ipDatei + SUBSTITUTE('SAL_&1&2&3_&4.xml', STRING(YEAR(TODAY),'9999'), STRING(MONTH(TODAY),'99'), STRING(DAY(TODAY),'99'), REPLACE(STRING(TIME,'HH:MM'), ':', '') ).
  225. hTempTable = TEMP-TABLE tControlList:DEFAULT-BUFFER-HANDLE.
  226. hTempTable:WRITE-XML('File', cDatei, TRUE /*formatted*/, "UTF-8", ?, FALSE, FALSE, ?, FALSE).
  227. END FUNCTION.
  228. /* _UIB-CODE-BLOCK-END */
  229. &ANALYZE-RESUME
  230. &ENDIF
  231. &IF DEFINED(EXCLUDE-createCustomers) = 0 &THEN
  232. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createCustomers Procedure
  233. FUNCTION createCustomers RETURNS INTEGER
  234. ( ):
  235. /*------------------------------------------------------------------------------
  236. Purpose:
  237. Notes:
  238. ------------------------------------------------------------------------------*/
  239. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  240. DEFINE VARIABLE cStrasse AS CHARACTER NO-UNDO.
  241. DEFINE VARIABLE cName1 AS CHARACTER NO-UNDO.
  242. DEFINE VARIABLE cName2 AS CHARACTER NO-UNDO.
  243. DEFINE VARIABLE cLeerPlz AS CHARACTER NO-UNDO.
  244. DEFINE VARIABLE cLeerOrt AS CHARACTER NO-UNDO.
  245. FIND FIRST Steuer NO-LOCK
  246. WHERE Steuer.Firma = cFirma NO-ERROR.
  247. IF NUM-ENTRIES(Steuer.Ort, '-') > 1 THEN cLeerOrt = ENTRY(2, Steuer.Ort, '-').
  248. ELSE cLeerOrt = Steuer.Ort.
  249. /* cLeerPlz = ENTRY(1, cLeerOrt, ' '). */
  250. /* cLeerOrt = TRIM(REPLACE(cLeerOrt, cLeerPlz, '')).*/
  251. cLeerPlz = 'N/A'.
  252. cLeerOrt = 'N/A'.
  253. FOR EACH tArtbw NO-LOCK USE-INDEX tArtbw-k1
  254. BREAK BY tArtbw.Knr:
  255. IF NOT FIRST-OF ( tArtbw.Knr ) THEN NEXT.
  256. FIND Adresse NO-LOCK
  257. WHERE Adresse.Firma = AdFirma
  258. AND Adresse.Knr = tArtbw.Knr NO-ERROR.
  259. FIND Debst NO-LOCK
  260. WHERE Debst.Firma = cFirma
  261. AND Debst.Knr = Adresse.Knr NO-ERROR.
  262. FIND Tabel NO-LOCK
  263. WHERE Tabel.Firma = cFirma
  264. AND Tabel.RecArt = 'KUNDGRP'
  265. AND Tabel.CodeI = Debst.Ku_Grp
  266. AND Tabel.CodeC = ''
  267. AND Tabel.Sprcd = 1 NO-ERROR.
  268. IF Adresse.Firma1 <> '' THEN
  269. DO:
  270. cName1 = TRIM(Adresse.Firma1 + ' ' + Adresse.Firma2).
  271. cName2 = TRIM(Adresse.Vorname + ' ' + Adresse.Name).
  272. IF cName2 = '' THEN
  273. DO:
  274. cName1 = Adresse.Firma1.
  275. cName2 = Adresse.Firma2.
  276. END.
  277. IF cName2 = '' THEN cName2 = 'N/A'.
  278. END.
  279. ELSE
  280. DO:
  281. cName1 = Adresse.Name.
  282. cName2 = Adresse.Vorname.
  283. IF cName2 = '' THEN
  284. DO:
  285. cName2 = 'N/A'.
  286. END.
  287. END.
  288. cStrasse = Adresse.Strasse.
  289. IF cStrasse = '' THEN cStrasse = Adresse.Postfach.
  290. IF cStrasse = '' THEN cStrasse = 'N/A'.
  291. FIND FIRST tCustomer NO-LOCK
  292. WHERE tCustomer.Knr = tArtbw.Knr NO-ERROR.
  293. IF NOT AVAILABLE tCustomer THEN
  294. DO:
  295. CREATE CUS.
  296. ASSIGN
  297. CUS.BRANCH_ID = ipSalerId
  298. CUS.CUSTOMER_ID = TRIM(STRING(tArtbw.Knr,'>>>>>9'))
  299. CUS.PAYER_ID = (IF Debst.KnrFak = 0 THEN TRIM(STRING(Debst.Knr,'>>>>>>9')) ELSE TRIM(STRING(Debst.KnrFak,'>>>>>>9')) )
  300. CUS.CUSTOMER_NAME_1 = cName1
  301. CUS.CUSTOMER_NAME_2 = cName2
  302. CUS.STREET = cStrasse
  303. CUS.POSTAL_CODE = (IF Adresse.Plz = '' THEN cLeerPlz ELSE Adresse.Plz)
  304. CUS.CITY = (IF Adresse.Ort = '' THEN cLeerOrt ELSE Adresse.Ort)
  305. CUS.COUNTRY_ID = (IF Adresse.Lkz = '' THEN 'CH' ELSE Adresse.Lkz)
  306. CUS.ACTIVITY = (IF Debst.Aktiv THEN 1 ELSE 0)
  307. CUS.CUSTOMER_TYPE = (IF AVAILABLE Tabel THEN Tabel.Bez1 ELSE '').
  308. IF CUS.COUNTRY_ID = 'D' THEN CUS.COUNTRY_ID = 'DE'.
  309. IF CUS.COUNTRY_ID = 'I' THEN CUS.COUNTRY_ID = 'IT'.
  310. IF CUS.COUNTRY_ID = 'A' THEN CUS.COUNTRY_ID = 'AT'.
  311. CREATE tCustomer.
  312. ASSIGN
  313. tCustomer.Knr = tArtbw.Knr
  314. tCustomer.Ku_Grp = (IF AVAILABLE Tabel THEN Tabel.Bez1 ELSE '')
  315. tCustomer.lFakKnr = (IF CUS.CUSTOMER_ID = CUS.PAYER_ID THEN TRUE ELSE FALSE).
  316. iAnz = iAnz + 1.
  317. END.
  318. IF tCustomer.lFakKnr THEN NEXT.
  319. FIND FIRST tCustomer NO-LOCK
  320. WHERE tCustomer.Knr = tArtbw.Fak_Knr NO-ERROR.
  321. IF NOT AVAILABLE tCustomer THEN
  322. DO:
  323. FIND Adresse NO-LOCK
  324. WHERE Adresse.Firma = AdFirma
  325. AND Adresse.Knr = tArtbw.Fak_Knr NO-ERROR.
  326. FIND Debst NO-LOCK
  327. WHERE Debst.Firma = cFirma
  328. AND Debst.Knr = Adresse.Knr NO-ERROR.
  329. FIND Tabel NO-LOCK
  330. WHERE Tabel.Firma = cFirma
  331. AND Tabel.RecArt = 'KUNDGRP'
  332. AND Tabel.CodeI = Debst.Ku_Grp
  333. AND Tabel.CodeC = ''
  334. AND Tabel.Sprcd = 1 NO-ERROR.
  335. CREATE CUS.
  336. ASSIGN
  337. CUS.BRANCH_ID = ipSalerId
  338. CUS.CUSTOMER_ID = TRIM(STRING(tArtbw.Fak_Knr,'>>>>>9'))
  339. CUS.PAYER_ID = TRIM(STRING(tArtbw.Fak_Knr,'>>>>>>9'))
  340. CUS.CUSTOMER_NAME_1 = (IF Adresse.Firma1 <> '' THEN Adresse.Firma1 ELSE Adresse.Name)
  341. CUS.CUSTOMER_NAME_2 = (IF Adresse.Firma1 <> '' THEN Adresse.Name ELSE '' )
  342. CUS.STREET = Adresse.Strasse
  343. CUS.POSTAL_CODE = Adresse.Plz
  344. CUS.CITY = Adresse.Ort
  345. CUS.COUNTRY_ID = Adresse.Lkz
  346. CUS.ACTIVITY = (IF Debst.Aktiv THEN 1 ELSE 0)
  347. CUS.CUSTOMER_TYPE = (IF AVAILABLE Tabel THEN Tabel.Bez1 ELSE '').
  348. IF CUS.COUNTRY_ID = 'D' THEN CUS.COUNTRY_ID = 'DE'.
  349. IF CUS.COUNTRY_ID = 'I' THEN CUS.COUNTRY_ID = 'IT'.
  350. IF CUS.COUNTRY_ID = 'A' THEN CUS.COUNTRY_ID = 'AT'.
  351. CREATE tCustomer.
  352. ASSIGN
  353. tCustomer.Knr = tArtbw.Knr
  354. tCustomer.Ku_Grp = (IF AVAILABLE Tabel THEN Tabel.Bez1 ELSE '')
  355. tCustomer.lFakKnr = TRUE.
  356. iAnz = iAnz + 1.
  357. END.
  358. END.
  359. RETURN iAnz.
  360. END FUNCTION.
  361. /* _UIB-CODE-BLOCK-END */
  362. &ANALYZE-RESUME
  363. &ENDIF
  364. &IF DEFINED(EXCLUDE-createProducts) = 0 &THEN
  365. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createProducts Procedure
  366. FUNCTION createProducts RETURNS INTEGER
  367. ( ):
  368. /*------------------------------------------------------------------------------*/
  369. /* Purpose: Super Override */
  370. /* Parameters: */
  371. /* Notes: */
  372. /*------------------------------------------------------------------------------*/
  373. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  374. DEFINE VARIABLE cStrichcode AS CHARACTER NO-UNDO.
  375. FOR EACH tArtbw USE-INDEX tArtbw-k2
  376. BREAK
  377. BY tArtbw.Artnr
  378. BY tArtbw.Inhalt
  379. BY tArtbw.Jahr :
  380. IF NOT FIRST-OF ( tArtbw.Jahr ) THEN NEXT.
  381. FIND Artst NO-LOCK
  382. WHERE Artst.Firma = cFirma
  383. AND Artst.Artnr = tArtbw.Artnr
  384. AND Artst.Inhalt = tArtbw.Inhalt
  385. AND Artst.Jahr = tArtbw.Jahr NO-ERROR.
  386. FIND FIRST Artbez NO-LOCK OF Artst.
  387. FIND VGebinde NO-LOCK
  388. WHERE VGebinde.Firma = cFirma
  389. AND VGebinde.Geb_Cd = Artst.VGeb_Cd NO-ERROR.
  390. FIND KGebinde NO-LOCK
  391. WHERE KGebinde.Firma = cFirma
  392. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  393. FIND ArtLief NO-LOCK
  394. WHERE ArtLief.Firma = cFirma
  395. AND ArtLief.Knr = ipLiefNr
  396. AND ArtLief.Artnr = tArtbw.Artnr
  397. AND ArtLief.Inhalt = tArtbw.Inhalt
  398. AND ArtLief.Jahr = tArtbw.Jahr NO-ERROR.
  399. IF NOT AVAILABLE ArtLief THEN NEXT.
  400. FIND Tabel NO-LOCK
  401. WHERE Tabel.Firma = cFirma
  402. AND Tabel.RecArt = 'HERST'
  403. AND Tabel.CodeI = Artst.Herst
  404. AND Tabel.CodeC = ''
  405. AND Tabel.Sprcd = 1 NO-ERROR.
  406. cStrichcode = Artst.Strichcode.
  407. IF cStrichcode = '' THEN cStrichcode = ArtLief.Strichcode_KGeb.
  408. IF cStrichcode = '' THEN cStrichcode = ArtLief.Strichcode_VGeb.
  409. IF cStrichcode = '' THEN cStrichcode = FILL('0', 13).
  410. CREATE PRO.
  411. ASSIGN
  412. PRO.BRANCH_ID = ipSalerId
  413. PRO.PRODUCT_ID = SUBSTITUTE('&1.&2.&3', STRING(Artst.Artnr,'999999'), STRING(Artst.Inhalt,'9999'), STRING(Artst.Jahr,'9999'))
  414. PRO.PRODUCER_PRODUCT_ID = ArtLief.S_Artnr
  415. PRO.EAN = cStrichcode
  416. PRO.PRODUCT_NAME_1 = TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2)
  417. PRO.PRODUCT_NAME_2 = KGebinde.Bez
  418. PRO.MEASURE_UNIT_ID = KGebinde.Geb_Cd
  419. PRO.MEASURE_UNIT = KGebinde.KBez
  420. PRO.PRODUCER_ID = (IF AVAILABLE ArtLief THEN TRIM(STRING(ArtLief.Knr,'>>>>>9')) ELSE '')
  421. PRO.PRODUCER_NAME = (IF AVAILABLE Tabel THEN Tabel.Bez1 ELSE '')
  422. PRO.ACTIVITY = (IF Artst.Aktiv THEN 1 ELSE 0)
  423. PRO.MULTIPLIER = 1.0
  424. PRO.MULTIPLIER_VOL = tArtbw.ProdVol
  425. .
  426. ASSIGN
  427. tArtbw.ProdVol = PRO.MULTIPLIER_VOL.
  428. iAnz = iAnz + 1.
  429. END.
  430. RETURN iANz.
  431. END FUNCTION.
  432. /* _UIB-CODE-BLOCK-END */
  433. &ANALYZE-RESUME
  434. &ENDIF
  435. &IF DEFINED(EXCLUDE-createSales) = 0 &THEN
  436. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createSales Procedure
  437. FUNCTION createSales RETURNS LOGICAL
  438. ( /* parameter-definitions */ ) :
  439. /*------------------------------------------------------------------------------*/
  440. /* Purpose: Super Override */
  441. /* Parameters: */
  442. /* Notes: */
  443. /*------------------------------------------------------------------------------*/
  444. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  445. DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
  446. DEFINE VARIABLE rRecid AS RECID NO-UNDO.
  447. DEFINE VARIABLE rSal AS RECID NO-UNDO.
  448. CREATE SAL_HEADER.
  449. ASSIGN
  450. SAL_HEADER.FROM_DATE = SUBSTITUTE('&1-&2-&3', STRING(YEAR(ipabDatum),'9999'), STRING(MONTH(ipabDatum),'99'), STRING(DAY(ipabDatum),'99') )
  451. SAL_HEADER.TO_DATE = SUBSTITUTE('&1-&2-&3', STRING(YEAR(TODAY),'9999') , STRING(MONTH(TODAY),'99') , STRING(DAY(TODAY),'99') )
  452. SAL_HEADER.TYPE_DATE = 'ISSUE_DATE'
  453. .
  454. rRecid = RECID(SAL_HEADER).
  455. SAL_HEADER.SAL_HEADER_ID = rRecid.
  456. EMPTY TEMP-TABLE tControlList.
  457. FOR EACH tArtbw USE-INDEX tArtbw-k3
  458. BREAK
  459. BY tArtbw.Knr
  460. BY tArtbw.Aufnr
  461. BY tArtbw.Artnr
  462. BY tArtbw.Inhalt
  463. BY tArtbw.Jahr.
  464. IF FIRST-OF (tArtbw.Knr) THEN
  465. DO:
  466. CREATE SAL.
  467. ASSIGN
  468. SAL.TYPE_ID = 'DEL'
  469. SAL.BRANCH_ID = ipSalerId
  470. SAL.DOC_ID = TRIM(STRING(tArtbw.Aufnr,'>999999'))
  471. SAL.ISSUE_DATE = SUBSTITUTE('&1-&2-&3', STRING(YEAR(tArtbw.Datum),'9999') , STRING(MONTH(tArtbw.Datum),'99') , STRING(DAY(tArtbw.Datum),'99') )
  472. SAL.SALE_DATE = SUBSTITUTE('&1-&2-&3', STRING(YEAR(tArtbw.Fak_Dat),'9999'), STRING(MONTH(tArtbw.Fak_Dat),'99'), STRING(DAY(tArtbw.Fak_Dat),'99') )
  473. SAL.CUSTOMER_ID = TRIM(STRING(tArtbw.Knr,'>>>>>9'))
  474. SAL.COR_DOC_ID = ?
  475. SAL.COR_DOC_DATE = ?
  476. SAL.TYPE_SALE_ID = 'ST'
  477. SAL.FIELD_1 = SUBSTITUTE('&1-&2-&3', STRING(YEAR(tArtbw.Datum),'9999') , STRING(MONTH(tArtbw.Datum),'99') , STRING(DAY(tArtbw.Datum),'99') )
  478. SAL.FIELD_2 = TRIM(STRING(tArtbw.Faknr,'>999999'))
  479. SAL.SAL_HEADER_ID = rRecid.
  480. .
  481. iPos = 0.
  482. iAnz = iAnz + 1.
  483. rSal = RECID(SAL).
  484. SAL.SAL_ID = rSal.
  485. END.
  486. CREATE SAL_ITEM.
  487. iPos = iPos + 1.
  488. ASSIGN
  489. SAL_ITEM.SAL_ID = rSal
  490. SAL_ITEM.ITEM = iPos
  491. SAL_ITEM.PRODUCT_ID = SUBSTITUTE('&1.&2.&3', STRING(tArtbw.Artnr,'999999'), STRING(tArtbw.Inhalt,'9999'), STRING(tArtbw.Jahr,'9999'))
  492. SAL_ITEM.MEASURE_UNIT_ID = tArtbw.KGeb_Cd
  493. SAL_ITEM.PRODUCER_ID = tArtbw.LiefKnr
  494. SAL_ITEM.QUANTITY = tArtbw.Menge
  495. SAL_ITEM.QUANTITY_VOL = tArtbw.Liter
  496. /* SAL_ITEM.QUANTITY_WAS = 0.0*/
  497. /* SAL_ITEM.QUANTITY_VOL_WAS = 0.0*/
  498. SAL_ITEM.PURCHASE_ORDER = ''
  499. SAL_ITEM.FIELD_1 = '0'
  500. SAL_ITEM.FIELD_2 = ''
  501. SAL_ITEM.FIELD_3 = ''
  502. .
  503. IF tArtbw.Aktion_Text <> '' THEN SAL_ITEM.FIELD_1 = '1'.
  504. IF tArtbw.Preis = 0 THEN SAL_ITEM.FIELD_1 = '2'.
  505. FIND FIRST Artbez NO-LOCK
  506. WHERE Artbez.Firma = tArtbw.Firma
  507. AND Artbez.Artnr = tArtbw.Artnr
  508. AND Artbez.Inhalt = tArtbw.Inhalt
  509. AND Artbez.Jahr = tArtbw.Jahr NO-ERROR.
  510. CREATE tControlList.
  511. ASSIGN
  512. tControlList.BRANCH_ID = ipSalerId
  513. tControlList.CUSTOMER_ID = TRIM(STRING(tArtbw.Knr,'>>>>>9'))
  514. tControlList.PRODUCT_ID = SAL_ITEM.PRODUCT_ID
  515. tControlList.PRODUCT_NAME = (IF AVAILABLE Artbez THEN TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2) ELSE '')
  516. tControlList.DOCUMENT_TYPE = 'INV'
  517. tControlList.DOCUMENT_NUMBER = TRIM(STRING(tArtbw.Aufnr,'>999999'))
  518. tControlList.DOCUMENT_ISSUE_DATE = SUBSTITUTE('&1-&2-&3', STRING(YEAR(tArtbw.Datum),'9999') , STRING(MONTH(tArtbw.Datum),'99') , STRING(DAY(tArtbw.Datum),'99') )
  519. tControlList.QUANTITY_SOLD = tArtbw.Menge
  520. .
  521. END.
  522. RETURN TRUE.
  523. END FUNCTION.
  524. /* _UIB-CODE-BLOCK-END */
  525. &ANALYZE-RESUME
  526. &ENDIF
  527. &IF DEFINED(EXCLUDE-findArtbw) = 0 &THEN
  528. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION findArtbw Procedure
  529. FUNCTION findArtbw RETURNS DECIMAL
  530. ( /* parameter-definitions */ ) :
  531. /*------------------------------------------------------------------------------
  532. Purpose:
  533. Notes:
  534. ------------------------------------------------------------------------------*/
  535. DEFINE VARIABLE nMenge AS DECIMAL NO-UNDO.
  536. FOR EACH Artst NO-LOCK
  537. WHERE Artst.Firma = cFirma
  538. AND Artst.Herst = ipHerst
  539. AND Artst.Aktiv = TRUE,
  540. FIRST ArtLief NO-LOCK
  541. WHERE ArtLief.Firma = Artst.Firma
  542. AND ArtLief.Artnr = Artst.Artnr
  543. AND ArtLief.Inhalt = Artst.Inhalt
  544. AND ArtLief.Jahr = Artst.Jahr
  545. AND ArtLief.Knr = ipLiefnr
  546. AND ArtLief.Haupt = TRUE:
  547. FIND KGebinde NO-LOCK
  548. WHERE KGebinde.Firma = cFirma
  549. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  550. FOR EACH Artbw NO-LOCK
  551. WHERE Artbw.Firma = cFirma
  552. AND Artbw.Artnr = Artst.Artnr
  553. AND Artbw.Inhalt = Artst.Inhalt
  554. AND Artbw.Jahr = Artst.Jahr
  555. AND Artbw.Faknr > 0
  556. AND Artbw.Tr_Art < 10
  557. AND Artbw.Fak_Dat <> ?
  558. AND Artbw.Datum >= ipabDatum :
  559. FIND FIRST tArtbw USE-INDEX tArtbw-k3
  560. WHERE tArtbw.Knr = Artbw.Knr
  561. AND tArtbw.Artnr = Artbw.Artnr
  562. AND tArtbw.Inhalt = Artbw.Inhalt
  563. AND tArtbw.Jahr = Artbw.Jahr NO-ERROR.
  564. IF NOT AVAILABLE tArtbw THEN
  565. DO:
  566. CREATE tArtbw.
  567. BUFFER-COPY Artbw TO tArtbw
  568. ASSIGN
  569. tArtbw.Herst = ipHerst
  570. tArtbw.LiefKnr = TRIM(STRING(ArtLief.Knr,'>>>>>9'))
  571. tArtbw.ProdVol = (IF KGebinde.Inhalt < 10 THEN 1.0 ELSE (KGebinde.Inhalt / 100) )
  572. nMenge = nMenge + tArtbw.Liter.
  573. NEXT.
  574. END.
  575. ASSIGN
  576. tArtbw.Menge = tArtbw.Menge + Artbw.Menge
  577. tArtbw.GGeb_Me = tArtbw.GGeb_Me + Artbw.GGeb_Me
  578. tArtbw.VGeb_Me = tArtbw.VGeb_Me + Artbw.VGeb_Me
  579. tArtbw.KGeb_Me = tArtbw.KGeb_Me + Artbw.KGeb_Me
  580. tArtbw.Liter = tArtbw.Liter + Artbw.Liter
  581. tArtbw.Herst = ipHerst
  582. tArtbw.LiefKnr = TRIM(STRING(ArtLief.Knr,'>>>>>9'))
  583. tArtbw.ProdVol = (IF KGebinde.Inhalt < 10 THEN 1.0 ELSE (KGebinde.Inhalt / 100) )
  584. .
  585. nMenge = nMenge + Artbw.Liter.
  586. END.
  587. END.
  588. RETURN nMenge.
  589. END FUNCTION.
  590. /* _UIB-CODE-BLOCK-END */
  591. &ANALYZE-RESUME
  592. &ENDIF