Lieferschein.p 48 KB

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