artikelexport.p 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. /* Export der eShop-Artikel */
  2. DEFINE VARIABLE hBuffer AS HANDLE.
  3. DEFINE VARIABLE ix AS INTEGER.
  4. DEFINE VARIABLE cName AS CHARACTER.
  5. DEFINE VARIABLE inst AS INTEGER.
  6. DEFINE VARIABLE aktbetr AS DECIMAL.
  7. DEFINE VARIABLE cDesktop AS CHARACTER.
  8. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  9. DEFINE TEMP-TABLE tArtst LIKE artst
  10. FIELD datum AS CHARACTER
  11. FIELD VK_Inkl AS CHARACTER
  12. FIELD VK_Aktion AS CHARACTER
  13. FIELD KGeb AS CHARACTER
  14. FIELD cwgr AS CHARACTER
  15. FIELD cPgr AS CHARACTER
  16. FIELD cagr AS CHARACTER
  17. FIELD Land AS CHARACTER
  18. FIELD xHerst AS CHARACTER
  19. FIELD xstyle AS CHARACTER
  20. FIELD region AS CHARACTER
  21. FIELD traube AS CHARACTER
  22. FIELD beschr AS CHARACTER
  23. FIELD xfarbe AS CHARACTER
  24. FIELD xBonus AS CHARACTER
  25. FIELD xkgeb AS CHARACTER
  26. .
  27. FOR EACH Artst NO-LOCK
  28. WHERE artst.firma = '1000'
  29. AND artst.EShop
  30. AND artst.aktiv:
  31. CREATE tArtst.
  32. BUFFER-COPY Artst TO tARtst.
  33. FIND FIRST artbez OF artst NO-LOCK NO-ERROR.
  34. IF NOT AVAILABLE artbez THEN NEXT.
  35. ASSIGN
  36. tartst.beschr = REPLACE(TRIM(artbez.bez1 + ' ' + artbez.bez2), ';', ':').
  37. FIND LAST ArtPreis NO-LOCK USE-INDEX artpreis-k1
  38. WHERE artpreis.firma = artst.firma
  39. AND artpreis.artnr = artst.artnr
  40. AND artpreis.inhalt = artst.inhalt
  41. AND artpreis.jahr = artst.jahr
  42. AND artpreis.preis_Grp = 1
  43. AND artpreis.ab_datum <= TODAY
  44. AND Artpreis.Aktion = FALSE
  45. AND Artpreis.Aktiv = TRUE NO-ERROR.
  46. IF AVAILABLE artpreis THEN ASSIGN tartst.datum = STRING(artpreis.ab_Datum,'99.99.9999')
  47. tartst.vk_inkl = TRIM(STRING(artpreis.vk_brutto,'>>>>>9.99')).
  48. FIND LAST AktPreis NO-LOCK USE-INDEX AktPreis-k1
  49. WHERE AktPreis.firma = artst.firma
  50. AND AktPreis.artnr = artst.artnr
  51. AND AktPreis.inhalt = artst.inhalt
  52. AND AktPreis.jahr = artst.jahr
  53. AND aktpreis.Grp = 1
  54. AND AktPreis.ab_datum <= TODAY
  55. AND AktPreis.Aktion BEGINS 'Discounted wine' NO-ERROR.
  56. IF AVAILABLE AktPreis AND
  57. AVAILABLE artpreis AND
  58. AktPreis.Bis_Datum >= TODAY THEN
  59. DO:
  60. IF AktPreis.Art = 0 THEN
  61. DO:
  62. aktbetr = artpreis.vk_brutto - aktpreis.Wert.
  63. tartst.vk_aktion = TRIM(STRING(aktbetr,'->>>>>>>9.99')).
  64. RUN RUNDEN ( INPUT-OUTPUT tartst.vk_Aktion ).
  65. END.
  66. ELSE
  67. DO:
  68. aktbetr = artpreis.vk_brutto * (100 - aktpreis.Wert) / 100.
  69. tartst.vk_aktion = TRIM(STRING(aktbetr,'>>>>>9.99')).
  70. RUN RUNDEN ( INPUT-OUTPUT tartst.vk_Aktion ).
  71. END.
  72. END.
  73. FIND KGebinde WHERE kGebinde.firma = ARtst.Firma AND kgebinde.Geb_Cd = Artst.KGeb_Cd NO-LOCK NO-ERROR.
  74. IF NOT AVAILABLE kgebinde THEN NEXT.
  75. tartst.kgeb = kgebinde.KBez.
  76. tartst.xkgeb = kgebinde.bez.
  77. FIND warengrp WHERE warengrp.Firma = artst.firma AND warengrp.Wgr = artst.Wg_grp NO-LOCK NO-ERROR.
  78. IF NOT AVAILABLE warengrp THEN NEXT.
  79. /* tartst.cwgr = (if warengrp.Bez1 begins 'bio' then 'yes' else 'no'). */
  80. tartst.cwgr = warengrp.Bez1.
  81. FIND prodgrp WHERE prodgrp.Firma = artst.firma AND prodgrp.Wgr = artst.Wg_grp AND prodgrp.Prod_Grp = Artst.Prod_grp NO-LOCK NO-ERROR.
  82. IF NOT AVAILABLE prodgrp THEN
  83. DO:
  84. /* message 'prodgrp fehlt ' artst.wg_grp artst.prod_grp view-as alert-box. */
  85. NEXT.
  86. END.
  87. tartst.cPgr = prodgrp.bez1.
  88. FIND artikgrp WHERE artikgrp.Firma = artst.firma
  89. AND artikgrp.Wgr = artst.Wg_grp
  90. AND artikgrp.Prod_Grp = Artst.Prod_grp
  91. AND artikgrp.art_grp = artst.Art_Grp NO-LOCK NO-ERROR.
  92. IF NOT AVAILABLE artikgrp THEN
  93. DO:
  94. /* message 'artikgrp fehlt ' artst.wg_grp artst.prod_grp artst.art_grp view-as alert-box. */
  95. NEXT.
  96. END.
  97. IF NOT AVAILABLE artikgrp THEN NEXT.
  98. tartst.cagr = artikgrp.Bez1.
  99. FIND tabel NO-LOCK
  100. WHERE tabel.firma = Artst.firma
  101. AND tabel.recart = 'TRAUB'
  102. AND tabel.codeC = ''
  103. AND tabel.CodeI = Artst.TRaub_Grp
  104. AND tabel.sprcd = 1 NO-ERROR.
  105. IF AVAILABLE tabel THEN tartst.traube = Tabel.bez1.
  106. FIND tabel NO-LOCK
  107. WHERE tabel.firma = Artst.firma
  108. AND tabel.recart = 'ABONUS'
  109. AND tabel.codeC = ''
  110. AND tabel.CodeI = Artst.Bonus_Grp
  111. AND tabel.sprcd = 1 NO-ERROR.
  112. IF AVAILABLE tabel THEN tartst.xBonus = Tabel.bez1.
  113. FIND tabel NO-LOCK
  114. WHERE tabel.firma = Artst.firma
  115. AND tabel.recart = 'AREG'
  116. AND tabel.codeC = ''
  117. AND tabel.CodeI = Artst.Reg_Grp
  118. AND tabel.sprcd = 1 NO-ERROR.
  119. IF AVAILABLE tabel THEN tartst.region = Tabel.bez1.
  120. FIND tabel NO-LOCK
  121. WHERE tabel.firma = Artst.firma
  122. AND tabel.recart = 'STYLE'
  123. AND tabel.codeC = ''
  124. AND tabel.CodeI = Artst.Style
  125. AND tabel.sprcd = 1 NO-ERROR.
  126. IF AVAILABLE tabel THEN tartst.xstyle = TRIM(STRING(Artst.Style,'>>>9')).
  127. FIND tabel NO-LOCK
  128. WHERE tabel.firma = Artst.firma
  129. AND tabel.recart = 'HERST'
  130. AND tabel.codeC = ''
  131. AND tabel.CodeI = Artst.Herst
  132. AND tabel.sprcd = 1 NO-ERROR.
  133. IF AVAILABLE tabel THEN
  134. DO:
  135. IF tabel.bez1 BEGINS 'Star'
  136. THEN tartst.xHerst = ENTRY(NUM-ENTRIES(Tabel.bez1, ' '), Tabel.bez1, '').
  137. END.
  138. FIND tabel NO-LOCK
  139. WHERE tabel.firma = Artst.firma
  140. AND tabel.recart = 'FARB'
  141. AND tabel.codeC = ''
  142. AND tabel.CodeI = Artst.Farbe
  143. AND tabel.sprcd = 1 NO-ERROR.
  144. IF AVAILABLE tabel THEN tartst.xfarbe = ENTRY(1, Tabel.bez1, ' ').
  145. FIND land NO-LOCK
  146. WHERE land.lkz = artst.herk_lkz NO-ERROR.
  147. IF AVAILABLE land THEN tartst.land = land.Bez.
  148. END.
  149. cDesktop = OS-GETENV('USERPROFILE') + '\Desktop\'.
  150. FILE-INFO:FILE-NAME = cDesktop NO-ERROR.
  151. DO WHILE TRUE:
  152. IF FILE-INFO:FULL-PATHNAME <> ? AND
  153. FILE-INFO:FULL-PATHNAME <> '' THEN
  154. DO:
  155. cDesktop = FILE-INFO:FULL-PATHNAME.
  156. LEAVE.
  157. END.
  158. cDesktop = OS-GETENV ('APPDATA').
  159. ii = INDEX(cDesktop, 'APPDATA').
  160. IF ii = 0 THEN
  161. DO:
  162. MESSAGE 'Datei kann nicht auf den Desktop geschrieben werden'
  163. VIEW-AS ALERT-BOX.
  164. RETURN.
  165. END.
  166. cDesktop = SUBSTRING(cDesktop,01,ii - 1) + 'Desktop\'.
  167. LEAVE.
  168. END.
  169. cname = cDesktop + 'Artst_liversedge.csv'.
  170. OUTPUT to value(cname) no-map convert source 'iso8859-1' target 'utf-8'.
  171. PUT CONTROL 'Artnr' ';' 'Inhalt' ';' 'Jahr' ';' 'Herst' ';' 'Bezeichnung' ';' 'Region' ';' 'Herkunftsland' ';'
  172. 'VK-Preis' ';' 'Aktions-Preis' ';' 'Style' ';' 'wgr' ';' 'pgr' ';' 'agr' ';' 'Farbe' ';' 'Rating' ';'
  173. 'Traube' ';' 'Bestand' ';' 'BonusGrp' ';' 'KGebinde' CHR(13) CHR(10).
  174. FOR EACH tartst WHERE tartst.artnr > 0 BY tartst.artnr BY tartst.inhalt BY tartst.jahr:
  175. EXPORT DELIMITER ';' STRING(tartst.Artnr,'999999')
  176. STRING(tartst.Inhalt,'9999')
  177. STRING(tartst.Jahr,'9999')
  178. tartst.Suchbe
  179. tartst.beschr
  180. tartst.region
  181. tartst.land
  182. tartst.vk_inkl
  183. tartst.vk_aktion
  184. tartst.xstyle
  185. tartst.cwgr
  186. tartst.cPgr
  187. tartst.cagr
  188. tartst.xfarbe
  189. tartst.xherst
  190. tartst.traube
  191. tartst.Bestand
  192. tartst.xbonus
  193. tartst.xkgeb
  194. .
  195. END.
  196. OUTPUT close.
  197. /*
  198. RUN ShellExecuteA(INPUT 0 ,
  199. INPUT 'open' ,
  200. INPUT cName ,
  201. INPUT '' ,
  202. INPUT '' ,
  203. INPUT 0 ,
  204. OUTPUT Inst ).
  205. PROCEDURE ShellExecuteA EXTERNAL "shell32.dll":
  206. DEF INPUT PARAMETER hwnd AS LONG. /* Handle to parent window */
  207. DEF INPUT PARAMETER lpOperation AS CHAR. /* Operation to perform: open, print */
  208. DEF INPUT PARAMETER lpFile AS CHAR. /* Document or executable name */
  209. DEF INPUT PARAMETER lpParameters AS CHAR. /* Command line parameters to executable in lpFile */
  210. DEF INPUT PARAMETER lpDirectory AS CHAR. /* Default directory */
  211. DEF INPUT PARAMETER nShowCmd AS LONG. /* whether shown when opened:
  212. 0 hidden, 1 normal, minimized 2, maximized 3,
  213. 0 if lpFile is a document */
  214. DEF RETURN PARAMETER hInstance AS LONG. /* Less than or equal to 32 */
  215. END PROCEDURE.
  216. */
  217. RETURN.
  218. PROCEDURE RUNDEN.
  219. DEFINE INPUT-OUTPUT PARAMETER ipWert AS CHARACTER.
  220. DEFINE VARIABLE VBetr AS DECIMAL DECIMALS 4.
  221. DEFINE VARIABLE VOp AS DECIMAL INIT 0.2.
  222. VBetr = DECIMAL(ipWert).
  223. VBetr = ROUND((VBetr / 100 * VOp), 4) / VOp * 100.
  224. ipWert = TRIM(STRING(VBetr,'->>>>>9.99')).
  225. END.