Offerte.p 46 KB

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