cocacola.p 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. &ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12
  2. &ANALYZE-RESUME
  3. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
  4. /*------------------------------------------------------------------------
  5. File :
  6. Purpose :
  7. Syntax :
  8. Description :
  9. Author(s) :
  10. Created :
  11. Notes :
  12. ----------------------------------------------------------------------*/
  13. /* This .W file was created with the Progress AppBuilder. */
  14. /*----------------------------------------------------------------------*/
  15. /* *************************** Definitions ************************** */
  16. DEF INPUT PARAMETER ipFirma AS CHAR NO-UNDO.
  17. DEF INPUT PARAMETER ipSalerId AS CHAR NO-UNDO.
  18. DEF INPUT PARAMETER ipHerst AS INT NO-UNDO.
  19. DEF INPUT PARAMETER ipLiefnr AS INT NO-UNDO.
  20. DEF INPUT PARAMETER ipvonDatum AS DATE NO-UNDO.
  21. DEF INPUT PARAMETER ipBisDatum AS DATE NO-UNDO.
  22. DEF INPUT PARAMETER ipDatei AS CHAR NO-UNDO.
  23. /*
  24. DEF VAR ipFirma AS CHAR INIT '1000' NO-UNDO.
  25. DEF VAR ipSalerId AS CHAR INIT '2700721304' NO-UNDO.
  26. DEF VAR ipHerst AS INT NO-UNDO.
  27. DEF VAR ipLiefnr AS INT NO-UNDO.
  28. DEF VAR ipvonDatum AS DATE NO-UNDO.
  29. DEF VAR ipBisDatum AS DATE NO-UNDO.
  30. DEF VAR ipDatei AS CHAR NO-UNDO.
  31. */
  32. DEF VAR cFirma AS CHAR NO-UNDO.
  33. DEF VAR AdFirma AS CHAR NO-UNDO.
  34. DEF VAR cInstall AS CHAR NO-UNDO.
  35. DEF VAR nMenge AS DEC NO-UNDO.
  36. DEF VAR hDS AS HANDLE NO-UNDO.
  37. DEF VAR iTransDet AS INT NO-UNDO.
  38. DEF VAR cZeile AS CHAR NO-UNDO.
  39. DEF VAR iZeile AS INT NO-UNDO.
  40. DEF VAR iSpace AS INT NO-UNDO.
  41. DEF VAR cDatei AS CHAR NO-UNDO.
  42. DEF STREAM sXML.
  43. DEF STREAM sTEMP.
  44. DEF BUFFER bSteuer FOR Steuer.
  45. { incl/cocacola_ds.i }
  46. DEF TEMP-TABLE tArtbw LIKE Artbw
  47. INDEX tArtbw-k1 IS PRIMARY
  48. Knr
  49. Artnr
  50. Inhalt
  51. Jahr
  52. Fak_Dat
  53. INDEX tArtbw-k2
  54. Artnr
  55. Inhalt
  56. Jahr.
  57. DEF TEMP-TABLE tXML
  58. FIELD iZeile AS INT
  59. FIELD iSpace AS INT
  60. FIELD cLine AS CHAR
  61. .
  62. /* _UIB-CODE-BLOCK-END */
  63. &ANALYZE-RESUME
  64. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  65. /* ******************** Preprocessor Definitions ******************** */
  66. &Scoped-define PROCEDURE-TYPE Procedure
  67. &Scoped-define DB-AWARE no
  68. /* _UIB-PREPROCESSOR-BLOCK-END */
  69. &ANALYZE-RESUME
  70. /* ************************ Function Prototypes ********************** */
  71. &IF DEFINED(EXCLUDE-createDeliverBillTo) = 0 &THEN
  72. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createDeliverBillTo Procedure
  73. FUNCTION createDeliverBillTo RETURNS LOGICAL
  74. ( /* parameter-definitions */ ) FORWARD.
  75. /* _UIB-CODE-BLOCK-END */
  76. &ANALYZE-RESUME
  77. &ENDIF
  78. &IF DEFINED(EXCLUDE-createOutlets) = 0 &THEN
  79. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createOutlets Procedure
  80. FUNCTION createOutlets RETURNS LOGICAL
  81. ( /* parameter-definitions */ ) FORWARD.
  82. /* _UIB-CODE-BLOCK-END */
  83. &ANALYZE-RESUME
  84. &ENDIF
  85. &IF DEFINED(EXCLUDE-createPayload) = 0 &THEN
  86. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createPayload Procedure
  87. FUNCTION createPayload RETURNS LOGICAL
  88. ( /* parameter-definitions */ ) FORWARD.
  89. /* _UIB-CODE-BLOCK-END */
  90. &ANALYZE-RESUME
  91. &ENDIF
  92. &IF DEFINED(EXCLUDE-createPeriod) = 0 &THEN
  93. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createPeriod Procedure
  94. FUNCTION createPeriod RETURNS LOGICAL
  95. ( ipMenge AS DEC ) FORWARD.
  96. /* _UIB-CODE-BLOCK-END */
  97. &ANALYZE-RESUME
  98. &ENDIF
  99. &IF DEFINED(EXCLUDE-createProductEntry) = 0 &THEN
  100. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createProductEntry Procedure
  101. FUNCTION createProductEntry RETURNS LOGICAL
  102. ( /* parameter-definitions */ ) FORWARD.
  103. /* _UIB-CODE-BLOCK-END */
  104. &ANALYZE-RESUME
  105. &ENDIF
  106. &IF DEFINED(EXCLUDE-createSales) = 0 &THEN
  107. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD createSales Procedure
  108. FUNCTION createSales RETURNS LOGICAL
  109. ( /* parameter-definitions */ ) FORWARD.
  110. /* _UIB-CODE-BLOCK-END */
  111. &ANALYZE-RESUME
  112. &ENDIF
  113. &IF DEFINED(EXCLUDE-findArtbw) = 0 &THEN
  114. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD findArtbw Procedure
  115. FUNCTION findArtbw RETURNS DECIMAL
  116. ( /* parameter-definitions */ ) FORWARD.
  117. /* _UIB-CODE-BLOCK-END */
  118. &ANALYZE-RESUME
  119. &ENDIF
  120. /* *********************** Procedure Settings ************************ */
  121. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  122. /* Settings for THIS-PROCEDURE
  123. Type: Procedure
  124. Allow:
  125. Frames: 0
  126. Add Fields to: Neither
  127. Other Settings: CODE-ONLY COMPILE
  128. */
  129. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  130. /* ************************* Create Window ************************** */
  131. &ANALYZE-SUSPEND _CREATE-WINDOW
  132. /* DESIGN Window definition (used by the UIB)
  133. CREATE WINDOW Procedure ASSIGN
  134. HEIGHT = 15
  135. WIDTH = 60.
  136. /* END WINDOW DEFINITION */
  137. */
  138. &ANALYZE-RESUME
  139. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  140. /* *************************** Main Block *************************** */
  141. hDS = DATASET PayLoadDS:HANDLE.
  142. hDS:SET-CALLBACK-PROCEDURE ("BEFORE-FILL", "POSTDATAFILLDS", THIS-PROCEDURE ).
  143. hDS:SET-CALLBACK-PROCEDURE ("AFTER-FILL" , "POSTDATAFILLDS", THIS-PROCEDURE ).
  144. FIND bSteuer NO-LOCK
  145. WHERE bSteuer.Firma = ipFirma NO-ERROR.
  146. AdFirma = bSteuer.AdFirma.
  147. cInstall = bSteuer.Fwc10.
  148. /* ------
  149. ipHerst = 31.
  150. ipLiefnr = 100031.
  151. ipvonDatum = 01/01/2016.
  152. ipbisDatum = 01/31/2016.
  153. IF cInstall = 'WIEDERKEHR' THEN DO:
  154. ipSalerId = '2700721304'.
  155. ipHerst = 10.
  156. ipLiefnr = 32.
  157. ipvonDatum = 01/01/2016.
  158. ipbisDatum = 01/31/2016.
  159. END.
  160. ------ */
  161. cFirma = ipFirma.
  162. nMenge = DYNAMIC-FUNCTION ('findArtbw':U).
  163. DYNAMIC-FUNCTION ('createPayload':U).
  164. DYNAMIC-FUNCTION ('createPeriod':U, nMenge).
  165. DYNAMIC-FUNCTION ('createOutlets':U).
  166. DYNAMIC-FUNCTION ('createDeliverBillTo':U).
  167. DYNAMIC-FUNCTION ('createProductEntry':U).
  168. DYNAMIC-FUNCTION ('createSales':U).
  169. hDS:FILL() NO-ERROR.
  170. cDatei = SESSION:TEMP-DIR + 'PayLoad.xml'.
  171. hDS:WRITE-XML ('File', cDatei, TRUE, 'UTF-8', 'wsdata CCH WHS.xsd', FALSE, FALSE ).
  172. cDatei = SESSION:TEMP-DIR + 'BillTo.xml'.
  173. TEMP-TABLE BillTo:WRITE-XML ('File', cDatei, TRUE, 'UTF-8', '', FALSE, FALSE ).
  174. EMPTY TEMP-TABLE tXML.
  175. cDatei = SESSION:TEMP-DIR + 'PayLoad.xml'.
  176. INPUT STREAM sXML FROM VALUE(cDatei) NO-MAP NO-CONVERT NO-ECHO.
  177. cDatei = SESSION:TEMP-DIR + 'BillTo.xml'.
  178. INPUT STREAM sTEMP FROM VALUE(cDatei) NO-MAP NO-CONVERT NO-ECHO.
  179. iZeile = 0.
  180. DO WHILE TRUE:
  181. IMPORT STREAM sXML UNFORMATTED cZeile.
  182. IF INDEX(cZeile, '<PayLoadDS ') > 0 THEN NEXT.
  183. IF INDEX(cZeile, '</PayLoadDS>') > 0 THEN LEAVE.
  184. iZeile = iZeile + 1.
  185. CREATE tXML.
  186. ASSIGN tXML.iZeile = iZeile
  187. tXML.iSpace = INDEX(cZeile, '<')
  188. tXML.cLine = TRIM(cZeile).
  189. IF INDEX(cZeile, '<OutletEntry') > 0 THEN iSpace = tXML.iSpace.
  190. IF INDEX(cZeile, '</DeliverTo>') = 0 THEN NEXT.
  191. DO WHILE TRUE:
  192. IMPORT STREAM sTEMP UNFORMATTED cZeile.
  193. IF INDEX(cZeile, '<?xml') > 0 THEN NEXT.
  194. IF INDEX(cZeile, '<BillTo ') > 0 THEN NEXT.
  195. iZeile = iZeile + 1.
  196. CREATE tXML.
  197. ASSIGN tXML.iZeile = iZeile
  198. tXML.iSpace = INDEX(cZeile, '<') + iSpace - 1
  199. tXML.cLine = TRIM(cZeile).
  200. IF INDEX(cZeile, '</BillToRow>') > 0 THEN LEAVE.
  201. END.
  202. END.
  203. INPUT STREAM sXML CLOSE.
  204. INPUT STREAM sTEMP CLOSE.
  205. OUTPUT TO VALUE(ipDatei) NO-MAP NO-CONVERT.
  206. FOR EACH tXML BY tXML.iZeile:
  207. tXML.cLine = REPLACE(tXML.cLine, 'BillToRow', 'BillTo').
  208. IF tXML.iSpace > 2 THEN tXML.iSpace = tXML.iSpace - 2.
  209. PUT CONTROL FILL(' ', (tXML.iSpace - 1)).
  210. PUT CONTROL tXML.cLine CHR(10).
  211. END.
  212. OUTPUT CLOSE.
  213. /* _UIB-CODE-BLOCK-END */
  214. &ANALYZE-RESUME
  215. /* ********************** Internal Procedures *********************** */
  216. &IF DEFINED(EXCLUDE-POSTDATAFILLDS) = 0 &THEN
  217. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE POSTDATAFILLDS Procedure
  218. PROCEDURE POSTDATAFILLDS :
  219. /*------------------------------------------------------------------------------
  220. Purpose:
  221. Parameters: <none>
  222. Notes:
  223. ------------------------------------------------------------------------------*/
  224. DEFINE INPUT PARAMETER DATASET-HANDLE iphDS.
  225. END PROCEDURE.
  226. /* _UIB-CODE-BLOCK-END */
  227. &ANALYZE-RESUME
  228. &ENDIF
  229. /* ************************ Function Implementations ***************** */
  230. &IF DEFINED(EXCLUDE-createDeliverBillTo) = 0 &THEN
  231. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createDeliverBillTo Procedure
  232. FUNCTION createDeliverBillTo RETURNS LOGICAL
  233. ( /* parameter-definitions */ ) :
  234. /*------------------------------------------------------------------------------
  235. Purpose:
  236. Notes:
  237. ------------------------------------------------------------------------------*/
  238. FIND FIRST Outlets.
  239. FOR EACH tArtbw NO-LOCK USE-INDEX tArtbw-k1
  240. BREAK BY tArtbw.Knr:
  241. IF NOT FIRST-OF ( tArtbw.Knr ) THEN NEXT.
  242. FIND FIRST Outlets.
  243. CREATE OutletEntry.
  244. ASSIGN OutletEntry.Comments = ''.
  245. ASSIGN OutletEntry.Outlets_id = Outlets.Outlets_Id
  246. OutletEntry.OutletEntry_Id = RECID(OutletEntry).
  247. FIND Adresse NO-LOCK
  248. WHERE Adresse.Firma = AdFirma
  249. AND Adresse.Knr = tArtbw.Knr NO-ERROR.
  250. FIND Debst NO-LOCK
  251. WHERE Debst.Firma = cFirma
  252. AND Debst.Knr = Adresse.Knr NO-ERROR.
  253. FIND Tabel NO-LOCK
  254. WHERE Tabel.Firma = cFirma
  255. AND Tabel.RecArt = 'KUNDGRP'
  256. AND Tabel.CodeI = Debst.Ku_Grp
  257. AND Tabel.CodeC = ''
  258. AND Tabel.Sprcd = 1 NO-ERROR.
  259. CREATE DeliverTo.
  260. ASSIGN DeliverTo.OutletNumber = TRIM(STRING(Adresse.Knr,'>>>>>>9'))
  261. DeliverTo.Name1 = (IF Adresse.Firma1 <> '' THEN Adresse.Firma1 ELSE Adresse.Name)
  262. DeliverTo.Address1 = Adresse.Strasse
  263. DeliverTo.PostalCode = Adresse.Plz
  264. DeliverTo.City = Adresse.Ort
  265. DeliverTo.OutletEntry_Id = OutletEntry.OutletEntry_id
  266. DeliverTo.Channel = (IF AVAILABLE Tabel THEN Tabel.Bez1 ELSE '').
  267. ASSIGN DeliverTo.DeliverTo_Id = RECID(DeliverTo).
  268. FIND Adresse NO-LOCK
  269. WHERE Adresse.Firma = AdFirma
  270. AND Adresse.Knr = tArtbw.Fak_Knr NO-ERROR.
  271. CREATE BillTo.
  272. ASSIGN BillTo.OutletNumber = TRIM(STRING(Adresse.Knr,'>>>>>>9'))
  273. BillTo.Name1 = (IF Adresse.Firma1 <> '' THEN Adresse.Firma1 ELSE Adresse.Name)
  274. BillTo.Address1 = Adresse.Strasse
  275. BillTo.PostalCode = Adresse.Plz
  276. BillTo.City = Adresse.Ort.
  277. BillTo.DeliverTo_Id = DeliverTo.DeliverTo_id.
  278. BillTo.OutletEntry_Id = OutletEntry.OutletEntry_id.
  279. END.
  280. RETURN TRUE.
  281. END FUNCTION.
  282. /* _UIB-CODE-BLOCK-END */
  283. &ANALYZE-RESUME
  284. &ENDIF
  285. &IF DEFINED(EXCLUDE-createOutlets) = 0 &THEN
  286. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createOutlets Procedure
  287. FUNCTION createOutlets RETURNS LOGICAL
  288. ( /* parameter-definitions */ ) :
  289. /*------------------------------------------------------------------------------
  290. Purpose:
  291. Notes:
  292. ------------------------------------------------------------------------------*/
  293. FIND FIRST Period.
  294. CREATE Outlets.
  295. ASSIGN Outlets.Comments = ''
  296. Outlets.Period_Id = Period.Period_Id
  297. Outlets.Payload_Id = Period.Payload_Id.
  298. ASSIGN Outlets.Outlets_Id = RECID(Outlets).
  299. RETURN TRUE.
  300. END FUNCTION.
  301. /* _UIB-CODE-BLOCK-END */
  302. &ANALYZE-RESUME
  303. &ENDIF
  304. &IF DEFINED(EXCLUDE-createPayload) = 0 &THEN
  305. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createPayload Procedure
  306. FUNCTION createPayload RETURNS LOGICAL
  307. ( /* parameter-definitions */ ) :
  308. /*------------------------------------------------------------------------------
  309. Purpose:
  310. Notes:
  311. ------------------------------------------------------------------------------*/
  312. CREATE Payload.
  313. ASSIGN Payload.StructureVersion = '1'
  314. Payload.Comments = ''
  315. Payload.WholesalerID = ipSalerId.
  316. Payload.Payload_id = RECID(Payload).
  317. RETURN TRUE.
  318. END FUNCTION.
  319. /* _UIB-CODE-BLOCK-END */
  320. &ANALYZE-RESUME
  321. &ENDIF
  322. &IF DEFINED(EXCLUDE-createPeriod) = 0 &THEN
  323. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createPeriod Procedure
  324. FUNCTION createPeriod RETURNS LOGICAL
  325. ( ipMenge AS DEC ) :
  326. /*------------------------------------------------------------------------------
  327. Purpose:
  328. Notes:
  329. ------------------------------------------------------------------------------*/
  330. CREATE Period.
  331. ASSIGN Period.PeriodType = 'Month'
  332. Period.DateFrom = STRING(YEAR (ipvondatum),'9999')
  333. + '-'
  334. + STRING(MONTH(ipvonDatum),'99')
  335. + '-'
  336. + STRING(DAY (ipvonDatum),'99')
  337. Period.DateTo = STRING(YEAR (ipbisdatum),'9999')
  338. + '-'
  339. + STRING(MONTH(ipbisDatum),'99')
  340. + '-'
  341. + STRING(DAY (ipbisDatum),'99')
  342. Period.TotalRecordsCount = 1
  343. Period.TotalVolume = DECIMAL(TRIM(STRING(ipMenge,'->>>,>>>,>>9.999'))).
  344. FIND FIRST PayLoad.
  345. ASSIGN Period.Payload_Id = Payload.Payload_id
  346. Period.Period_Id = RECID(Period).
  347. RETURN TRUE.
  348. END FUNCTION.
  349. /* _UIB-CODE-BLOCK-END */
  350. &ANALYZE-RESUME
  351. &ENDIF
  352. &IF DEFINED(EXCLUDE-createProductEntry) = 0 &THEN
  353. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createProductEntry Procedure
  354. FUNCTION createProductEntry RETURNS LOGICAL
  355. ( /* parameter-definitions */ ) :
  356. /*------------------------------------------------------------------------------
  357. Purpose:
  358. Notes:
  359. ------------------------------------------------------------------------------*/
  360. CREATE Products.
  361. FIND FIRST Period.
  362. ASSIGN Products.Period_id = Period.Period_Id
  363. Products.Products_id = RECID(Products).
  364. FOR EACH tArtbw NO-LOCK USE-INDEX tArtbw-k2
  365. BREAK BY tArtbw.Artnr
  366. BY tArtbw.Inhalt
  367. BY tArtbw.Jahr :
  368. IF NOT FIRST-OF ( tArtbw.Jahr ) THEN NEXT.
  369. FIND Artst NO-LOCK
  370. WHERE Artst.Firma = cFirma
  371. AND Artst.Artnr = tArtbw.Artnr
  372. AND Artst.Inhalt = tArtbw.Inhalt
  373. AND Artst.Jahr = tArtbw.Jahr NO-ERROR.
  374. FIND FIRST Artbez NO-LOCK OF Artst.
  375. FIND VGebinde NO-LOCK
  376. WHERE VGebinde.Firma = cFirma
  377. AND VGebinde.Geb_Cd = Artst.VGeb_Cd NO-ERROR.
  378. FIND KGebinde NO-LOCK
  379. WHERE KGebinde.Firma = cFirma
  380. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  381. FIND ArtLief NO-LOCK
  382. WHERE ArtLief.Firma = cFirma
  383. AND ArtLief.Knr = ipLiefNr
  384. AND ArtLief.Artnr = tArtbw.Artnr
  385. AND ArtLief.Inhalt = tArtbw.Inhalt
  386. AND ArtLief.Jahr = tArtbw.Jahr NO-ERROR.
  387. CREATE ProductEntry.
  388. ASSIGN ProductEntry.ProductNumber = TRIM(STRING(Artst.Artnr,'>>>>>9'))
  389. + '.'
  390. + STRING(Artst.Inhalt,'9999')
  391. + '.'
  392. + STRING(Artst.Jahr ,'9999')
  393. ProductEntry.Comments = ''
  394. ProductEntry.ProductName = TRIM(Artbez.Bez1 + ' ' + Artbez.Bez2)
  395. ProductEntry.UnitOfQuantity = 'L' /*(IF KGebinde.KBez = 'Lt' THEN 'L' ELSE 'PC')*/
  396. ProductEntry.PackageSizeLitres = KGebinde.Inhalt / 100
  397. ProductEntry.SalesUnit = '1x' + TRIM(STRING(VGebinde.Inhalt,'>>>>9'))
  398. ProductEntry.PackageType = KGebinde.Bez
  399. ProductEntry.ArticleNumberHbc = (IF AVAILABLE ArtLief THEN ArtLief.S_Artnr ELSE '').
  400. ASSIGN ProductEntry.Products_id = Products.Products_id
  401. ProductEntry.ProductEntry_Id = RECID(ProductEntry).
  402. END.
  403. RETURN TRUE.
  404. END FUNCTION.
  405. /* _UIB-CODE-BLOCK-END */
  406. &ANALYZE-RESUME
  407. &ENDIF
  408. &IF DEFINED(EXCLUDE-createSales) = 0 &THEN
  409. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION createSales Procedure
  410. FUNCTION createSales RETURNS LOGICAL
  411. ( /* parameter-definitions */ ) :
  412. /*------------------------------------------------------------------------------
  413. Purpose:
  414. Notes:
  415. ------------------------------------------------------------------------------*/
  416. DEF VAR iRecid AS RECID NO-UNDO.
  417. DEF VAR nLiter AS DEC NO-UNDO.
  418. DEF VAR nTotLiter AS DEC NO-UNDO.
  419. iTransDet = 0.
  420. nTotLiter = 0.
  421. CREATE Sales.
  422. ASSIGN Sales.TransactionType = 'Sales'.
  423. FIND FIRST Period.
  424. ASSIGN Sales.Period_Id = Period.Period_id
  425. Sales.Sales_Id = RECID(Sales).
  426. FOR EACH tArtbw NO-LOCK USE-INDEX tArtbw-k2
  427. BREAK BY tArtbw.Knr
  428. BY tArtbw.Artnr
  429. BY tArtbw.Inhalt
  430. BY tArtbw.Jahr :
  431. IF FIRST-OF ( tArtbw.Knr ) THEN DO:
  432. CREATE Transaction1.
  433. ASSIGN Transaction1.Comments = ''
  434. Transaction1.OutletNumber = TRIM(STRING(tArtbw.Knr,'>>>>>>9'))
  435. Transaction1.DeliveryDate = STRING(YEAR (tArtbw.Fak_Dat),'9999')
  436. + '-'
  437. + STRING(MONTH(tArtbw.Fak_Dat),'99')
  438. + '-'
  439. + STRING(DAY (tArtbw.Fak_Dat),'99')
  440. Transaction1.Sales_id = Sales.Sales_id.
  441. ASSIGN Transaction1.Transaction_id = RECID(Transaction1).
  442. iRecid = RECID(Transaction1).
  443. END.
  444. IF FIRST-OF ( tArtbw.Jahr ) THEN nLiter = 0.
  445. nLiter = nLiter + tArtbw.Liter.
  446. nTotLiter = nTotLiter + tArtbw.Liter.
  447. IF NOT LAST-OF ( tArtbw.Jahr ) THEN NEXT.
  448. FIND Transaction1 WHERE RECID(Transaction1) = iRecid.
  449. FIND Artst NO-LOCK
  450. WHERE Artst.Firma = cFirma
  451. AND Artst.Artnr = tArtbw.Artnr
  452. AND Artst.Inhalt = tArtbw.Inhalt
  453. AND Artst.Jahr = tArtbw.Jahr NO-ERROR.
  454. FIND FIRST Artbez NO-LOCK OF Artst.
  455. FIND VGebinde NO-LOCK
  456. WHERE VGebinde.Firma = cFirma
  457. AND VGebinde.Geb_Cd = Artst.VGeb_Cd NO-ERROR.
  458. FIND KGebinde NO-LOCK
  459. WHERE KGebinde.Firma = cFirma
  460. AND KGebinde.Geb_Cd = Artst.KGeb_Cd NO-ERROR.
  461. CREATE TransactionDetails.
  462. ASSIGN TransactionDetails.ProductNumber = TRIM(STRING(Artst.Artnr,'>>>>>9'))
  463. + '.'
  464. + STRING(Artst.Inhalt,'9999')
  465. + '.'
  466. + STRING(Artst.Jahr ,'9999')
  467. TransactionDetails.Quantity = DECIMAL(TRIM(STRING(nLiter,'->>>,>>>,>>9.999'))).
  468. ASSIGN TransactionDetails.Transaction_id = iRecid
  469. TransactionDetails.TransactionDetails_Id = RECID(TransactionDetails).
  470. iTransDet = iTransDet + 1.
  471. END.
  472. FIND FIRST Period.
  473. ASSIGN Period.TotalRecordsCount = iTransDet.
  474. RETURN TRUE.
  475. END FUNCTION.
  476. /* _UIB-CODE-BLOCK-END */
  477. &ANALYZE-RESUME
  478. &ENDIF
  479. &IF DEFINED(EXCLUDE-findArtbw) = 0 &THEN
  480. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION findArtbw Procedure
  481. FUNCTION findArtbw RETURNS DECIMAL
  482. ( /* parameter-definitions */ ) :
  483. /*------------------------------------------------------------------------------
  484. Purpose:
  485. Notes:
  486. ------------------------------------------------------------------------------*/
  487. DEF VAR nMenge AS DEC NO-UNDO.
  488. FOR EACH Artst NO-LOCK
  489. WHERE Artst.Firma = cFirma
  490. AND Artst.Herst = ipHerst
  491. AND Artst.Aktiv = TRUE:
  492. FOR EACH Artbw NO-LOCK
  493. WHERE Artbw.Firma = cFirma
  494. AND Artbw.Artnr = Artst.Artnr
  495. AND Artbw.Inhalt = Artst.Inhalt
  496. AND Artbw.Jahr = Artst.Jahr
  497. AND Artbw.Faknr > 0
  498. AND Artbw.Tr_Art < 10
  499. AND Artbw.Fak_Dat <> ?
  500. AND Artbw.Fak_Dat >= ipvonDatum
  501. AND Artbw.Fak_Dat <= ipbisDatum:
  502. FIND FIRST tArtbw
  503. WHERE tArtbw.Knr = Artbw.Knr
  504. AND tArtbw.Artnr = Artbw.Artnr
  505. AND tArtbw.Inhalt = Artbw.Inhalt
  506. AND tArtbw.Jahr = Artbw.Jahr NO-ERROR.
  507. IF NOT AVAILABLE tArtbw THEN DO:
  508. CREATE tArtbw.
  509. BUFFER-COPY Artbw TO tArtbw.
  510. nMenge = nMenge + tArtbw.Liter.
  511. NEXT.
  512. END.
  513. ASSIGN tArtbw.Menge = tArtbw.Menge + Artbw.Menge
  514. tArtbw.GGeb_Me = tArtbw.GGeb_Me + Artbw.GGeb_Me
  515. tArtbw.VGeb_Me = tArtbw.VGeb_Me + Artbw.VGeb_Me
  516. tArtbw.KGeb_Me = tArtbw.KGeb_Me + Artbw.KGeb_Me
  517. tArtbw.Liter = tArtbw.Liter + Artbw.Liter.
  518. nMenge = nMenge + Artbw.Liter.
  519. END.
  520. END.
  521. RETURN nMenge.
  522. END FUNCTION.
  523. /* _UIB-CODE-BLOCK-END */
  524. &ANALYZE-RESUME
  525. &ENDIF