Offerte.p 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296
  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 iphParam AS HANDLE NO-UNDO.
  17. DEF OUTPUT PARAMETER opcResult AS CHAR NO-UNDO.
  18. DEF VAR iSeite AS INT NO-UNDO.
  19. DEF VAR iAnzDok AS INT NO-UNDO.
  20. DEF VAR iLauf AS INT NO-UNDO.
  21. DEF VAR lFirst AS LOG INIT FALSE NO-UNDO.
  22. DEF VAR lLast AS LOG INIT FALSE NO-UNDO.
  23. DEF VAR lPreis AS LOG NO-UNDO.
  24. DEF VAR cFirma AS CHAR NO-UNDO.
  25. DEF VAR AdFirma AS CHAR NO-UNDO.
  26. DEF VAR nFakBetr AS DEC NO-UNDO.
  27. DEF VAR dFakDatum AS DATE NO-UNDO.
  28. DEF VAR iFaknr AS INT NO-UNDO.
  29. DEF VAR iSprcd AS INT NO-UNDO.
  30. DEF VAR nTotale AS DEC EXTENT 15 NO-UNDO.
  31. DEF VAR cFormtext AS CHAR EXTENT 30 NO-UNDO.
  32. DEF VAR cRabText AS CHAR NO-UNDO.
  33. DEF VAR cZusText AS CHAR NO-UNDO.
  34. DEF VAR cEpzText AS CHAR NO-UNDO.
  35. DEF VAR cBesrKopf AS CHAR EXTENT 12 NO-UNDO.
  36. DEF VAR lDebIncl AS LOG NO-UNDO.
  37. DEF VAR Rundbetr AS DEC DECIMALS 4 NO-UNDO.
  38. DEF VAR RundCode AS INT INIT 1 NO-UNDO.
  39. DEF VAR htTabTexte AS HANDLE NO-UNDO.
  40. DEF VAR hAufko AS HANDLE NO-UNDO.
  41. DEF VAR cExcelDocument AS CHAR NO-UNDO.
  42. DEF VAR cPDFDocument AS CHAR NO-UNDO.
  43. DEF BUFFER bAufko FOR Aufko .
  44. DEF BUFFER bAufze FOR Aufze .
  45. DEF BUFFER FDebst FOR Debst . /* Fakturaadresse */
  46. DEF BUFFER LDebst FOR Debst . /* Lieferadresse */
  47. DEF BUFFER LAdresse FOR Adresse .
  48. DEF BUFFER bAdresse FOR Adresse .
  49. DEF BUFFER bWust FOR Wust .
  50. DEF BUFFER bSteuer FOR Steuer .
  51. DEF VAR hExcel AS COM-HANDLE NO-UNDO.
  52. DEF VAR cZelle AS CHAR NO-UNDO.
  53. DEF VAR iZeile AS INT NO-UNDO.
  54. { incl/ttdruckparam.i }
  55. DEF TEMP-TABLE tTotale
  56. FIELD nMwstPfl AS DEC EXTENT 12
  57. FIELD nMwstBet AS DEC EXTENT 12
  58. FIELD nSammTot AS DEC
  59. FIELD nSkBer AS DEC
  60. FIELD nWW AS DEC
  61. .
  62. DEF TEMP-TABLE sAufko
  63. FIELD cFirma AS CHAR
  64. FIELD iAufnr AS INT
  65. FIELD iFak_Knr AS INT
  66. FIELD iSamm_Nr AS INT
  67. FIELD iRecid AS RECID
  68. FIELD iFaknr AS INT
  69. .
  70. DEF TEMP-TABLE tAufko LIKE Aufko
  71. FIELD iRecid AS RECID
  72. .
  73. DEF TEMP-TABLE tAufze
  74. FIELD Aufnr AS INT
  75. FIELD Sort1 AS CHAR
  76. FIELD Sort2 AS CHAR
  77. FIELD Sort3 AS CHAR
  78. FIELD Artnr AS INT
  79. FIELD Inhalt AS INT
  80. FIELD Jahr AS INT
  81. FIELD Pos AS INT
  82. FIELD Zeile AS RECID
  83. FIELD Preis AS DEC DECIMALS 4
  84. FIELD Aktion AS LOG
  85. FIELD LagOrt AS CHAR
  86. FIELD MGeli AS DEC
  87. FIELD MRuek AS DEC
  88. INDEX tAufze-k1 IS PRIMARY
  89. Aufnr
  90. Sort1
  91. Sort2
  92. Sort3
  93. .
  94. DEF TEMP-TABLE tSpeRab
  95. FIELD Rab_Grp AS INT
  96. FIELD Auf_Betr AS DEC DECIMALS 4
  97. .
  98. DEF TEMP-TABLE tGebKto
  99. FIELD Sort_Cd AS CHAR
  100. FIELD Geb_Cd AS CHAR
  101. FIELD Bez AS CHAR
  102. FIELD Preis AS DEC
  103. FIELD A_Anz AS DEC
  104. FIELD A_Betrag AS DEC
  105. FIELD E_Anz AS DEC
  106. FIELD E_Betrag AS DEC
  107. FIELD MWST_Art AS INT
  108. FIELD MWST_Cd AS INT
  109. .
  110. DEF TEMP-TABLE tRabSumm
  111. FIELD Rab_Summ AS INT
  112. FIELD Bez AS CHAR
  113. FIELD F_Rab_Art AS INT
  114. FIELD F_Wert AS DEC DECIMALS 4
  115. FIELD A_Rab_Art AS INT
  116. FIELD A_Wert AS DEC DECIMALS 4
  117. FIELD Auf_Rab AS DEC DECIMALS 4
  118. FIELD Abh_Rab AS DEC DECIMALS 4
  119. .
  120. DEF TEMP-TABLE tTabTexte
  121. FIELD cRecArt AS CHAR
  122. FIELD iZeile AS INT
  123. FIELD cFeld1 AS CHAR
  124. FIELD cFeld2 AS CHAR
  125. FIELD cFeld3 AS CHAR
  126. FIELD iFeld1 AS INT
  127. FIELD iFeld2 AS INT
  128. FIELD iFeld3 AS INT
  129. INDEX tTabTexte-k1 IS PRIMARY
  130. cRecArt
  131. iZeile.
  132. /* _UIB-CODE-BLOCK-END */
  133. &ANALYZE-RESUME
  134. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  135. /* ******************** Preprocessor Definitions ******************** */
  136. &Scoped-define PROCEDURE-TYPE Procedure
  137. &Scoped-define DB-AWARE no
  138. /* _UIB-PREPROCESSOR-BLOCK-END */
  139. &ANALYZE-RESUME
  140. /* *********************** Procedure Settings ************************ */
  141. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  142. /* Settings for THIS-PROCEDURE
  143. Type: Procedure
  144. Allow:
  145. Frames: 0
  146. Add Fields to: Neither
  147. Other Settings: CODE-ONLY COMPILE
  148. */
  149. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  150. /* ************************* Create Window ************************** */
  151. &ANALYZE-SUSPEND _CREATE-WINDOW
  152. /* DESIGN Window definition (used by the UIB)
  153. CREATE WINDOW Procedure ASSIGN
  154. HEIGHT = 15
  155. WIDTH = 60.
  156. /* END WINDOW DEFINITION */
  157. */
  158. &ANALYZE-RESUME
  159. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  160. /* *************************** Main Block *************************** */
  161. opcResult = ''.
  162. CREATE tParam.
  163. htParam:BUFFER-COPY(iphParam).
  164. ASSIGN cFirma = tParam.cFirma
  165. iAnzDok = 1.
  166. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
  167. AdFirma = bSteuer.AdFirma.
  168. RUN AUFTRAG_ERMITTELN.
  169. IF opcResult <> '' THEN RETURN.
  170. FOR EACH sAufko
  171. BY sAufko.iFak_Knr:
  172. FIND bAdresse NO-LOCK
  173. WHERE bAdresse.Firma = AdFirma
  174. AND bAdresse.Knr = sAufko.iFak_Knr.
  175. iSprcd = (IF bAdresse.Sprcd = 1 THEN 1 ELSE 4).
  176. RUN GET_FORMTEXT ( tParam.cInstall, tParam.cDokument, iSprcd,
  177. OUTPUT cFormText ) NO-ERROR.
  178. cRabText = TRIM(SUBSTRING(cFormText[21],01,20)).
  179. cZusText = TRIM(SUBSTRING(cFormText[21],21,20)).
  180. cEpzText = TRIM(SUBSTRING(cFormText[21],41,20)).
  181. RELEASE bAdresse.
  182. DO iLauf = 1 TO iAnzDok:
  183. dFakDatum = TODAY.
  184. iSeite = 0.
  185. iFaknr = sAufko.iAufnr.
  186. lFirst = TRUE.
  187. lPreis = TRUE.
  188. lLast = FALSE.
  189. EMPTY TEMP-TABLE tTotale .
  190. CREATE tTotale.
  191. FOR EACH bAufko NO-LOCK
  192. WHERE bAufko.Firma = sAufko.cFirma
  193. AND bAufko.Aufnr = sAufko.iAufnr:
  194. EMPTY TEMP-TABLE tAufze .
  195. EMPTY TEMP-TABLE tGebKto .
  196. EMPTY TEMP-TABLE tRabSumm .
  197. EMPTY TEMP-TABLE tSpeRab .
  198. EMPTY TEMP-TABLE tTabTexte .
  199. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
  200. WHERE bAdresse.Firma = AdFirma
  201. AND bAdresse.Knr = bAufko.Fak_Knr NO-ERROR.
  202. FIND LDebst NO-LOCK USE-INDEX Debst-k1
  203. WHERE LDebst.Firma = cFirma
  204. AND LDebst.Knr = bAufko.Knr NO-ERROR.
  205. FIND FDebst NO-LOCK USE-INDEX Debst-k1
  206. WHERE FDebst.Firma = cFirma
  207. AND FDebst.Knr = bAufko.Fak_Knr NO-ERROR.
  208. FIND bWust NO-LOCK USE-INDEX Wust-k1
  209. WHERE bWust.CodeK = LDebst.MWST
  210. AND bWust.CodeA = 99 NO-ERROR.
  211. lDebIncl = FALSE.
  212. IF AVAILABLE bWust THEN lDebIncl = bWust.Incl.
  213. /* Texte und Werte aus Tabelle 'Tabel' laden für RecArt */
  214. /* FAKART, AUFSTATUS, LIEFART, FAHRER, WISO, ABLAD */
  215. hAufko = BUFFER bAufko:HANDLE.
  216. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
  217. RUN CREATE_TABTEXTE ( hAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
  218. RUN FUELLEN_tAufze ( bAufko.Aufnr ) NO-ERROR.
  219. FOR EACH tAufze
  220. WHERE tAufze.Artnr > 0:
  221. FIND bAufze NO-LOCK WHERE RECID(bAufze) = tAufze.Zeile.
  222. /* Spezial-Auftragsrabatt pro Lieferschein bilden */
  223. IF bAufze.Auf_Sp_Grp > 0 THEN DO:
  224. FIND FIRST tSpeRab
  225. WHERE tSpeRab.Rab_Grp = bAufze.Auf_Sp_Grp NO-ERROR.
  226. IF NOT AVAILABLE tSpeRab THEN DO:
  227. CREATE tSpeRab.
  228. ASSIGN tSpeRab.Rab_Grp = bAufze.Auf_Sp_Grp.
  229. END.
  230. tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bAufze.Auf_Sp_Rab.
  231. END.
  232. /* Summengruppen-Totale pro Lieferschein bilden */
  233. DO WHILE bAufze.Rab_Su_Grp > 0:
  234. FIND FIRST tRabSumm
  235. WHERE tRabSumm.Rab_Summ = bAufze.Rab_Su_Grp NO-ERROR.
  236. IF NOT AVAILABLE tRabSumm THEN DO:
  237. FIND FIRST RabSumm NO-LOCK
  238. WHERE RabSumm.Firma = bAufze.Firma
  239. AND RabSumm.Rab_Summ = bAufze.Rab_Su_Grp NO-ERROR.
  240. IF NOT AVAILABLE RabSumm THEN LEAVE.
  241. CREATE tRabSumm.
  242. ASSIGN tRabSumm.Rab_Summ = bAufze.Rab_Su_Grp
  243. tRabSumm.Bez = RabSumm.Bez
  244. tRabSumm.Auf_Rab = 0
  245. tRabSumm.Abh_Rab = 0.
  246. END.
  247. LEAVE.
  248. END.
  249. END.
  250. RUN DRUCKEN.
  251. END.
  252. END.
  253. END.
  254. /* _UIB-CODE-BLOCK-END */
  255. &ANALYZE-RESUME
  256. /* ********************** Internal Procedures *********************** */
  257. &IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
  258. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure
  259. PROCEDURE ARTIKELZEILE :
  260. /*------------------------------------------------------------------------------
  261. Purpose:
  262. Parameters: <none>
  263. Notes:
  264. ------------------------------------------------------------------------------*/
  265. DEF INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  266. DEF VAR cString AS CHAR NO-UNDO.
  267. DEF VAR nRabWert AS DEC NO-UNDO.
  268. DEF VAR xRabText AS CHAR NO-UNDO.
  269. FIND tAufze WHERE RECID(tAufze) = ipRecid NO-LOCK.
  270. FIND Aufze WHERE RECID(Aufze) = tAufze.Zeile NO-LOCK.
  271. DO WHILE Aufze.Artnr = 0:
  272. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  273. INPUT iZeile, INPUT Aufze.Bez1 ).
  274. IF Aufze.Bez2 = '' THEN RETURN.
  275. iZeile = iZeile + 1.
  276. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  277. INPUT iZeile, INPUT Aufze.Bez2 ).
  278. RETURN.
  279. END.
  280. FIND Artst OF Aufze NO-LOCK.
  281. FIND GGebinde NO-LOCK
  282. WHERE GGebinde.Firma = cFirma
  283. AND GGebinde.Geb_Cd = Aufze.GGeb_Cd NO-ERROR.
  284. FIND VGebinde NO-LOCK
  285. WHERE VGebinde.Firma = cFirma
  286. AND VGebinde.Geb_Cd = Aufze.VGeb_Cd NO-ERROR.
  287. FIND KGebinde NO-LOCK
  288. WHERE KGebinde.Firma = cFirma
  289. AND KGebinde.Geb_Cd = Aufze.KGeb_Cd NO-ERROR.
  290. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'B',
  291. INPUT iZeile, INPUT STRING(tAufze.Artnr,'999999') ).
  292. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  293. INPUT iZeile, INPUT Aufze.Bez1 ).
  294. IF Aufze.Jahr > 9 THEN
  295. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'G',
  296. INPUT iZeile, INPUT STRING(Aufze.Jahr,'9999') ).
  297. IF Aufze.Alk_Gehalt <> 0 THEN
  298. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'H',
  299. INPUT iZeile, INPUT STRING(Aufze.Alk_Gehalt,'zz9.9%') ).
  300. IF Aufze.VGeb_Me <> 0 THEN DO:
  301. cString = STRING(Aufze.VGeb_Me,'->>>')
  302. + 'x '
  303. + STRING(VGebinde.KBez,'x(10)').
  304. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
  305. INPUT iZeile, INPUT cString ).
  306. END.
  307. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'J',
  308. INPUT iZeile, INPUT STRING(Aufze.MBest,'->>>>>9') ).
  309. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K',
  310. INPUT iZeile, INPUT KGebinde.KBez ).
  311. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  312. INPUT iZeile, INPUT TRIM(STRING(Aufze.Preis,'>>>>>9.99')) ).
  313. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  314. INPUT iZeile, INPUT STRING(Aufze.Bru_Betr,'->>>>>9.99') ).
  315. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
  316. INPUT iZeile, INPUT STRING(Aufze.WuCd,'z9') ).
  317. IF Aufze.Bez2 <> '' THEN DO:
  318. iZeile = iZeile + 1.
  319. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  320. INPUT iZeile, INPUT Aufze.Bez2 ).
  321. END.
  322. IF Aufze.Aktion THEN DO:
  323. iZeile = iZeile + 1.
  324. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  325. INPUT iZeile, INPUT Aufze.Aktion_Text ).
  326. END.
  327. DO WHILE TRUE:
  328. IF Aufze.Rab_Betr = 0 THEN LEAVE.
  329. nRabWert = ABSOLUTE(Aufze.Rab_Wert).
  330. IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
  331. ELSE DO:
  332. IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
  333. IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
  334. END.
  335. iZeile = iZeile + 1.
  336. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  337. INPUT iZeile, INPUT TRIM(xRabText) ).
  338. IF Aufze.Rab_Art = 1
  339. THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  340. INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
  341. IF Aufze.Rab_Art = 2 OR
  342. Aufze.Rab_Art = 3
  343. THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  344. INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
  345. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  346. INPUT iZeile, INPUT TRIM(STRING(- Aufze.Rab_Betr ,"->>>9.99")) ).
  347. LEAVE.
  348. END.
  349. DO WHILE TRUE:
  350. IF Aufze.Zus_Betr = 0 THEN LEAVE.
  351. nRabWert = ABSOLUTE(Aufze.Zus_Wert).
  352. IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
  353. ELSE DO:
  354. IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
  355. IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
  356. END.
  357. iZeile = iZeile + 1.
  358. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  359. INPUT iZeile, INPUT TRIM(xRabText) ).
  360. IF Aufze.Zus_Art = 1
  361. THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  362. INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.9 %")) ).
  363. IF Aufze.Zus_Art = 2 OR
  364. Aufze.Zus_Art = 3
  365. THEN RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  366. INPUT iZeile, INPUT TRIM(STRING(nRabWert,"->9.99 CHF")) ).
  367. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  368. INPUT iZeile, INPUT TRIM(STRING(- Aufze.Zus_Betr ,"->>>9.99")) ).
  369. LEAVE.
  370. END.
  371. END PROCEDURE.
  372. /* _UIB-CODE-BLOCK-END */
  373. &ANALYZE-RESUME
  374. &ENDIF
  375. &IF DEFINED(EXCLUDE-AUFTRAG_ERMITTELN) = 0 &THEN
  376. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAG_ERMITTELN Procedure
  377. PROCEDURE AUFTRAG_ERMITTELN :
  378. /*------------------------------------------------------------------------------
  379. Purpose:
  380. Parameters: <none>
  381. Notes:
  382. ------------------------------------------------------------------------------*/
  383. DEF VAR iAufnr AS INT NO-UNDO.
  384. FIND FIRST tParam.
  385. EMPTY TEMP-TABLE sAufko.
  386. /* Sammeln aller Aufträge pro Sammelnummer */
  387. FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
  388. WHERE Aufko.Firma = tParam.cFirma
  389. AND Aufko.Aufnr = tParam.iAufnr :
  390. CREATE sAufko.
  391. ASSIGN sAufko.cFirma = Aufko.Firma
  392. sAufko.iAufnr = Aufko.Aufnr
  393. sAufko.iFak_Knr = Aufko.Fak_Knr
  394. sAufko.iSamm_Nr = 0
  395. sAufko.iRecid = RECID(Aufko)
  396. sAufko.iFaknr = 0.
  397. END.
  398. /* Alle Auftragstotale aller Lieferscheine neu rechnen */
  399. FOR EACH sAufko:
  400. FOR EACH bAufko NO-LOCK
  401. WHERE bAufko.Firma = sAufko.cFirma
  402. AND bAufko.Samm_Nr = sAufko.iSamm_Nr
  403. AND bAufko.Fak_Knr = sAufko.iFak_Knr
  404. AND bAufko.Lief_Datum >= tParam.dvonDatum
  405. AND bAufko.Lief_Datum <= tParam.dbisDatum:
  406. DYNAMIC-FUNCTION('calculateAuftragsTotal':U, bAufko.Firma,
  407. bAufko.Aufnr,
  408. OUTPUT nTotale ) NO-ERROR.
  409. RELEASE bAufko.
  410. END.
  411. END.
  412. END PROCEDURE.
  413. /* _UIB-CODE-BLOCK-END */
  414. &ANALYZE-RESUME
  415. &ENDIF
  416. &IF DEFINED(EXCLUDE-DRUCKEN) = 0 &THEN
  417. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure
  418. PROCEDURE DRUCKEN :
  419. /*------------------------------------------------------------------------------
  420. Purpose:
  421. Parameters: <none>
  422. Notes:
  423. ------------------------------------------------------------------------------*/
  424. DEF VAR cLAdresse AS CHAR NO-UNDO.
  425. DEF VAR RText AS CHAR NO-UNDO.
  426. DEF VAR WText AS CHAR NO-UNDO.
  427. DEF VAR ii AS INT NO-UNDO.
  428. DEF VAR i1 AS INT NO-UNDO.
  429. DEF VAR nRabWert AS DEC NO-UNDO.
  430. DEF VAR iMwstCd AS INT NO-UNDO.
  431. DEF VAR nZeiTot AS DEC DECIMALS 4 NO-UNDO.
  432. DEF VAR cDaten AS CHAR NO-UNDO.
  433. FIND FIRST tParam.
  434. nFakBetr = 0.
  435. iZeile = 10.
  436. FIND bAdresse NO-LOCK
  437. WHERE bAdresse.Firma = AdFirma
  438. AND bAdresse.Knr = bAufko.Fak_Knr NO-ERROR.
  439. FIND LDebst NO-LOCK
  440. WHERE LDebst.Firma = cFirma
  441. AND LDebst.Knr = bAufko.Knr NO-ERROR.
  442. FIND FDebst NO-LOCK
  443. WHERE FDebst.Firma = cFirma
  444. AND FDebst.Knr = bAufko.Fak_Knr NO-ERROR.
  445. FIND Wust NO-LOCK
  446. WHERE Wust.CodeK = LDebst.MWST
  447. AND Wust.CodeA = 99 NO-ERROR.
  448. iSprcd = (IF bAdresse.Sprcd = 1 THEN 1 ELSE 4).
  449. IF iSeite = 0 THEN RUN EXCEL_INIT.
  450. IF RETURN-VALUE <> '' THEN DO:
  451. MESSAGE 'Problem beim Öffnen von Excel und/oder Vorlage'
  452. VIEW-AS ALERT-BOX.
  453. RETURN 'ERROR'.
  454. END.
  455. IF bAufko.Adresse[05] <> '' THEN DO:
  456. DO ii = 1 TO 5:
  457. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
  458. INPUT iZeile, INPUT bAufko.Adresse[ii] ).
  459. iZeile = iZeile + 1.
  460. END.
  461. END.
  462. ELSE DO:
  463. DO ii = 7 TO 11:
  464. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'I',
  465. INPUT iZeile, INPUT bAdresse.Anschrift[ii] ).
  466. iZeile = iZeile + 1.
  467. END.
  468. END.
  469. cDaten = STRING(dFakDatum,'99.99.9999').
  470. iZeile = 22.
  471. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
  472. INPUT iZeile, INPUT cDaten ).
  473. iZeile = 18.
  474. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
  475. INPUT iZeile, INPUT STRING(iFaknr,'>999999') ).
  476. iZeile = 20.
  477. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
  478. INPUT iZeile, INPUT TRIM(STRING(bAufko.Fak_Knr,'>>>>>>>9')) ).
  479. iZeile = 21.
  480. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'D',
  481. INPUT iZeile, INPUT bAufko.U_Ref ).
  482. iZeile = 25.
  483. FOR EACH tAufze NO-LOCK
  484. BY tAufze.Aufnr
  485. BY tAufze.Sort1
  486. BY tAufze.LagOrt
  487. BY tAufze.Sort2
  488. BY tAufze.Pos :
  489. FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
  490. RUN ARTIKELZEILE ( RECID(tAufze) ).
  491. iZeile = iZeile + 1.
  492. nFakBetr = nFakBetr + Aufze.Net_Betr.
  493. RELEASE Aufze.
  494. END.
  495. iZeile = iZeile + 1.
  496. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  497. INPUT iZeile, INPUT cFormText[13] ).
  498. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  499. INPUT iZeile, TRIM(STRING(nFakBetr,"->>>>9.99")) ).
  500. RUN SUMMENRABATTE.
  501. RUN GEBINDE_SALDO.
  502. RUN GEBINDE_ABRECHNUNG.
  503. RUN MEHRWERTSTEUER.
  504. iZeile = iZeile + 2.
  505. FIND Kondi USE-INDEX Kondi-k1
  506. WHERE Kondi.Kond = bAufko.Kond
  507. AND Kondi.Sprcd = iSprcd NO-LOCK NO-ERROR.
  508. IF AVAILABLE Kondi THEN DO:
  509. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  510. INPUT iZeile, Kondi.Kotext ).
  511. END.
  512. hExcel:ActiveWorkbook:SAVE( ).
  513. DYNAMIC-FUNCTION('RELEASEEXCEL':U, INPUT hExcel ).
  514. END PROCEDURE.
  515. /* _UIB-CODE-BLOCK-END */
  516. &ANALYZE-RESUME
  517. &ENDIF
  518. &IF DEFINED(EXCLUDE-EXCEL_INIT) = 0 &THEN
  519. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE EXCEL_INIT Procedure
  520. PROCEDURE EXCEL_INIT :
  521. /*------------------------------------------------------------------------------
  522. Purpose:
  523. Parameters: <none>
  524. Notes:
  525. ------------------------------------------------------------------------------*/
  526. DEF VAR cVorlage AS CHAR NO-UNDO.
  527. DEF VAR cPfad AS CHAR NO-UNDO.
  528. DEF VAR lRetVal AS LOG NO-UNDO.
  529. DEF VAR xTemplate AS CHAR NO-UNDO.
  530. DEF VAR xDokument AS CHAR NO-UNDO.
  531. DEF VAR xSprcd AS INT NO-UNDO.
  532. FIND FIRST tParam.
  533. hExcel = DYNAMIC-FUNCTION('CREATEEXCEL':U) NO-ERROR.
  534. IF NOT VALID-HANDLE(hExcel) THEN RETURN 'ERROR'.
  535. xSprcd = (IF iSprcd > 4 THEN 4 ELSE iSprcd).
  536. cPfad = DYNAMIC-FUNCTION ('getFehlwert':U, tParam.Firma, 'EXCEL_FORMULARE') NO-ERROR.
  537. IF cPfad = ? THEN cPfad = ''.
  538. IF cPfad = '' THEN cPfad = SESSION:TEMP-DIR.
  539. ELSE
  540. DO:
  541. FILE-INFO:FILE-NAME = cPfad.
  542. cPfad = FILE-INFO:FULL-PATHNAME.
  543. cPfad = REPLACE(cPfad, '\', '/').
  544. END.
  545. xTemplate = SUBSTITUTE(tParam.Template, STRING(bAufko.Ku_Grp,'99'), STRING(xSprcd,'99'), bAufko.Frw ).
  546. xDokument = SUBSTITUTE(tParam.Template, STRING(bAufko.Faknr ,'999999'), STRING(bAufko.Knr,'999999'), bAufko.Frw ).
  547. cVorlage = xDokument + CHR(01) + 'viper\realwines\' + xTemplate + CHR(01) + cPfad.
  548. RUN CREATEDATEI ( INPUT cVorlage ).
  549. cExcelDocument = RETURN-VALUE.
  550. IF cExcelDocument BEGINS 'ERROR' THEN DO:
  551. MESSAGE 'Keine gültige Vorlage gefunden ' cVorlage
  552. VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
  553. RETURN 'ERROR'.
  554. END.
  555. cExcelDocument = REPLACE(cExcelDocument, '.\' , '').
  556. cExcelDocument = REPLACE(cExcelDocument, '..\', '').
  557. FILE-INFO:FILE-NAME = cExcelDocument NO-ERROR.
  558. cExcelDocument = FILE-INFO:FULL-PATHNAME.
  559. RUN OPENEXCEL ( INPUT hExcel,
  560. INPUT cExcelDocument,
  561. INPUT '',
  562. OUTPUT lRetVal ).
  563. IF NOT lRetVal THEN DO:
  564. IF VALID-HANDLE(hExcel) THEN RUN RELEASEEXCEL ( INPUT hExcel ).
  565. RETURN 'ERROR'.
  566. END.
  567. RETURN ''.
  568. END PROCEDURE.
  569. /* _UIB-CODE-BLOCK-END */
  570. &ANALYZE-RESUME
  571. &ENDIF
  572. &IF DEFINED(EXCLUDE-FUELLEN_tAufze) = 0 &THEN
  573. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tAufze Procedure
  574. PROCEDURE FUELLEN_tAufze :
  575. /*------------------------------------------------------------------------------
  576. Purpose:
  577. Parameters: <none>
  578. Notes:
  579. ------------------------------------------------------------------------------*/
  580. DEF INPUT PARAMETER ipAufnr AS INT NO-UNDO.
  581. DEF VAR minPos AS INT NO-UNDO.
  582. DEF VAR maxPos AS INT NO-UNDO.
  583. DEF VAR jPlatz AS INT NO-UNDO.
  584. DEF VAR cLagOrt AS CHAR NO-UNDO.
  585. DEF VAR iRuestArt AS INT NO-UNDO.
  586. DEF VAR iPlusMinus AS INT NO-UNDO.
  587. DEF VAR lArtikel AS LOG NO-UNDO.
  588. EMPTY TEMP-TABLE tAufze.
  589. FIND Steuer NO-LOCK
  590. WHERE Steuer.Firma = cFirma NO-ERROR.
  591. IF AVAILABLE Steuer THEN iRuestArt = Steuer.RuestArt.
  592. ASSIGN minPos = 0
  593. maxPos = 9999
  594. iPlusMinus = 0.
  595. /* Kommentar zu Beginn eines Auftrages */
  596. lArtikel = FALSE.
  597. FOR EACH Aufze NO-LOCK
  598. WHERE Aufze.Firma = cFirma
  599. AND Aufze.Aufnr = ipAufnr
  600. AND Aufze.Pos > minPos:
  601. IF Aufze.Artnr > 0 THEN DO:
  602. lArtikel = TRUE.
  603. LEAVE.
  604. END.
  605. minPos = Aufze.Pos.
  606. CREATE tAufze.
  607. ASSIGN tAufze.Aufnr = Aufze.Aufnr
  608. tAufze.Artnr = Aufze.Artnr
  609. tAufze.Inhalt = Aufze.Inhalt
  610. tAufze.Jahr = Aufze.Jahr
  611. tAufze.Pos = Aufze.Pos
  612. tAufze.Zeile = RECID(Aufze)
  613. tAufze.Aktion = Aufze.Aktion
  614. tAufze.Preis = Aufze.Preis
  615. tAufze.MGeli = Aufze.MGeli
  616. tAufze.MRuek = Aufze.MRuek.
  617. ASSIGN tAufze.Sort1 = STRING(0,'99')
  618. tAufze.Sort2 = ''
  619. tAufze.Sort3 = STRING(tAufze.Artnr ,'999999')
  620. + STRING(tAufze.Inhalt,'9999')
  621. + STRING(tAufze.Jahr ,'9999')
  622. + STRING(iPlusMinus ,'9')
  623. + STRING(tAufze.Pos ,'99999').
  624. tAufze.LagOrt = ''.
  625. END.
  626. /* Kommentar am Ende eines Auftrages */
  627. IF lArtikel THEN DO:
  628. FOR EACH Aufze NO-LOCK
  629. WHERE Aufze.Firma = cFirma
  630. AND Aufze.Aufnr = ipAufnr
  631. BY Aufze.Pos DESCENDING:
  632. IF Aufze.Artnr > 0 THEN LEAVE.
  633. maxPos = Aufze.Pos.
  634. CREATE tAufze.
  635. ASSIGN tAufze.Aufnr = Aufze.Aufnr
  636. tAufze.Artnr = Aufze.Artnr
  637. tAufze.Inhalt = Aufze.Inhalt
  638. tAufze.Jahr = Aufze.Jahr
  639. tAufze.Pos = Aufze.Pos
  640. tAufze.Zeile = RECID(Aufze)
  641. tAufze.Aktion = Aufze.Aktion
  642. tAufze.Preis = Aufze.Preis
  643. tAufze.MGeli = Aufze.MGeli
  644. tAufze.MRuek = Aufze.MRuek.
  645. ASSIGN tAufze.Sort1 = STRING(0,'99')
  646. tAufze.Sort2 = ''
  647. tAufze.Sort3 = STRING(tAufze.Artnr ,'999999')
  648. + STRING(tAufze.Inhalt,'9999')
  649. + STRING(tAufze.Jahr ,'9999')
  650. + STRING(iPlusMinus ,'9')
  651. + STRING(tAufze.Pos ,'99999').
  652. tAufze.LagOrt = ''.
  653. END.
  654. END.
  655. /* Artikelzeilen nach Ruestplatz und Ort */
  656. cLagOrt = ''.
  657. FOR EACH Aufze NO-LOCK
  658. WHERE Aufze.Firma = cFirma
  659. AND Aufze.Aufnr = ipAufnr
  660. AND Aufze.Pos > minPos
  661. AND Aufze.Pos < MaxPos
  662. BY Aufze.Pos DESCENDING:
  663. IF Aufze.Artnr > 0 THEN DO:
  664. FIND ArtLager NO-LOCK
  665. WHERE ArtLager.Firma = Aufze.Firma
  666. AND ArtLager.Artnr = Aufze.Artnr
  667. AND ArtLager.Inhalt = Aufze.Inhalt
  668. AND ArtLager.Jahr = Aufze.Jahr
  669. AND ArtLager.Lager = Aufze.Lager.
  670. cLagOrt = ArtLager.Ort.
  671. END.
  672. iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
  673. FIND LAST RuestPlatz USE-INDEX RuestPlatz-k2
  674. WHERE RuestPlatz.Firma = Aufze.Firma
  675. AND RuestPlatz.RuestArt = iRuestArt
  676. AND RuestPlatz.abLagOrt <= cLagOrt NO-ERROR.
  677. IF NOT AVAILABLE RuestPlatz THEN jPlatz = 90.
  678. ELSE jPlatz = RuestPlatz.Platz.
  679. CREATE tAufze.
  680. ASSIGN tAufze.Aufnr = Aufze.Aufnr
  681. tAufze.Artnr = Aufze.Artnr
  682. tAufze.Inhalt = Aufze.Inhalt
  683. tAufze.Jahr = Aufze.Jahr
  684. tAufze.Pos = Aufze.Pos
  685. tAufze.Zeile = RECID(Aufze)
  686. tAufze.Aktion = Aufze.Aktion
  687. tAufze.Preis = Aufze.Preis
  688. tAufze.MGeli = Aufze.MGeli
  689. tAufze.MRuek = Aufze.MRuek.
  690. ASSIGN tAufze.Sort1 = STRING(jPlatz,'99')
  691. tAufze.Sort2 = cLagOrt
  692. tAufze.Sort3 = STRING(tAufze.Artnr ,'999999')
  693. + STRING(tAufze.Inhalt,'9999')
  694. + STRING(tAufze.Jahr ,'9999')
  695. + STRING(iPlusMinus ,'9')
  696. + STRING(tAufze.Pos ,'99999').
  697. tAufze.LagOrt = cLagort.
  698. IF tAufze.Artnr > 0 AND
  699. tAufze.MGeli = 0 THEN DELETE tAufze.
  700. END.
  701. END PROCEDURE.
  702. /* _UIB-CODE-BLOCK-END */
  703. &ANALYZE-RESUME
  704. &ENDIF
  705. &IF DEFINED(EXCLUDE-GEBINDE_ABRECHNUNG) = 0 &THEN
  706. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_ABRECHNUNG Procedure
  707. PROCEDURE GEBINDE_ABRECHNUNG :
  708. /*------------------------------------------------------------------------------
  709. Purpose:
  710. Parameters: <none>
  711. Notes:
  712. ------------------------------------------------------------------------------*/
  713. DEF VAR cDaten AS CHAR NO-UNDO.
  714. DEF VAR lTotal AS LOG NO-UNDO.
  715. DEF VAR nBetrag AS DEC NO-UNDO.
  716. DEF VAR i1 AS INT NO-UNDO.
  717. DEF VAR i2 AS INT NO-UNDO.
  718. DEF VAR iMwstCd AS INT NO-UNDO.
  719. DEF VAR nZTot AS DEC NO-UNDO.
  720. lTotal = FALSE.
  721. i2 = 0.
  722. nZTot = 0.
  723. FOR EACH AufGKon NO-LOCK
  724. WHERE AufGKon.Firma = BAufko.Firma
  725. AND AufGKon.Aufnr = BAufko.Aufnr
  726. AND AufGKon.Gebuehr <> 0
  727. AND AufGKon.Betrag <> 0 :
  728. iMwstCd = AufGKon.MWST_Cd.
  729. IF i2 = 0 THEN iZeile = iZeile + 2.
  730. ELSE iZeile = iZeile + 1.
  731. FIND GebKonto NO-LOCK
  732. WHERE GebKonto.Firma = cFirma
  733. AND GebKonto.Geb_Cd = AufGKon.Geb_Cd.
  734. i1 = AufGKon.Ausgang.
  735. IF AufGKon.Depot = 0 AND
  736. AufGKon.Gebuehr = 0 THEN nBetrag = GebKonto.Depot + GebKonto.Gebuehr.
  737. ELSE nBetrag = AufGKon.Depot + AufGKon.Gebuehr.
  738. Rundbetr = i1 * nBetrag.
  739. iMwstCd = AufGKon.MWSt_Cd.
  740. nZTot = nZTot + Rundbetr.
  741. cDaten = GebKonto.Bez.
  742. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  743. INPUT iZeile, INPUT cDaten ).
  744. cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
  745. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K',
  746. INPUT iZeile, INPUT cDaten ).
  747. cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
  748. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  749. INPUT iZeile, INPUT cDaten ).
  750. cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
  751. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  752. INPUT iZeile, INPUT cDaten ).
  753. cDaten = TRIM(STRING(iMwstCd,"z9")).
  754. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
  755. INPUT iZeile, INPUT cDaten ).
  756. i2 = i2 + 1.
  757. END.
  758. IF i2 > 0 THEN lTotal = TRUE.
  759. IF lTotal THEN DO:
  760. iZeile = iZeile + 2.
  761. cDaten = TRIM(SUBSTRING(cFormText[11],21,20)).
  762. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  763. INPUT iZeile, INPUT cDaten ).
  764. cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
  765. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  766. INPUT iZeile, INPUT cDaten ).
  767. nFakBetr = nFakBetr + nZTot.
  768. END.
  769. RELEASE AufGKon.
  770. lTotal = FALSE.
  771. i2 = 0.
  772. nZTot = 0.
  773. FOR EACH AufGKon NO-LOCK
  774. WHERE AufGKon.Firma = BAufko.Firma
  775. AND AufGKon.Aufnr = BAufko.Aufnr
  776. AND AufGKon.Depot <> 0 :
  777. IF AufGKon.Eingang = 0 AND
  778. AufGKon.Ausgang = 0 THEN NEXT.
  779. IF i2 = 0 THEN iZeile = iZeile + 2.
  780. ELSE iZeile = iZeile + 1.
  781. FIND GebKonto NO-LOCK
  782. WHERE GebKonto.Firma = cFirma
  783. AND GebKonto.Geb_Cd = AufGKon.Geb_Cd.
  784. i1 = AufGKon.Ausgang.
  785. IF AufGKon.Depot = 0 AND
  786. AufGKon.Gebuehr = 0 THEN nBetrag = GebKonto.Depot + GebKonto.Gebuehr.
  787. ELSE nBetrag = AufGKon.Depot + AufGKon.Gebuehr.
  788. Rundbetr = i1 * nBetrag.
  789. iMwstCd = AufGKon.MWSt_Cd.
  790. nZTot = nZTot + Rundbetr.
  791. cDaten = GebKonto.Bez.
  792. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  793. INPUT iZeile, INPUT cDaten ).
  794. cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>9")).
  795. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'K',
  796. INPUT iZeile, INPUT cDaten ).
  797. cDaten = TRIM(STRING(nBetrag,"->>>>9.999")).
  798. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  799. INPUT iZeile, INPUT cDaten ).
  800. cDaten = TRIM(STRING(Rundbetr,"->>>>9.999")).
  801. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  802. INPUT iZeile, INPUT cDaten ).
  803. cDaten = TRIM(STRING(iMwstCd,"z9")).
  804. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
  805. INPUT iZeile, INPUT cDaten ).
  806. i2 = i2 + 1.
  807. END.
  808. IF i2 > 0 THEN lTotal = TRUE.
  809. IF lTotal THEN DO:
  810. iZeile = iZeile + 2.
  811. cDaten = TRIM(SUBSTRING(cFormText[11],21,20)).
  812. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  813. INPUT iZeile, INPUT cDaten ).
  814. cdaten = TRIM(STRING(nZTot,"->>>>9.99")).
  815. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  816. INPUT iZeile, INPUT cDaten ).
  817. nFakBetr = nFakBetr + nZTot.
  818. END.
  819. IF lTotal THEN DO:
  820. iZeile = iZeile + 2.
  821. cDaten = TRIM(SUBSTRING(cFormText[15],21,20)).
  822. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  823. INPUT iZeile, INPUT cDaten ).
  824. cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
  825. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  826. INPUT iZeile, INPUT cDaten ).
  827. END.
  828. END PROCEDURE.
  829. /* _UIB-CODE-BLOCK-END */
  830. &ANALYZE-RESUME
  831. &ENDIF
  832. &IF DEFINED(EXCLUDE-GEBINDE_SALDO) = 0 &THEN
  833. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GEBINDE_SALDO Procedure
  834. PROCEDURE GEBINDE_SALDO :
  835. /*------------------------------------------------------------------------------
  836. Purpose:
  837. Parameters: <none>
  838. Notes:
  839. ------------------------------------------------------------------------------*/
  840. FOR EACH AufGKon NO-LOCK
  841. WHERE AufGKon.Firma = BAufko.Firma
  842. AND AufGKon.Aufnr = BAufko.Aufnr
  843. AND AufGKon.Depot <> 0
  844. AND AufGKon.Betrag <> 0 :
  845. FIND FIRST tGebKto
  846. WHERE tGebKto.Geb_Cd = AufGKon.Geb_Cd NO-ERROR.
  847. IF NOT AVAILABLE tGebKto THEN DO:
  848. FIND GebKonto NO-LOCK
  849. WHERE GebKonto.Firma = AufGKon.Firma
  850. AND GebKonto.Geb_Cd = AufGKon.Geb_Cd .
  851. CREATE tGebKto.
  852. ASSIGN tGebKto.Sort_Cd = GebKonto.Sort_Cd
  853. tGebKto.Geb_Cd = GebKonto.Geb_Cd
  854. tGebKto.Bez = GebKonto.Bez
  855. tGebKto.Preis = AufGKon.Depot
  856. tGebKto.MWST_Cd = AufGKon.MWSt_Cd.
  857. END.
  858. tGebKto.A_Anz = tGebKto.A_Anz + AufGKon.Ausgang.
  859. tGebKto.A_Betrag = tGebKto.A_Anz * tGebKto.Preis.
  860. tGebKto.E_Anz = tGebKto.E_Anz + AufGKon.Eingang.
  861. tGebKto.E_Betrag = tGebKto.E_Anz * tGebKto.Preis.
  862. END.
  863. END PROCEDURE.
  864. /* _UIB-CODE-BLOCK-END */
  865. &ANALYZE-RESUME
  866. &ENDIF
  867. &IF DEFINED(EXCLUDE-MEHRWERTSTEUER) = 0 &THEN
  868. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE MEHRWERTSTEUER Procedure
  869. PROCEDURE MEHRWERTSTEUER :
  870. /*------------------------------------------------------------------------------
  871. Purpose:
  872. Parameters: <none>
  873. Notes:
  874. ------------------------------------------------------------------------------*/
  875. DEF VAR cDaten AS CHAR NO-UNDO.
  876. DEF VAR ix AS INT NO-UNDO.
  877. iZeile = iZeile + 1.
  878. DO ix = 1 TO 11:
  879. IF bAufko.Wpfl[ix] = 0 THEN NEXT.
  880. FIND LAST MWSTAns USE-INDEX MWSTAns-k1
  881. WHERE MWSTAns.MWST_Cd = ix
  882. AND MWSTAns.Datum <= BAUfko.Kond_Datum NO-LOCK.
  883. iZeile = iZeile + 1.
  884. cDaten = (IF bAufko.Wust[ix] = 0 THEN cFormText[19] ELSE cFormText[20]).
  885. cDaten = SUBSTITUTE(cDaten, TRIM(STRING(MWSTAns.Ansatz,'>>9.99%'))).
  886. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  887. INPUT iZeile, INPUT cDaten ).
  888. cDaten = TRIM(STRING(bAufko.Wpfl[ix],"->>,>>9.99")).
  889. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  890. INPUT iZeile, INPUT cDaten ).
  891. cDaten = TRIM(STRING(bAufko.Wust[ix],"->>,>>9.99")).
  892. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  893. INPUT iZeile, INPUT cDaten ).
  894. cDaten = TRIM(STRING(ix,"z9")).
  895. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
  896. INPUT iZeile, INPUT cDaten ).
  897. nFakBetr = nFakBetr + bAufko.Wust[ix].
  898. END.
  899. Rundbetr = nFakBetr.
  900. Rundcode = 1.
  901. RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
  902. nFakBetr = Rundbetr.
  903. iZeile = iZeile + 2.
  904. cDaten = TRIM(cFormText[16]).
  905. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  906. INPUT iZeile, INPUT cDaten ).
  907. cDaten = TRIM(STRING(nFakBetr,"->>,>>9.99")).
  908. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  909. INPUT iZeile, INPUT cDaten ).
  910. END PROCEDURE.
  911. /* _UIB-CODE-BLOCK-END */
  912. &ANALYZE-RESUME
  913. &ENDIF
  914. &IF DEFINED(EXCLUDE-SUMMENRABATTE) = 0 &THEN
  915. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE SUMMENRABATTE Procedure
  916. PROCEDURE SUMMENRABATTE :
  917. /*------------------------------------------------------------------------------
  918. Purpose:
  919. Parameters: <none>
  920. Notes:
  921. ------------------------------------------------------------------------------*/
  922. DEF VAR RText AS CHAR FORMAT "x(20)" NO-UNDO.
  923. DEF VAR WText AS CHAR NO-UNDO.
  924. DEF VAR cDaten AS CHAR NO-UNDO.
  925. DEF VAR lTotal AS LOG NO-UNDO.
  926. DEF VAR lRabatt AS LOG NO-UNDO.
  927. DEF VAR iPlus AS INT NO-UNDO.
  928. DEF VAR nRabWert AS DEC NO-UNDO.
  929. DEF VAR iMwstCd AS INT NO-UNDO.
  930. /* Auftragsrabatt ---------------------------------------------------- */
  931. lTotal = FALSE.
  932. iPlus = 0.
  933. FOR EACH tRabSumm
  934. WHERE tRabSumm.Auf_Rab <> 0
  935. BY tRabSumm.Rab_Summ:
  936. Rundbetr = tRabSumm.Auf_Rab.
  937. nFakBetr = nFakBetr - Rundbetr.
  938. IF NOT lRabatt THEN NEXT.
  939. IF iPlus = 0 THEN iZeile = iZeile + 2.
  940. ELSE iZeile = iZeile + 1.
  941. IF Rundbetr < 0 THEN RText = cZusText.
  942. ELSE RText = cRabText.
  943. FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
  944. WHERE AufRabSu.Firma = bAufko.Firma
  945. AND AufRabSu.Aufnr = bAufko.Aufnr
  946. AND AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
  947. IF AufRabSu.F_Proz_Betr THEN WText = "%".
  948. ELSE WText = "Fr.".
  949. nRabWert = ABSOLUT(AufRabSu.F_Wert).
  950. cDaten = RText
  951. + " "
  952. + tRabSumm.Bez
  953. + " "
  954. + STRING(nRabWert,"z9.99- ")
  955. + WText.
  956. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  957. INPUT iZeile, INPUT cDaten ).
  958. cDaten = STRING(- Rundbetr,"->>>>9.99").
  959. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  960. INPUT iZeile, INPUT cDaten ).
  961. iPlus = iPlus + 1.
  962. END.
  963. IF iPlus > 0 THEN lTotal = TRUE.
  964. /* Abholrabatt ------------------------------------------------------- */
  965. iPlus = 0.
  966. FOR EACH tRabSumm
  967. WHERE tRabSumm.Abh_Rab <> 0
  968. BY tRabSumm.Rab_Summ:
  969. Rundbetr = tRabSumm.Abh_Rab.
  970. nFakBetr = nFakBetr - Rundbetr.
  971. IF NOT lRabatt THEN NEXT.
  972. IF iPlus = 0 THEN iZeile = iZeile + 2.
  973. ELSE iZeile = iZeile + 1.
  974. IF Rundbetr < 0 THEN RText = cZusText.
  975. ELSE RText = cRabText.
  976. FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
  977. WHERE AufRabSu.Firma = bAufko.Firma
  978. AND AufRabSu.Aufnr = bAufko.Aufnr
  979. AND AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
  980. IF AufRabSu.A_Proz_Betr THEN WText = "%".
  981. ELSE WText = "Fr.".
  982. nRabWert = ABSOLUT(AufRabSu.A_Wert).
  983. cDaten = RText
  984. + " "
  985. + tRabSumm.Bez
  986. + " "
  987. + STRING(nRabWert,"z9.99- ")
  988. + WText.
  989. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  990. INPUT iZeile, INPUT cDaten ).
  991. cDaten = STRING(- Rundbetr,"->>>>9.99").
  992. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  993. INPUT iZeile, INPUT cDaten ).
  994. iPlus = iPlus + 1.
  995. END.
  996. IF iPlus > 0 THEN lTotal = TRUE.
  997. /* Spezialpreis-Auftragsrabatte ---------------------------------------- */
  998. iPlus = 0.
  999. FOR EACH tSpeRab
  1000. WHERE tSpeRab.Auf_Betr <> 0
  1001. BY tSpeRab.Rab_Grp:
  1002. Rundbetr = tSpeRab.Auf_Betr.
  1003. nFakBetr = nFakBetr - Rundbetr.
  1004. IF NOT lRabatt THEN NEXT.
  1005. IF iPlus = 0 THEN iZeile = iZeile + 2.
  1006. ELSE iZeile = iZeile + 1.
  1007. IF Rundbetr < 0 THEN RText = cZusText.
  1008. ELSE RText = cRabText.
  1009. FIND Tabel NO-LOCK
  1010. WHERE Tabel.Firma = cFirma
  1011. AND Tabel.RecArt = 'ARABGRP'
  1012. AND Tabel.CodeC = ''
  1013. AND Tabel.CodeI = tSpeRab.Rab_Grp
  1014. AND Tabel.Sprcd = 1 .
  1015. FIND FIRST AufSpRab NO-LOCK
  1016. WHERE AufSpRab.Firma = bAufko.Firma
  1017. AND AufSpRab.Aufnr = bAufko.Aufnr
  1018. AND AufSpRab.Rab_Grp = tSpeRab.Rab_Grp.
  1019. IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
  1020. ELSE WText = "Fr.".
  1021. nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
  1022. cDaten = RText
  1023. + " "
  1024. + tRabSumm.Bez
  1025. + " "
  1026. + STRING(nRabWert,"z9.99- ")
  1027. + WText.
  1028. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  1029. INPUT iZeile, INPUT cDaten ).
  1030. cDaten = STRING(- Rundbetr,"->>>>9.99").
  1031. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  1032. INPUT iZeile, INPUT cDaten ).
  1033. iPlus = iPlus + 1.
  1034. END.
  1035. IF iPlus > 0 THEN lTotal = TRUE.
  1036. IF lTotal THEN DO:
  1037. iZeile = iZeile + 1.
  1038. cDaten = TRIM(SUBSTRING(cFormText[14],21,20)).
  1039. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  1040. INPUT iZeile, INPUT cDaten ).
  1041. cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
  1042. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  1043. INPUT iZeile, INPUT cDaten ).
  1044. END.
  1045. /* Recycling-Gebühren ------------------------------------------------ */
  1046. lTotal = FALSE.
  1047. iPlus = 0.
  1048. FOR EACH AufGKon NO-LOCK
  1049. WHERE AufGKon.Firma = bAufko.Firma
  1050. AND AufGKon.Aufnr = bAufko.Aufnr
  1051. AND AufGKon.Gebuehr <> 0
  1052. AND AufGKon.Betrag <> 0 :
  1053. nFakBetr = nFakBetr + AufGKon.Betrag.
  1054. IF NOT lRabatt THEN NEXT.
  1055. IF iPlus = 0 THEN iZeile = iZeile + 2.
  1056. ELSE iZeile = iZeile + 1.
  1057. iMwstCd = AufGKon.MWSt_Cd.
  1058. FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
  1059. IF NOT AVAILABLE GebKonto THEN cDaten = TRIM(SUBSTRING(cFormText[11],41,20)).
  1060. ELSE cDaten = GebKonto.Bez.
  1061. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  1062. INPUT iZeile, INPUT cDaten ).
  1063. cDaten = TRIM(STRING(AufGKon.Ausgang,"->>>>>9")).
  1064. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'L',
  1065. INPUT iZeile, INPUT cDaten ).
  1066. cDaten = TRIM(STRING(AufGKon.Betrag,"->>>>9.99")).
  1067. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  1068. INPUT iZeile, INPUT cDaten ).
  1069. cDaten = TRIM(STRING(AufGKon.MWSt_Cd ,"z9")).
  1070. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'N',
  1071. INPUT iZeile, INPUT cDaten ).
  1072. iPlus = iPlus + 1.
  1073. END.
  1074. IF iPlus > 0 THEN lTotal = TRUE.
  1075. IF lTotal THEN DO:
  1076. iZeile = iZeile + 1.
  1077. cDaten = TRIM(SUBSTRING(cFormText[14],21,20)).
  1078. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'C',
  1079. INPUT iZeile, INPUT cDaten ).
  1080. cDaten = TRIM(STRING(nFakBetr,"->>>>9.99")).
  1081. RUN ZELLEFUELLEN ( INPUT hExcel, INPUT 'M',
  1082. INPUT iZeile, INPUT cDaten ).
  1083. END.
  1084. END PROCEDURE.
  1085. /* _UIB-CODE-BLOCK-END */
  1086. &ANALYZE-RESUME
  1087. &ENDIF