FestRechnung.p 81 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338
  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. DEFINE INPUT PARAMETER iphParam AS HANDLE NO-UNDO.
  17. DEFINE OUTPUT PARAMETER opcResult AS CHARACTER NO-UNDO.
  18. DEFINE VARIABLE iSeite AS INTEGER NO-UNDO.
  19. DEFINE VARIABLE iAnzDok AS INTEGER NO-UNDO.
  20. DEFINE VARIABLE iLauf AS INTEGER NO-UNDO.
  21. DEFINE VARIABLE lFirst AS LOG INIT FALSE NO-UNDO.
  22. DEFINE VARIABLE lLast AS LOG INIT FALSE NO-UNDO.
  23. DEFINE VARIABLE lPreis AS LOG NO-UNDO.
  24. DEFINE VARIABLE cFirma AS CHARACTER NO-UNDO.
  25. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO.
  26. DEFINE VARIABLE nFakBetr AS DECIMAL NO-UNDO.
  27. DEFINE VARIABLE dFakDatum AS DATE NO-UNDO.
  28. DEFINE VARIABLE iFaknr AS INTEGER NO-UNDO.
  29. DEFINE VARIABLE iSprcd AS INTEGER NO-UNDO.
  30. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO.
  31. DEFINE VARIABLE cFormtext AS CHARACTER EXTENT 30 NO-UNDO.
  32. DEFINE VARIABLE cRabText AS CHARACTER NO-UNDO.
  33. DEFINE VARIABLE cZusText AS CHARACTER NO-UNDO.
  34. DEFINE VARIABLE cEpzText AS CHARACTER NO-UNDO.
  35. DEFINE VARIABLE cBesrKopf AS CHARACTER EXTENT 12 NO-UNDO.
  36. DEFINE VARIABLE lDebIncl AS LOG NO-UNDO.
  37. DEFINE VARIABLE Rundbetr AS DECIMAL DECIMALS 4 NO-UNDO.
  38. DEFINE VARIABLE RundCode AS INTEGER INIT 1 NO-UNDO.
  39. DEFINE VARIABLE htTabTexte AS HANDLE NO-UNDO.
  40. DEFINE VARIABLE hAufko AS HANDLE NO-UNDO.
  41. DEFINE VARIABLE cInstallation AS CHARACTER NO-UNDO.
  42. DEFINE VARIABLE iWgr AS INTEGER NO-UNDO.
  43. DEFINE VARIABLE iPgr AS INTEGER NO-UNDO.
  44. DEFINE VARIABLE iAgr AS INTEGER NO-UNDO.
  45. DEFINE VARIABLE iArtnr AS INTEGER NO-UNDO.
  46. DEFINE VARIABLE iInhalt AS INTEGER NO-UNDO.
  47. DEFINE VARIABLE iJahr AS INTEGER NO-UNDO.
  48. DEFINE VARIABLE iMaxPos AS INTEGER INIT 2650 NO-UNDO.
  49. DEFINE VARIABLE cvpr_Dokument AS CHARACTER NO-UNDO.
  50. DEFINE VARIABLE iArtZeile AS INTEGER NO-UNDO.
  51. DEFINE VARIABLE iVPagePos AS INTEGER NO-UNDO.
  52. DEFINE VARIABLE iVGroupPos AS INTEGER NO-UNDO.
  53. DEFINE BUFFER bAufko FOR Aufko .
  54. DEFINE BUFFER bAufze FOR Aufze .
  55. DEFINE BUFFER FDebst FOR Debst . /* Fakturaadresse */
  56. DEFINE BUFFER LDebst FOR Debst . /* Lieferadresse */
  57. DEFINE BUFFER LAdresse FOR Adresse .
  58. DEFINE BUFFER bAdresse FOR Adresse .
  59. DEFINE BUFFER bWust FOR Wust .
  60. DEFINE BUFFER bSteuer FOR Steuer .
  61. { incl/properties.i }
  62. { incl/ttdruckparam.i }
  63. { swissQR/propertiesSwissQR.i }
  64. DEFINE TEMP-TABLE tDokument
  65. FIELD cGruppe AS CHARACTER
  66. FIELD iZeile AS INTEGER
  67. FIELD cFeld AS CHARACTER
  68. FIELD cInhalt AS CHARACTER
  69. INDEX tDokument-k1 IS PRIMARY
  70. cGruppe
  71. iZeile
  72. cFeld
  73. .
  74. DEFINE TEMP-TABLE tTotale
  75. FIELD nMwstPfl AS DECIMAL EXTENT 12
  76. FIELD nMwstBet AS DECIMAL EXTENT 12
  77. FIELD nSammTot AS DECIMAL
  78. FIELD nSkBer AS DECIMAL
  79. FIELD nWW AS DECIMAL
  80. .
  81. DEFINE TEMP-TABLE sAufko
  82. FIELD cFirma AS CHARACTER
  83. FIELD iAufnr AS INTEGER
  84. FIELD iFak_Knr AS INTEGER
  85. FIELD iKnr AS INTEGER
  86. FIELD iSamm_Nr AS INTEGER
  87. FIELD iRecid AS RECID
  88. FIELD iFaknr AS INTEGER
  89. .
  90. DEFINE TEMP-TABLE tAufko LIKE Aufko
  91. FIELD iRecid AS RECID
  92. .
  93. DEFINE TEMP-TABLE tqAufko LIKE Aufko
  94. FIELD iRecid AS RECID
  95. FIELD lBetrag AS LOGICAL.
  96. .
  97. DEFINE VARIABLE htqAufko AS HANDLE NO-UNDO.
  98. htqAufko = TEMP-TABLE tqAufko:DEFAULT-BUFFER-HANDLE.
  99. DEFINE TEMP-TABLE tAufze
  100. FIELD Aufnr AS INTEGER
  101. FIELD Sort1 AS CHARACTER
  102. FIELD Sort2 AS CHARACTER
  103. FIELD Sort3 AS CHARACTER
  104. FIELD Artnr AS INTEGER
  105. FIELD Inhalt AS INTEGER
  106. FIELD Jahr AS INTEGER
  107. FIELD Pos AS INTEGER
  108. FIELD Zeile AS RECID
  109. FIELD Preis AS DECIMAL DECIMALS 4
  110. FIELD Aktion AS LOG
  111. FIELD LagOrt AS CHARACTER
  112. FIELD MGeli AS DECIMAL
  113. FIELD MRuek AS DECIMAL
  114. INDEX tAufze-k1 IS PRIMARY
  115. Aufnr
  116. Sort1
  117. Sort2
  118. Sort3
  119. .
  120. DEFINE TEMP-TABLE tSpeRab
  121. FIELD Rab_Grp AS INTEGER
  122. FIELD Auf_Betr AS DECIMAL DECIMALS 4
  123. .
  124. DEFINE TEMP-TABLE tGebKto
  125. FIELD Sort_Cd AS CHARACTER
  126. FIELD Geb_Cd AS CHARACTER
  127. FIELD Bez AS CHARACTER
  128. FIELD Preis AS DECIMAL
  129. FIELD A_Anz AS DECIMAL
  130. FIELD A_Betrag AS DECIMAL
  131. FIELD E_Anz AS DECIMAL
  132. FIELD E_Betrag AS DECIMAL
  133. FIELD MWST_Art AS INTEGER
  134. FIELD MWST_Cd AS INTEGER
  135. .
  136. DEFINE TEMP-TABLE tRabSumm
  137. FIELD Rab_Summ AS INTEGER
  138. FIELD Bez AS CHARACTER
  139. FIELD F_Rab_Art AS INTEGER
  140. FIELD F_Wert AS DECIMAL DECIMALS 4
  141. FIELD A_Rab_Art AS INTEGER
  142. FIELD A_Wert AS DECIMAL DECIMALS 4
  143. FIELD Auf_Rab AS DECIMAL DECIMALS 4
  144. FIELD Abh_Rab AS DECIMAL DECIMALS 4
  145. .
  146. DEFINE TEMP-TABLE tUmsGrp
  147. FIELD Ums_Grp AS INTEGER
  148. FIELD Mwst AS INTEGER
  149. FIELD Ansatz AS DECIMAL
  150. FIELD Bez AS CHARACTER
  151. FIELD lInkl AS LOG
  152. FIELD Ums_Betr AS DECIMAL DECIMALS 4
  153. .
  154. DEFINE TEMP-TABLE tTabTexte
  155. FIELD cRecArt AS CHARACTER
  156. FIELD iZeile AS INTEGER
  157. FIELD cFeld1 AS CHARACTER
  158. FIELD cFeld2 AS CHARACTER
  159. FIELD cFeld3 AS CHARACTER
  160. FIELD iFeld1 AS INTEGER
  161. FIELD iFeld2 AS INTEGER
  162. FIELD iFeld3 AS INTEGER
  163. INDEX tTabTexte-k1 IS PRIMARY
  164. cRecArt
  165. iZeile.
  166. /* _UIB-CODE-BLOCK-END */
  167. &ANALYZE-RESUME
  168. &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
  169. /* ******************** Preprocessor Definitions ******************** */
  170. &Scoped-define PROCEDURE-TYPE Procedure
  171. &Scoped-define DB-AWARE no
  172. /* _UIB-PREPROCESSOR-BLOCK-END */
  173. &ANALYZE-RESUME
  174. /* ************************ Function Prototypes ********************** */
  175. &IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
  176. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD calcBlock Procedure
  177. FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER) FORWARD.
  178. /* _UIB-CODE-BLOCK-END */
  179. &ANALYZE-RESUME
  180. &ENDIF
  181. /* *********************** Procedure Settings ************************ */
  182. &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
  183. /* Settings for THIS-PROCEDURE
  184. Type: Procedure
  185. Allow:
  186. Frames: 0
  187. Add Fields to: Neither
  188. Other Settings: CODE-ONLY COMPILE
  189. */
  190. &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
  191. /* ************************* Create Window ************************** */
  192. &ANALYZE-SUSPEND _CREATE-WINDOW
  193. /* DESIGN Window definition (used by the UIB)
  194. CREATE WINDOW Procedure ASSIGN
  195. HEIGHT = 15
  196. WIDTH = 60.
  197. /* END WINDOW DEFINITION */
  198. */
  199. &ANALYZE-RESUME
  200. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
  201. /* *************************** Main Block *************************** */
  202. opcResult = ''.
  203. cInstallation = DYNAMIC-FUNCTION('getInstallation':U).
  204. CREATE tParam.
  205. htParam:BUFFER-COPY(iphParam).
  206. ASSIGN
  207. cFirma = tParam.cFirma
  208. iAnzDok = tParam.Anzahl.
  209. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
  210. AdFirma = bSteuer.AdFirma.
  211. RUN AUFTRAG_ERMITTELN.
  212. IF opcResult <> '' THEN RETURN.
  213. FOR EACH sAufko
  214. BY sAufko.iFak_Knr:
  215. FIND bAdresse NO-LOCK
  216. WHERE bAdresse.Firma = AdFirma
  217. AND bAdresse.Knr = sAufko.iFak_Knr.
  218. iSprcd = bAdresse.Sprcd.
  219. RUN GET_FORMTEXT ( tParam.cInstall, tParam.cDokument, iSprcd,
  220. OUTPUT cFormText ) NO-ERROR.
  221. cRabText = TRIM(SUBSTRING(cFormText[21],01,20)).
  222. cZusText = TRIM(SUBSTRING(cFormText[21],21,20)).
  223. cEpzText = TRIM(SUBSTRING(cFormText[21],41,20)).
  224. RELEASE bAdresse.
  225. FIND Aufko NO-LOCK
  226. WHERE Aufko.Firma = sAufko.cFirma
  227. AND Aufko.Aufnr = sAufko.iAufnr NO-ERROR.
  228. EMPTY TEMP-TABLE tqAufko .
  229. CREATE tqAufko.
  230. BUFFER-COPY Aufko TO tqAufko
  231. ASSIGN
  232. tqAufko.iRecid = RECID(Aufko)
  233. tqAufko.lBetrag = TRUE.
  234. RELEASE Aufko.
  235. { vpr.i INIT }
  236. { vpr.i START }
  237. DO iLauf = 1 TO iAnzDok:
  238. dFakDatum = tParam.dFakDatum.
  239. iSeite = 0.
  240. iFaknr = sAufko.iFaknr.
  241. lFirst = TRUE.
  242. lPreis = TRUE.
  243. lLast = FALSE.
  244. EMPTY TEMP-TABLE tUmsGrp .
  245. EMPTY TEMP-TABLE tTotale .
  246. EMPTY TEMP-TABLE tDokument .
  247. CREATE tTotale.
  248. FOR EACH bAufko NO-LOCK
  249. WHERE bAufko.Firma = sAufko.cFirma
  250. AND bAufko.Fak_Knr = sAufko.iFak_Knr
  251. AND bAufko.Samm_Nr = sAufko.iSamm_Nr
  252. AND bAufko.Faknr = sAufko.iFaknr
  253. BREAK BY bAufko.Fak_Knr
  254. BY bAufko.Samm_Nr
  255. BY bAufko.Knr
  256. BY bAufko.Aufnr :
  257. EMPTY TEMP-TABLE tAufze .
  258. EMPTY TEMP-TABLE tGebKto .
  259. EMPTY TEMP-TABLE tRabSumm .
  260. EMPTY TEMP-TABLE tSpeRab .
  261. EMPTY TEMP-TABLE tTabTexte .
  262. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
  263. WHERE bAdresse.Firma = AdFirma
  264. AND bAdresse.Knr = bAufko.Fak_Knr NO-ERROR.
  265. FIND LDebst NO-LOCK USE-INDEX Debst-k1
  266. WHERE LDebst.Firma = cFirma
  267. AND LDebst.Knr = bAufko.Knr NO-ERROR.
  268. FIND FDebst NO-LOCK USE-INDEX Debst-k1
  269. WHERE FDebst.Firma = cFirma
  270. AND FDebst.Knr = bAufko.Fak_Knr NO-ERROR.
  271. FIND bWust NO-LOCK USE-INDEX Wust-k1
  272. WHERE bWust.CodeK = LDebst.MWST
  273. AND bWust.CodeA = 99 NO-ERROR.
  274. lDebIncl = FALSE.
  275. IF AVAILABLE bWust THEN lDebIncl = bWust.Incl.
  276. hAufko = BUFFER bAufko:HANDLE.
  277. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
  278. /* Texte und Werte aus Tabelle 'Tabel' laden für RecArt */
  279. /* FAKART, AUFSTATUS, LIEFART, FAHRER, WISO, ABLAD */
  280. RUN CREATE_TABTEXTE ( hAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR.
  281. RUN FUELLEN_tAufze ( bAufko.Aufnr ) NO-ERROR.
  282. FOR EACH tAufze
  283. WHERE tAufze.Artnr > 0:
  284. FIND bAufze NO-LOCK WHERE RECID(bAufze) = tAufze.Zeile.
  285. /* Spezial-Auftragsrabatt pro Lieferschein bilden */
  286. IF bAufze.Auf_Sp_Grp > 0 THEN
  287. DO:
  288. FIND FIRST tSpeRab
  289. WHERE tSpeRab.Rab_Grp = bAufze.Auf_Sp_Grp NO-ERROR.
  290. IF NOT AVAILABLE tSpeRab THEN
  291. DO:
  292. CREATE tSpeRab.
  293. ASSIGN
  294. tSpeRab.Rab_Grp = bAufze.Auf_Sp_Grp.
  295. END.
  296. tSpeRab.Auf_Betr = tSpeRab.Auf_Betr + bAufze.Auf_Sp_Rab.
  297. END.
  298. /* Summengruppen-Totale pro Lieferschein bilden */
  299. DO WHILE bAufze.Rab_Su_Grp > 0:
  300. FIND FIRST tRabSumm
  301. WHERE tRabSumm.Rab_Summ = bAufze.Rab_Su_Grp NO-ERROR.
  302. IF NOT AVAILABLE tRabSumm THEN
  303. DO:
  304. FIND FIRST RabSumm NO-LOCK
  305. WHERE RabSumm.Firma = bAufze.Firma
  306. AND RabSumm.Rab_Summ = bAufze.Rab_Su_Grp NO-ERROR.
  307. IF NOT AVAILABLE RabSumm THEN LEAVE.
  308. CREATE tRabSumm.
  309. ASSIGN
  310. tRabSumm.Rab_Summ = bAufze.Rab_Su_Grp
  311. tRabSumm.Bez = RabSumm.Bez
  312. tRabSumm.Auf_Rab = 0
  313. tRabSumm.Abh_Rab = 0.
  314. END.
  315. LEAVE.
  316. END.
  317. END.
  318. IF LAST-OF ( bAufko.Samm_Nr ) THEN lLast = TRUE.
  319. iArtZeile = 0.
  320. RUN DRUCKEN.
  321. /* Auftragskopf mutieren */
  322. REPEAT TRANSACTION:
  323. IF iLauf < iAnzDok THEN LEAVE.
  324. FIND FIRST tTabTexte NO-LOCK
  325. WHERE tTabTexte.cRecArt = 'FAKART'
  326. AND tTabTexte.iZeile = 1.
  327. FIND Aufko WHERE RECID(Aufko) = RECID(bAufko).
  328. Aufko.Gedruckt = TRUE.
  329. IF tTabTexte.iFeld1 > Aufko.Fak_Art THEN Aufko.Fak_Art = tTabTexte.iFeld1.
  330. IF tTabTexte.iFeld2 > Aufko.Auf_Sta THEN Aufko.Auf_Sta = tTabTexte.iFeld2.
  331. RELEASE Aufko.
  332. LEAVE.
  333. END.
  334. END.
  335. END.
  336. { vpr.i STOP }
  337. END.
  338. PROCEDURE ShellExecuteA EXTERNAL "shell32.dll" :
  339. DEFINE INPUT PARAMETER lphwnd AS LONG.
  340. DEFINE INPUT PARAMETER lpOperation AS CHARACTER.
  341. DEFINE INPUT PARAMETER lpFile AS CHARACTER.
  342. DEFINE INPUT PARAMETER lpParameters AS CHARACTER.
  343. DEFINE INPUT PARAMETER lpDirectory AS CHARACTER.
  344. DEFINE INPUT PARAMETER nShowCmd AS LONG.
  345. DEFINE RETURN PARAMETER hInstance AS LONG.
  346. END PROCEDURE.
  347. /* _UIB-CODE-BLOCK-END */
  348. &ANALYZE-RESUME
  349. &IF DEFINED(EXCLUDE-DRUCKEN_QRCODE) = 0 &THEN
  350. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_QRCODE Procedure
  351. PROCEDURE DRUCKEN_QRCODE:
  352. /*------------------------------------------------------------------------------
  353. Purpose:
  354. Notes:
  355. ------------------------------------------------------------------------------*/
  356. /*------------------------------------------------------------------------------*/
  357. /* Purpose: */
  358. /* Parameters: <none> */
  359. /* Notes: */
  360. /*------------------------------------------------------------------------------*/
  361. DEFINE VARIABLE cFileName AS CHARACTER NO-UNDO.
  362. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  363. DEFINE VARIABLE hAufko AS HANDLE NO-UNDO.
  364. DEFINE VARIABLE cBesrTemplate AS CHARACTER NO-UNDO INIT 'viper/wiederkehr/BESR_QR.vfr'.
  365. DEFINE VARIABLE cWerbung AS CHARACTER NO-UNDO.
  366. DEFINE VARIABLE cConString AS CHARACTER NO-UNDO.
  367. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  368. FIND FIRST tqAufko.
  369. tqAufko.Auf_Tot = RundBetr.
  370. FIND FIRST tParam.
  371. RUN vpr_newPage.
  372. FIND FIRST ViperDoc NO-LOCK
  373. WHERE ViperDoc.Firma = tqAufko.Firma
  374. AND ViperDoc.Benutzer = ''
  375. AND ViperDoc.Formular = 'BESR_QR'
  376. AND ViperDoc.DokArt = 0 NO-ERROR.
  377. IF NOT AVAILABLE ViperDoc THEN RETURN.
  378. RUN vpr_LoadVFR (cBesrTemplate).
  379. RUN vpr_ActivateReport ('BESR_QR').
  380. RUN vpr_SelectPrinter (ViperDoc.Drucker).
  381. RUN vpr_SetDocAttrib ('PAPERSIZE=A4').
  382. RUN vpr_SetPreviewMode ('Direct').
  383. RUN vpr_InitGroups ("").
  384. RUN vpr_initGraphObj.
  385. IF ViperDoc.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties("Papertray", ViperDoc.Schacht_BESR).
  386. cFileName = SUBSTITUTE('&1&2_&3', cPathQRCodes, 'QR_CODE', STRING(bAufko.Aufnr,'9999999')).
  387. RUN 'SwissQR/SwissQRCode.p' ( htqAufko, cFileName ).
  388. cFilename = cFileName + '.jpg'.
  389. IF SEARCH(cFileName) <> ? THEN
  390. DO:
  391. cFileName = 'FILENAME=' + cFileName.
  392. RUN vpr_setGraphObjAttrib ( 'QRCode', 'QRCODE', cFileName ).
  393. END.
  394. /* FILE-INFO:FILE-NAME = cFileName. */
  395. /* cFileName = FILE-INFO:FULL-PATHNAME.*/
  396. cWerbung = SUBSTITUTE(cPathWerbung, tParam.cInstall).
  397. cWerbung = SUBSTITUTE('&1Werbung_&2.jpg', cWerbung, tqAufko.Firma).
  398. IF SEARCH(cWerbung) <> ? THEN
  399. DO:
  400. cWerbung = SUBSTITUTE('FILENAME=&1', cWerbung).
  401. RUN vpr_setGraphObjAttrib ( 'Werbung', 'QRCODE', cWerbung ).
  402. END.
  403. RUN vpr_InitGraphObj.
  404. RUN vpr_flushGroup('QRCODE').
  405. /* RUN vpr_printdoc ( vpr_getPageNo(), vpr_getPageNo() ).*/
  406. RUN vpr_ActivateReport (tParam.cDokument).
  407. END PROCEDURE.
  408. /* _UIB-CODE-BLOCK-END */
  409. &ANALYZE-RESUME
  410. &ENDIF
  411. /* ********************** Internal Procedures *********************** */
  412. &IF DEFINED(EXCLUDE-ARTIKELZEILE) = 0 &THEN
  413. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ARTIKELZEILE Procedure
  414. PROCEDURE ARTIKELZEILE :
  415. /*------------------------------------------------------------------------------
  416. Purpose:
  417. Parameters: <none>
  418. Notes:
  419. ------------------------------------------------------------------------------*/
  420. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  421. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  422. DEFINE VARIABLE nRabWert AS DECIMAL NO-UNDO.
  423. DEFINE VARIABLE xRabText AS CHARACTER NO-UNDO.
  424. FIND tAufze WHERE RECID(tAufze) = ipRecid NO-LOCK.
  425. FIND Aufze WHERE RECID(Aufze) = tAufze.Zeile NO-LOCK.
  426. iArtZeile = iArtZeile + 1.
  427. DO WHILE Aufze.Artnr = 0:
  428. cString = Aufze.Bez1.
  429. IF Aufze.Bez1 <> '' THEN
  430. DO:
  431. cString = cString
  432. + (IF cString = '' THEN '' ELSE CHR(10))
  433. + Aufze.Bez2.
  434. END.
  435. CREATE tDokument.
  436. ASSIGN
  437. tDokument.cGruppe = 'ArtikelZeile1'
  438. tDokument.iZeile = iArtZeile
  439. tDokument.cFeld = 'Bez1'
  440. tDokument.cInhalt = cString.
  441. RETURN.
  442. END.
  443. FIND Artst OF Aufze NO-LOCK.
  444. FIND GGebinde NO-LOCK
  445. WHERE GGebinde.Firma = cFirma
  446. AND GGebinde.Geb_Cd = Aufze.GGeb_Cd NO-ERROR.
  447. FIND VGebinde NO-LOCK
  448. WHERE VGebinde.Firma = cFirma
  449. AND VGebinde.Geb_Cd = Aufze.VGeb_Cd NO-ERROR.
  450. FIND KGebinde NO-LOCK
  451. WHERE KGebinde.Firma = cFirma
  452. AND KGebinde.Geb_Cd = Aufze.KGeb_Cd NO-ERROR.
  453. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Artnr' , STRING(Aufze.Artnr ,"999999") ).
  454. IF Aufze.VGeb_Me <> 0 THEN
  455. DO:
  456. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge_VGeb', TRIM(STRING(Aufze.VGeb_Me,'->>>>>9')) ).
  457. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'VGebinde' , VGebinde.KBez ).
  458. END.
  459. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', KGebinde.Kbez ).
  460. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Menge' , STRING(Aufze.MGeli,'->>,>>9') ).
  461. cString = Aufze.Bez1.
  462. IF Aufze.Bez2 <> '' THEN
  463. DO:
  464. cString = cString
  465. + (IF cString = '' THEN '' ELSE CHR(10))
  466. + Aufze.Bez2.
  467. END.
  468. IF Aufze.Aktion THEN
  469. DO:
  470. cString = cString
  471. + (IF cString = '' THEN '' ELSE CHR(10))
  472. + Aufze.Aktion_Text.
  473. END.
  474. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', cString ).
  475. IF Aufze.Alk_Gehalt <> 0 THEN
  476. DO:
  477. cString = STRING(Aufze.Alk_Gehalt,"zz9.9%").
  478. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Alk%', cString ).
  479. END.
  480. IF Aufze.Jahr > 9 THEN
  481. DO:
  482. cString = STRING(Aufze.Jahr,"9999").
  483. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'JG', cString ).
  484. END.
  485. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis' , STRING(Aufze.Preis ,'>,>>9.99') ).
  486. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', STRING(Aufze.Bru_Betr,'->>>,>>9.99') ).
  487. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC' , STRING(Aufze.WuCd ,'z9') ).
  488. IF Aufze.Rab_Betr <> 0 THEN
  489. DO:
  490. iArtZeile = iArtZeile + 1.
  491. nRabWert = ABSOLUTE(Aufze.Rab_Wert).
  492. IF Aufze.Rab_Art = 3 THEN xRabText = cEpzText.
  493. ELSE
  494. DO:
  495. IF Aufze.Rab_Betr < 0 THEN xRabText = cZusText.
  496. IF Aufze.Rab_Betr > 0 THEN xRabText = cRabText.
  497. END.
  498. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
  499. IF Aufze.Rab_Art = 1 THEN cString = STRING(nRabWert,"->9.9%").
  500. IF Aufze.Rab_Art = 2 OR
  501. Aufze.Rab_Art = 3 THEN cString = STRING(nRabWert,"-9.99").
  502. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ).
  503. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Aufze.Rab_Betr,"->>>,>>9.99")) ).
  504. END.
  505. DO WHILE TRUE:
  506. IF Aufze.Zus_Betr = 0 THEN LEAVE.
  507. iArtZeile = iArtZeile + 1.
  508. nRabWert = ABSOLUTE(Aufze.Zus_Wert).
  509. IF Aufze.Zus_Art = 3 THEN xRabText = cEpzText.
  510. ELSE
  511. DO:
  512. IF Aufze.Zus_Betr < 0 THEN xRabText = cRabText.
  513. IF Aufze.Zus_Betr > 0 THEN xRabText = cZusText.
  514. END.
  515. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', TRIM(xRabText) ).
  516. IF Aufze.Zus_Art = 1 THEN cString = STRING(nRabWert,"->9.9%").
  517. IF Aufze.Zus_Art = 2 OR
  518. Aufze.Zus_Art = 3 THEN cString = STRING(nRabWert,"-9.99").
  519. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Preis', cString ).
  520. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(+ Aufze.Zus_Betr,"->>>,>>9.99")) ).
  521. LEAVE.
  522. END.
  523. /* ---- Summengruppen-Total -------------------------------------------- */
  524. IF Aufze.Rab_Su_Grp <> 0 THEN
  525. DO:
  526. FIND FIRST tRabSumm WHERE tRabSumm.Rab_Summ = Aufze.Rab_Su_Grp NO-ERROR.
  527. IF AVAILABLE tRabSumm THEN
  528. DO:
  529. tRabSumm.Auf_Rab = tRabSumm.Auf_Rab + Aufze.Auf_Rab.
  530. tRabSumm.Abh_Rab = tRabSumm.Abh_Rab + Aufze.Abh_Rab.
  531. END.
  532. END.
  533. /* ---- Warengruppen-Totale -------------------------------------------- */
  534. FIND FIRST tUmsGrp
  535. WHERE tUmsGrp.Ums_Grp = Artst.Wg_Grp
  536. AND tUmsGrp.MWst = Aufze.WuCd
  537. AND tUmsGrp.Ansatz = Aufze.Mwst% NO-ERROR.
  538. IF NOT AVAILABLE tUmsGrp THEN
  539. DO:
  540. FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
  541. WHERE WarenGrp.Firma = cFirma
  542. AND WarenGrp.Wgr = Artst.Wg_Grp NO-ERROR.
  543. CREATE tUmsGrp.
  544. ASSIGN
  545. tUmsGrp.Ums_Grp = Artst.Wg_Grp
  546. tUmsGrp.Mwst = Aufze.WuCd
  547. tUmsGrp.lInkl = Aufze.Mwst_Inkl
  548. tUmsGrp.Ansatz = Aufze.MWST%.
  549. IF AVAILABLE WarenGrp THEN tUmsGrp.Bez = WarenGrp.Bez1.
  550. ELSE tUmsGrp.Bez = "??????????".
  551. END.
  552. tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr
  553. + Aufze.Net_Betr
  554. - Aufze.Auf_Rab
  555. - Aufze.Abh_Rab
  556. - Aufze.Auf_Sp_Rab.
  557. END PROCEDURE.
  558. /* _UIB-CODE-BLOCK-END */
  559. &ANALYZE-RESUME
  560. &ENDIF
  561. &IF DEFINED(EXCLUDE-AUFTRAG_ERMITTELN) = 0 &THEN
  562. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAG_ERMITTELN Procedure
  563. PROCEDURE AUFTRAG_ERMITTELN :
  564. /*------------------------------------------------------------------------------
  565. Purpose:
  566. Parameters: <none>
  567. Notes:
  568. ------------------------------------------------------------------------------*/
  569. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  570. DEFINE BUFFER bDebst FOR Debst.
  571. FIND FIRST tParam.
  572. EMPTY TEMP-TABLE sAufko.
  573. /* Sammeln aller Aufträge pro Sammelnummer */
  574. FOR EACH Aufko NO-LOCK USE-INDEX Aufko-k5
  575. WHERE Aufko.Firma = tParam.cFirma
  576. AND Aufko.Fak_Art = tParam.iFakArt
  577. AND Aufko.Auf_Sta = tParam.iAufSta
  578. AND Aufko.Auf_Sta >= 4
  579. AND Aufko.Fak_Knr >= tParam.iVonKnr
  580. AND Aufko.Fak_Knr <= tParam.iBisKnr
  581. AND Aufko.Lief_Datum >= tParam.dVonDatum
  582. AND Aufko.Lief_Datum <= tParam.dBisDatum
  583. AND Aufko.Samm_Nr > 0
  584. BREAK BY Aufko.Fak_Knr
  585. BY Aufko.Samm_Nr
  586. BY Aufko.Faknr DESCENDING:
  587. IF NOT FIRST-OF ( Aufko.Samm_Nr ) THEN NEXT.
  588. IF tParam.iVerband <> 999999 THEN
  589. DO:
  590. FIND bDebst NO-LOCK
  591. WHERE bDebst.Firma = Aufko.Firma
  592. AND bDebst.Knr = Aufko.Fak_Knr NO-ERROR.
  593. IF NOT AVAILABLE bDebst THEN NEXT.
  594. IF bDebst.Verband_Grp <> tParam.iVerband THEN NEXT.
  595. RELEASE bDebst.
  596. END.
  597. CREATE sAufko.
  598. ASSIGN
  599. sAufko.cFirma = Aufko.Firma
  600. sAufko.iAufnr = Aufko.Aufnr
  601. sAufko.iFak_Knr = Aufko.Fak_Knr
  602. sAufko.iKnr = Aufko.Knr
  603. sAufko.iSamm_Nr = Aufko.Samm_Nr
  604. sAufko.iRecid = RECID(Aufko)
  605. sAufko.iFaknr = Aufko.Faknr.
  606. END.
  607. /* Alle Aufträge, die nicht in diese Auswahl passen */
  608. /* Rechnunsnummer und Gedrucktflag zurücksetzen */
  609. /* In Status 4 (Monatsrechnungen) zurück setzen */
  610. REPEAT TRANSACTION:
  611. FOR EACH sAufko.
  612. FOR EACH Aufko
  613. WHERE Aufko.Firma = sAufko.cFirma
  614. AND Aufko.Samm_Nr = sAufko.iSamm_Nr
  615. AND Aufko.Fak_Knr = sAufko.iFak_Knr:
  616. IF Aufko.Lief_Datum >= tParam.dvonDatum AND
  617. Aufko.Lief_Datum <= tParam.dbisDatum THEN NEXT.
  618. iAufnr = 0.
  619. ASSIGN
  620. Aufko.Faknr = 0
  621. Aufko.Gedruckt = FALSE.
  622. IF Aufko.Auf_Sta > 4 THEN iAufnr = Aufko.Aufnr.
  623. RELEASE Aufko.
  624. IF iAufnr > 0 THEN RUN ZURUECK ( iAufnr ).
  625. END.
  626. END.
  627. RELEASE Aufko.
  628. LEAVE.
  629. END.
  630. /* Rechnungsnummer auf alle Lieferscheine der Sammelrechnung setzen */
  631. FOR EACH sAufko
  632. WHERE sAufko.iFaknr = 0:
  633. sAufko.iFaknr = DYNAMIC-FUNCTION('createFaknr':U, sAufko.cFirma ) NO-ERROR.
  634. IF sAufko.iFaknr = 0 OR
  635. sAufko.iFaknr = ? THEN
  636. DO:
  637. MESSAGE 'Es konnten keine (nicht alle) Rechnungsnummern gelöst werden'
  638. VIEW-AS ALERT-BOX ERROR.
  639. opcResult = 'FAKNR'.
  640. RETURN NO-APPLY.
  641. END.
  642. END.
  643. REPEAT TRANSACTION:
  644. FOR EACH sAufko:
  645. FOR EACH Aufko
  646. WHERE Aufko.Firma = sAufko.cFirma
  647. AND Aufko.Samm_Nr = sAufko.iSamm_Nr
  648. AND Aufko.Fak_Knr = sAufko.iFak_Knr
  649. AND Aufko.Lief_Datum >= tParam.dvonDatum
  650. AND Aufko.Lief_Datum <= tParam.dbisDatum:
  651. ASSIGN
  652. Aufko.Faknr = sAufko.iFaknr
  653. Aufko.Fak_Datum = tParam.dFakDat.
  654. RELEASE Aufko.
  655. END.
  656. END.
  657. LEAVE.
  658. END.
  659. /* Alle Auftragstotale aller Lieferscheine neu rechnen */
  660. FOR EACH sAufko:
  661. FOR EACH bAufko NO-LOCK
  662. WHERE bAufko.Firma = sAufko.cFirma
  663. AND bAufko.Samm_Nr = sAufko.iSamm_Nr
  664. AND bAufko.Fak_Knr = sAufko.iFak_Knr
  665. AND bAufko.Lief_Datum >= tParam.dvonDatum
  666. AND bAufko.Lief_Datum <= tParam.dbisDatum:
  667. DYNAMIC-FUNCTION('calculateAuftragsTotal':U, bAufko.Firma,
  668. bAufko.Aufnr,
  669. OUTPUT nTotale ) NO-ERROR.
  670. RELEASE bAufko.
  671. END.
  672. END.
  673. END PROCEDURE.
  674. /* _UIB-CODE-BLOCK-END */
  675. &ANALYZE-RESUME
  676. &ENDIF
  677. &IF DEFINED(EXCLUDE-AUSGABE_ARTIKELZEILE) = 0 &THEN
  678. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_ARTIKELZEILE Procedure
  679. PROCEDURE AUSGABE_ARTIKELZEILE :
  680. /*------------------------------------------------------------------------------
  681. Purpose:
  682. Parameters: <none>
  683. Notes:
  684. ------------------------------------------------------------------------------*/
  685. DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
  686. DEFINE VARIABLE cWerte AS CHARACTER NO-UNDO.
  687. DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
  688. FOR EACH tDokument
  689. WHERE tDokument.cGruppe = 'ArtikelZeile1'
  690. BREAK BY tDokument.cGruppe
  691. BY tDokument.iZeile:
  692. IF FIRST-OF ( tDokument.cGruppe ) THEN
  693. DO:
  694. iVPagePos = vpr_getPageVPos() + 20.
  695. RUN vpr_setPageVPos ( iVPagePos ).
  696. RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
  697. END.
  698. IF FIRST-OF ( tDokument.iZeile ) THEN
  699. DO:
  700. cZellen = ''.
  701. cWerte = ''.
  702. END.
  703. /* IF tDokument.cFeld = 'Bez1' THEN RUN vpr_Asc2RTF ( tDokument.cInhalt, '', OUTPUT tDokument.cInhalt).*/
  704. IF tDokument.cFeld = 'Bez1' THEN tDokument.cInhalt = REPLACE(tDokument.cInhalt, CHR(10), '\par ').
  705. cWerte = cWerte
  706. + tDokument.cInhalt.
  707. cZellen = cZellen
  708. + tDokument.cFeld.
  709. IF NOT LAST-OF ( tDokument.iZeile ) THEN
  710. DO:
  711. ASSIGN
  712. cWerte = cWerte + CHR(01)
  713. cZellen = cZellen + ','.
  714. NEXT.
  715. END.
  716. RUN vpr_SetDelimiter (CHR(01)).
  717. RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
  718. iVPagePos = vpr_getPageVPos().
  719. iPos = iVPagePos + vpr_getGroupHeight('ArtikelZeile1').
  720. IF iPos > iMaxPos THEN
  721. DO:
  722. RUN vpr_SetPageVPos ( iMaxPos ).
  723. RUN VIPER_NEUE_SEITE.
  724. RUN DRUCKEN_ADRESSE.
  725. iVPagePos = vpr_getPageVPos() + 20.
  726. RUN vpr_setPageVPos ( iVPagePos ).
  727. RUN vpr_setGroupText ('ArtikelZeile1', cZellen, cWerte).
  728. END.
  729. RUN vpr_FlushGroup ('ArtikelZeile1').
  730. iVPagePos = vpr_getPageVPos().
  731. IF LAST-OF ( tDokument.cGruppe ) THEN LEAVE.
  732. iVPagePos = vpr_getPageVPos().
  733. RUN vpr_setGroupVPos ( 'ArtikelZeile1', iVPagePos ).
  734. END.
  735. FOR EACH tDokument
  736. WHERE tDokument.cGruppe = 'ArtikelZeile1':
  737. DELETE tDokument.
  738. END.
  739. END PROCEDURE.
  740. /* _UIB-CODE-BLOCK-END */
  741. &ANALYZE-RESUME
  742. &ENDIF
  743. &IF DEFINED(EXCLUDE-AUSGABE_GRUPPE) = 0 &THEN
  744. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUSGABE_GRUPPE Procedure
  745. PROCEDURE AUSGABE_GRUPPE :
  746. /*------------------------------------------------------------------------------
  747. Purpose:
  748. Parameters: <none>
  749. Notes:
  750. ------------------------------------------------------------------------------*/
  751. DEFINE INPUT PARAMETER ipGruppe AS CHARACTER NO-UNDO.
  752. DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
  753. DEFINE VARIABLE cWerte AS CHARACTER NO-UNDO.
  754. DEFINE VARIABLE iSpace AS INTEGER NO-UNDO.
  755. iSpace = vpr_getPageVPos().
  756. FOR EACH tDokument NO-LOCK
  757. WHERE tDokument.cGruppe = ipGruppe
  758. BREAK BY tDokument.cGruppe
  759. BY tDokument.iZeile:
  760. IF FIRST-OF ( tDokument.iZeile ) THEN iSpace = iSpace + 40.
  761. END.
  762. IF iSpace > iMaxPos THEN
  763. DO:
  764. RUN vpr_SetPageVPos ( iMaxPos ).
  765. RUN VIPER_NEUE_SEITE.
  766. RUN DRUCKEN_ADRESSE.
  767. END.
  768. iVPagePos = vpr_getPageVPos().
  769. CASE ipGruppe:
  770. WHEN 'Gebindeabrechnung' THEN
  771. DO:
  772. iVPagePos = iVPagePos + 20.
  773. RUN vpr_setGroupVPos ( 'GebindeabrechnungTitel', iVPagePos ).
  774. RUN vpr_FlushGroup ( 'GebindeabrechnungTitel' ).
  775. iVPagePos = vpr_getPageVPos().
  776. END.
  777. OTHERWISE
  778. DO:
  779. END.
  780. END CASE.
  781. FOR EACH tDokument
  782. WHERE tDokument.cGruppe = ipGruppe
  783. BREAK BY tDokument.cGruppe
  784. BY tDokument.iZeile:
  785. IF FIRST-OF ( tDokument.cGruppe ) THEN
  786. DO:
  787. IF ipGruppe <> 'Kondition' AND
  788. ipGruppe <> 'BESR' AND
  789. ipGruppe <> 'ADRESSE' THEN
  790. DO:
  791. iVPagePos = vpr_getPageVPos().
  792. RUN vpr_setPageVPos ( iVPagePos ).
  793. RUN vpr_setGroupVPos ( ipGruppe, iVPagePos ).
  794. END.
  795. END.
  796. IF FIRST-OF ( tDokument.iZeile ) THEN
  797. DO:
  798. cZellen = ''.
  799. cWerte = ''.
  800. END.
  801. cWerte = cWerte
  802. + tDokument.cInhalt.
  803. cZellen = cZellen
  804. + tDokument.cFeld.
  805. CASE tDokument.cFeld:
  806. WHEN 'Bez1' THEN
  807. cWerte = REPLACE(cWerte, CHR(10), ' \par ').
  808. END CASE.
  809. IF NOT LAST-OF ( tDokument.iZeile ) THEN
  810. DO:
  811. ASSIGN
  812. cWerte = cWerte + CHR(01)
  813. cZellen = cZellen + ','.
  814. NEXT.
  815. END.
  816. RUN vpr_SetDelimiter (CHR(01)).
  817. RUN vpr_SetGroupText (ipGruppe, cZellen, cWerte).
  818. RUN vpr_FlushGroup (ipGruppe).
  819. END.
  820. FOR EACH tDokument
  821. WHERE tDokument.cGruppe = ipGruppe:
  822. DELETE tDokument.
  823. END.
  824. END PROCEDURE.
  825. /* _UIB-CODE-BLOCK-END */
  826. &ANALYZE-RESUME
  827. &ENDIF
  828. &IF DEFINED(EXCLUDE-DRUCKEN) = 0 &THEN
  829. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN Procedure
  830. PROCEDURE DRUCKEN :
  831. /*------------------------------------------------------------------------------
  832. Purpose:
  833. Parameters: <none>
  834. Notes:
  835. ------------------------------------------------------------------------------*/
  836. DEFINE VARIABLE xString AS CHARACTER NO-UNDO.
  837. DEFINE VARIABLE cLAdresse AS CHARACTER NO-UNDO.
  838. DEFINE VARIABLE RText AS CHARACTER NO-UNDO.
  839. DEFINE VARIABLE WText AS CHARACTER NO-UNDO.
  840. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  841. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  842. DEFINE VARIABLE nRabWert AS DECIMAL NO-UNDO.
  843. DEFINE VARIABLE iMwstCd AS INTEGER NO-UNDO.
  844. DEFINE VARIABLE nZeiTot AS DECIMAL DECIMALS 4 NO-UNDO.
  845. FIND FIRST tParam.
  846. IF tParam.lCreatePDF THEN tParam.lDokDruck = FALSE.
  847. nFakBetr = 0.
  848. IF iSeite = 0 THEN RUN VIPER_INIT.
  849. RUN DRUCKEN_KOPF.
  850. iVPagePos = vpr_getPageVPos() + 20.
  851. RUN vpr_setPageVPos ( iVPagePos ).
  852. RUN vpr_setGroupVPos( 'FetteZeile', iVPagePos ).
  853. iArtZeile = 1.
  854. RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
  855. xString = TRIM(SUBSTRING(cFormText[17],01,20)) + ' / '
  856. + TRIM(SUBSTRING(cFormText[17],21,20)) + ' '
  857. + TRIM(STRING(bAufko.Aufnr,"zzzzzzzzz9")) + ' / '
  858. + TRIM(STRING(bAufko.Lief_Datum,"99.99.9999")).
  859. iArtZeile = 2.
  860. RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', xString ).
  861. DO WHILE TRUE:
  862. lFirst = TRUE.
  863. cLAdresse = ''.
  864. IF bAufko.Knr = bAufko.Fak_Knr AND
  865. NOT FDebst.Passant THEN LEAVE.
  866. iArtZeile = iArtZeile + 1.
  867. RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
  868. DO ii = 1 TO 5:
  869. IF bAufko.Adresse[ii] = '' THEN NEXT.
  870. iArtZeile = iArtZeile + 1.
  871. RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', bAufko.Adresse[ii] ).
  872. lFirst = FALSE.
  873. END.
  874. IF NOT lFirst THEN LEAVE.
  875. IF bAufko.Knr = bAufko.Fak_Knr THEN LEAVE.
  876. FIND LAdresse NO-LOCK
  877. WHERE LAdresse.Firma = AdFirma
  878. AND LAdresse.Knr = bAufko.Knr NO-ERROR.
  879. IF NOT AVAILABLE LAdresse THEN LEAVE.
  880. DO ii = 1 TO 12:
  881. IF LAdresse.Anschrift[ii] = '' THEN NEXT.
  882. iArtZeile = iArtZeile + 1.
  883. RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', LAdresse.Anschrift[ii] ).
  884. lFirst = FALSE.
  885. END.
  886. LEAVE.
  887. END.
  888. IF NOT lFirst THEN
  889. DO:
  890. iArtZeile = iArtZeile + 1.
  891. RUN VIPER_CREATE_DOKUMENT ( 'FetteZeile', iArtZeile, 'Bez_LSText', ' ' ).
  892. END.
  893. RUN AUSGABE_GRUPPE ( 'FetteZeile' ).
  894. iArtZeile = 0.
  895. FOR EACH tAufze NO-LOCK
  896. BY tAufze.Aufnr
  897. BY tAufze.Sort1
  898. BY tAufze.LagOrt
  899. BY tAufze.Sort2
  900. BY tAufze.Pos :
  901. FIND Aufze NO-LOCK WHERE RECID(Aufze) = tAufze.Zeile.
  902. RUN ARTIKELZEILE ( RECID(tAufze) ).
  903. nFakBetr = nFakBetr + Aufze.Net_Betr.
  904. RELEASE Aufze.
  905. END.
  906. iArtZeile = iArtZeile + 1.
  907. RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[10],41,20)), 'bold', OUTPUT xString ).
  908. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
  909. RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
  910. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
  911. iArtZeile = iArtZeile + 1.
  912. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' ' ).
  913. RUN AUSGABE_ARTIKELZEILE.
  914. /* Auftragsrabatt ---------------------------------------------------- */
  915. iArtZeile = 0.
  916. FOR EACH tRabSumm
  917. WHERE tRabSumm.Auf_Rab <> 0
  918. BY tRabSumm.Rab_Summ:
  919. Rundbetr = tRabSumm.Auf_Rab.
  920. nFakBetr = nFakBetr - Rundbetr.
  921. IF Rundbetr < 0 THEN RText = cZusText.
  922. ELSE RText = cRabText.
  923. xString = RText
  924. + " "
  925. + tRabSumm.Bez.
  926. iArtZeile = iArtZeile + 1.
  927. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
  928. FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
  929. WHERE AufRabSu.Firma = bAufko.Firma
  930. AND AufRabSu.Aufnr = bAufko.Aufnr
  931. AND AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
  932. nRabWert = ABSOLUT(AufRabSu.F_Wert).
  933. IF AufRabSu.F_Proz_Betr THEN WText = "%".
  934. ELSE WText = "Fr.".
  935. xString = STRING(nRabWert,"z9.99-")
  936. + WText.
  937. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
  938. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
  939. END.
  940. /* Abholrabatt ------------------------------------------------------- */
  941. FOR EACH tRabSumm
  942. WHERE tRabSumm.Abh_Rab <> 0
  943. BY tRabSumm.Rab_Summ:
  944. Rundbetr = tRabSumm.Abh_Rab.
  945. nFakBetr = nFakBetr - Rundbetr.
  946. IF Rundbetr < 0 THEN RText = cZusText.
  947. ELSE RText = cRabText.
  948. xString = RText
  949. + " "
  950. + tRabSumm.Bez.
  951. iArtZeile = iArtZeile + 1.
  952. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
  953. FIND FIRST AufRabSu NO-LOCK USE-INDEX AufRabSu-k1
  954. WHERE AufRabSu.Firma = bAufko.Firma
  955. AND AufRabSu.Aufnr = bAufko.Aufnr
  956. AND AufRabSu.Rab_Summ = tRabSumm.Rab_Summ.
  957. nRabWert = ABSOLUT(AufRabSu.A_Wert).
  958. IF AufRabSu.A_Proz_Betr THEN WText = "%".
  959. ELSE WText = "Fr.".
  960. xString = STRING(nRabWert,"z9.99-")
  961. + WText.
  962. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
  963. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
  964. END.
  965. /* Spezialpreis-Auftragsrabatte ---------------------------------------- */
  966. FOR EACH tSpeRab WHERE tSpeRab.Auf_Betr <> 0
  967. BY tSpeRab.Rab_Grp:
  968. FIND Tabel USE-INDEX Tabel-k1
  969. WHERE Tabel.Firma = cFirma
  970. AND Tabel.RecArt = 'ARABGRP'
  971. AND Tabel.CodeC = ''
  972. AND Tabel.CodeI = tSpeRab.Rab_Grp
  973. AND Tabel.Sprcd = 1 NO-LOCK.
  974. Rundbetr = tSpeRab.Auf_Betr.
  975. nFakBetr = nFakBetr - Rundbetr.
  976. IF Rundbetr < 0 THEN RText = cZusText.
  977. ELSE RText = cRabText.
  978. xString = RText
  979. + " "
  980. + Tabel.Bez1.
  981. iArtZeile = iArtZeile + 1.
  982. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
  983. FIND FIRST AufSpRab USE-INDEX AufSpRab-k1
  984. WHERE AufSpRab.Firma = bAufko.Firma
  985. AND AufSpRab.Aufnr = bAufko.Aufnr
  986. AND AufSpRab.Rab_Grp = tSpeRab.Rab_Grp NO-LOCK.
  987. nRabWert = ABSOLUT(AufSpRab.Auf_Wert).
  988. IF AufSpRab.Auf_Proz_Betr THEN WText = "%".
  989. ELSE WText = "Fr.".
  990. xString = STRING(nRabWert,"z9.99-")
  991. + WText.
  992. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'KGebinde', xString ).
  993. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(- Rundbetr,'->>>,>>9.99')) ).
  994. END.
  995. IF iArtZeile > 0 THEN
  996. DO:
  997. iArtZeile = iArtZeile + 1.
  998. RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],21,20)), 'bold', OUTPUT xString ).
  999. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
  1000. RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
  1001. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
  1002. iArtZeile = iArtZeile + 1.
  1003. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' ' ).
  1004. END.
  1005. RUN AUSGABE_GRUPPE ('ArtikelZeile1').
  1006. /* Recycling-Gebuehren ----------------------------------------------- */
  1007. iArtZeile = 0.
  1008. FOR EACH AufGKon USE-INDEX AufGKon-k1
  1009. WHERE AufGKon.Firma = bAufko.Firma
  1010. AND AufGKon.Aufnr = bAufko.Aufnr
  1011. AND AufGKon.Gebuehr <> 0
  1012. AND AufGKon.Betrag <> 0 NO-LOCK:
  1013. FIND GebKonto OF AufGKon NO-LOCK NO-ERROR.
  1014. IF NOT AVAILABLE GebKonto THEN xString = TRIM(SUBSTRING(cFormText[11],41,20)).
  1015. ELSE xString = GebKonto.Bez.
  1016. iMwstCd = AufGKon.MWST_Cd.
  1017. nFakBetr = nFakBetr + AufGKon.Betrag.
  1018. FIND LAST MwstAns NO-LOCK
  1019. WHERE MwstAns.Mwst_Cd = iMwstCd
  1020. AND MwstAns.Datum <= bAufko.Fak_Datum NO-ERROR.
  1021. iArtZeile = iArtZeile + 1.
  1022. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1', xString ).
  1023. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', TRIM(STRING(AufGKon.Betrag,'->>>,>>9.99')) ).
  1024. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'MC', STRING(AufGKon.MWSt_Cd,'z9') ).
  1025. FIND FIRST tUmsGrp
  1026. WHERE tUmsGrp.Ums_Grp = 1000
  1027. AND tUmsGrp.Mwst = iMwstCd
  1028. AND tUmsGrp.Ansatz = MwstAns.Ansatz NO-ERROR.
  1029. IF NOT AVAILABLE tUmsGrp THEN
  1030. DO:
  1031. FIND WarenGrp USE-INDEX WarenGrp-k1
  1032. WHERE WarenGrp.Firma = cFirma
  1033. AND WarenGrp.Wgr = 1000 NO-LOCK NO-ERROR.
  1034. CREATE tUmsGrp.
  1035. ASSIGN
  1036. tUmsGrp.Ums_Grp = 1000
  1037. tUmsGrp.Mwst = iMwstCd
  1038. tUmsGrp.Ansatz = MwstAns.Ansatz
  1039. tUmsGrp.lInkl = lDebIncl
  1040. tUmsGrp.Bez = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Recyclinggebühren').
  1041. END.
  1042. tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
  1043. END.
  1044. IF iArtZeile > 0 THEN
  1045. DO:
  1046. iArtZeile = iArtZeile + 1.
  1047. RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],41,20)), 'bold', OUTPUT xString ).
  1048. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
  1049. RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,'->>>,>>9.99')), 'bold', OUTPUT xString ).
  1050. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
  1051. iArtZeile = iArtZeile + 1.
  1052. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' ' ).
  1053. END.
  1054. RELEASE AufGKon.
  1055. RUN AUSGABE_GRUPPE ('ArtikelZeile1').
  1056. /* Gebindelieferungen ------------------------------------------------ */
  1057. nZeiTot = 0.
  1058. iArtZeile = 0.
  1059. FOR EACH AufGKon USE-INDEX AufGKon-k1
  1060. WHERE AufGKon.Firma = bAufko.Firma
  1061. AND AufGKon.Aufnr = bAufko.Aufnr
  1062. AND AufGKon.Depot <> 0
  1063. AND (AufGKon.Eingang <> 0 OR
  1064. AufGKon.Ausgang <> 0) NO-LOCK:
  1065. iMwstCd = AufGKon.MWSt_Cd.
  1066. FIND LAST MwstAns NO-LOCK
  1067. WHERE MwstAns.Mwst_Cd = iMwstCd
  1068. AND MwstAns.Datum <= bAufko.Fak_Datum NO-ERROR.
  1069. FIND FIRST tUmsGrp
  1070. WHERE tUmsGrp.Ums_Grp = 1001
  1071. AND tUmsGrp.Mwst = iMwstCd
  1072. AND tUmsGrp.Ansatz = MwstAns.Ansatz NO-ERROR.
  1073. IF NOT AVAILABLE tUmsGrp THEN
  1074. DO:
  1075. FIND WarenGrp NO-LOCK USE-INDEX WarenGrp-k1
  1076. WHERE WarenGrp.Firma = cFirma
  1077. AND WarenGrp.Wgr = 1001 NO-ERROR.
  1078. CREATE tUmsGrp.
  1079. ASSIGN
  1080. tUmsGrp.Ums_Grp = 1001
  1081. tUmsGrp.Mwst = iMwstCd
  1082. tUmsGrp.Ansatz = MwstAns.Ansatz
  1083. tUmsGrp.lInkl = lDebIncl
  1084. tUmsGrp.Bez = (IF AVAILABLE WarenGrp THEN WarenGrp.Bez1 ELSE 'Gebindesaldo').
  1085. END.
  1086. tUmsGrp.Ums_Betr = tUmsGrp.Ums_Betr + AufGKon.Betrag.
  1087. FIND GebKonto NO-LOCK USE-INDEX GebKonto-k1
  1088. WHERE GebKonto.Firma = cFirma
  1089. AND GebKonto.Geb_Cd = AufGKon.Geb_Cd.
  1090. i1 = AufGKon.Ausgang - AufGKon.Eingang.
  1091. Rundbetr = AufGKon.Betrag.
  1092. nZeiTot = nZeiTot + Rundbetr.
  1093. iArtZeile = iArtZeile + 1.
  1094. RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'Gebindetext' , GebKonto.Bez ).
  1095. RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeGel' , TRIM(STRING(AufGKon.Ausgang,"->>,>>9")) ).
  1096. RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeRet' , TRIM(STRING(AufGKon.Eingang,"->>,>>9")) ).
  1097. RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeSaldo', TRIM(STRING(i1 ,"->>,>>9")) ).
  1098. RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeBetr' , TRIM(STRING(Rundbetr ,"->>,>>9.99")) ).
  1099. END.
  1100. IF iArtZeile > 0 THEN RUN VIPER_CREATE_DOKUMENT ( 'Gebindeabrechnung', iArtZeile, 'GebindeTot' , TRIM(STRING(nZeiTot,"->>,>>9.99")) ).
  1101. nFakBetr = nFakBetr + nZeiTot.
  1102. IF iArtZeile > 0 THEN RUN AUSGABE_GRUPPE ('Gebindeabrechnung').
  1103. FIND FIRST tTotale.
  1104. DO ii = 1 TO 12:
  1105. tTotale.nMwstPfl[ii] = tTotale.nMwstPfl[ii] + bAufko.Wpfl[ii].
  1106. tTotale.nMwstBet[ii] = tTotale.nMwstBet[ii] + bAufko.Wust[ii].
  1107. END.
  1108. tTotale.nSammTot = tTotale.nSammTot + nFakBetr.
  1109. tTotale.nSkBer = tTotale.nSkBer + bAufko.Sk_Ber.
  1110. iArtZeile = 1.
  1111. RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],21,20)), 'bold', OUTPUT xString ).
  1112. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
  1113. RUN vpr_Asc2RTF(TRIM(STRING(nFakBetr,"->>>,>>9.99")), 'bold', OUTPUT xString ).
  1114. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
  1115. IF lLast THEN
  1116. DO:
  1117. iArtZeile = iArtZeile + 1.
  1118. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' ' ).
  1119. iArtZeile = iArtZeile + 1.
  1120. RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[14],01,20)), 'bold', OUTPUT xString ).
  1121. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , xString ).
  1122. RUN vpr_Asc2RTF(TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")), 'bold', OUTPUT xString ).
  1123. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Betrag', xString ).
  1124. END.
  1125. iArtZeile = iArtZeile + 1.
  1126. RUN VIPER_CREATE_DOKUMENT ( 'ArtikelZeile1', iArtZeile, 'Bez1' , ' ' ).
  1127. RUN AUSGABE_GRUPPE ( 'ArtikelZeile1' ).
  1128. IF lLast THEN RUN DRUCKEN_ENDE.
  1129. END PROCEDURE.
  1130. /* _UIB-CODE-BLOCK-END */
  1131. &ANALYZE-RESUME
  1132. &ENDIF
  1133. &IF DEFINED(EXCLUDE-DRUCKEN_ADRESSE) = 0 &THEN
  1134. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ADRESSE Procedure
  1135. PROCEDURE DRUCKEN_ADRESSE :
  1136. /*------------------------------------------------------------------------------
  1137. Purpose:
  1138. Parameters: <none>
  1139. Notes:
  1140. ------------------------------------------------------------------------------*/
  1141. DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
  1142. DEFINE VARIABLE cWerte AS CHARACTER NO-UNDO.
  1143. FIND FIRST tParam.
  1144. FIND FIRST tDokument
  1145. WHERE tDokument.cGruppe = 'KOPF'
  1146. AND tDokument.iZeile = 1
  1147. AND tDokument.cFeld = 'Seite' NO-ERROR.
  1148. IF NOT AVAILABLE tDokument THEN
  1149. DO:
  1150. CREATE tDokument.
  1151. ASSIGN
  1152. tDokument.cGruppe = 'KOPF'
  1153. tDokument.iZeile = 1
  1154. tDokument.cFeld = 'Seite'.
  1155. END.
  1156. tDokument.cInhalt = STRING(iSeite,'z9').
  1157. cZellen = ''.
  1158. cWerte = ''.
  1159. FOR EACH tDokument
  1160. WHERE tDokument.cGruppe = 'Kopf'
  1161. BREAK BY tDokument.cGruppe
  1162. BY tDokument.cFeld:
  1163. cWerte = cWerte
  1164. + tDokument.cInhalt.
  1165. cZellen = cZellen
  1166. + tDokument.cFeld.
  1167. IF NOT LAST-OF ( tDokument.cGruppe ) THEN ASSIGN cWerte = cWerte + CHR(01)
  1168. cZellen = cZellen + ','.
  1169. END.
  1170. RUN vpr_SetDelimiter (CHR(01)).
  1171. RUN vpr_setGroupText ('Kopf', cZellen, cWerte).
  1172. RUN vpr_FlushGroup ('Kopf').
  1173. RUN vpr_FlushGroup ('Ueberschrift').
  1174. iVPagePos = vpr_getPageVPos() + 20.
  1175. RUN vpr_setPageVPos ( iVPagePos ).
  1176. END PROCEDURE.
  1177. /* _UIB-CODE-BLOCK-END */
  1178. &ANALYZE-RESUME
  1179. &ENDIF
  1180. &IF DEFINED(EXCLUDE-DRUCKEN_BESR) = 0 &THEN
  1181. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_BESR Procedure
  1182. PROCEDURE DRUCKEN_BESR :
  1183. /*------------------------------------------------------------------------------
  1184. Purpose:
  1185. Parameters: <none>
  1186. Notes:
  1187. ------------------------------------------------------------------------------*/
  1188. DEFINE INPUT PARAMETER ipDokument AS CHARACTER NO-UNDO.
  1189. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  1190. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  1191. DEFINE VARIABLE cFeld AS CHARACTER NO-UNDO.
  1192. DEFINE VARIABLE cInhalt AS CHARACTER NO-UNDO.
  1193. DEFINE VARIABLE cVorlage AS CHARACTER NO-UNDO.
  1194. DEFINE VARIABLE iKopfZeile AS INTEGER NO-UNDO.
  1195. DEFINE VARIABLE PZBetrag AS CHARACTER NO-UNDO.
  1196. DEFINE VARIABLE PZReferenz AS CHARACTER NO-UNDO.
  1197. DEFINE VARIABLE PZTNNummer AS CHARACTER NO-UNDO.
  1198. DEFINE VARIABLE cReferenz AS CHARACTER NO-UNDO.
  1199. FIND FIRST tParam.
  1200. /* IF Rundbetr < 0 THEN RETURN. */
  1201. RUN vpr_NewPage.
  1202. cVorlage = tParam.cInstall + '/' + ipDokument + '.vfr'.
  1203. RUN vpr_LoadVFR (cVorlage).
  1204. RUN vpr_ActivateReport (ipDokument).
  1205. RUN vpr_setPrinterAttrib("duplex=1").
  1206. RUN vpr_SetDocAttrib ("PAPERSIZE=A4").
  1207. RUN vpr_SetPrinterAttrib("copies=1").
  1208. RUN vpr_InitGroups ("").
  1209. IF tParam.lCreatePDF THEN RUN vpr_initGraphObj.
  1210. IF tParam.Schacht_Besr > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Besr ).
  1211. RUN vpr_SetGroupAttrib ("ADRESSE", "Fixed=true").
  1212. RUN vpr_SetGroupAttrib ("BESR" , "Fixed=true").
  1213. FIND Adresse NO-LOCK USE-INDEX Adresse-k1
  1214. WHERE Adresse.Firma = AdFirma
  1215. AND Adresse.Knr = bAufko.Fak_Knr NO-ERROR.
  1216. iKopfZeile = 1.
  1217. cBesrKopf = ''.
  1218. IF bAufko.Adresse[05] <> '' THEN
  1219. DO:
  1220. i1 = 6.
  1221. DO ix = 1 TO 5:
  1222. /* CREATE tDokument. */
  1223. /* ASSIGN tDokument.cGruppe = 'ADRESSE' */
  1224. /* tDokument.iZeile = 1 */
  1225. /* tDokument.cFeld = 'Adresse_' + STRING((6 + ix),'99') */
  1226. /* tDokument.cInhalt = bAufko.Adresse[ix]. */
  1227. i1 = i1 + 1.
  1228. cBesrKopf[i1] = bAufko.Adresse[ix].
  1229. END.
  1230. END.
  1231. ELSE
  1232. DO:
  1233. DO ix = 6 TO 11:
  1234. /* CREATE tDokument. */
  1235. /* ASSIGN tDokument.cGruppe = 'ADRESSE' */
  1236. /* tDokument.iZeile = 1 */
  1237. /* tDokument.cFeld = 'Adresse_' + STRING(ix,'99') */
  1238. /* tDokument.cInhalt = Adresse.Anschrift[ix]. */
  1239. cBesrKopf[ix] = Adresse.Anschrift[ix].
  1240. END.
  1241. END.
  1242. DO ix = 6 TO 11:
  1243. CREATE tDokument.
  1244. ASSIGN
  1245. tDokument.cGruppe = 'BESR'
  1246. tDokument.iZeile = 1
  1247. tDokument.cFeld = 'Adresse_R_' + STRING(ix,'99')
  1248. tDokument.cInhalt = cBesrKopf[ix].
  1249. IF ix < 7 THEN NEXT.
  1250. CREATE tDokument.
  1251. ASSIGN
  1252. tDokument.cGruppe = 'BESR'
  1253. tDokument.iZeile = 1
  1254. tDokument.cFeld = 'Adresse_L_' + STRING(ix,'99')
  1255. tDokument.cInhalt = cBesrKopf[ix].
  1256. END.
  1257. IF Rundbetr > 0.00 THEN
  1258. DO:
  1259. cFeld = STRING(Rundbetr,'zzzzzz9.99').
  1260. cFeld = REPLACE(cFeld, '.', ' ').
  1261. cFeld = STRING(cFeld,'X X X X X X X X X X').
  1262. END.
  1263. ELSE cFeld = ''.
  1264. RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_L', cFeld ).
  1265. RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Betrag_R', cFeld ).
  1266. IF Rundbetr > 0 THEN PZBetrag = '01' + STRING(Rundbetr * 100,'9999999999 ').
  1267. ELSE PZBetrag = ' 04 '.
  1268. PZReferenz = '00000000000'
  1269. + STRING(bAufko.Fak_Knr,'999999')
  1270. + STRING(bAufko.Faknr ,'9999999')
  1271. + '00'.
  1272. PZTNNummer = '01036226'.
  1273. RUN PRUEFZIFFER ( INPUT-OUTPUT PZBetrag, INPUT-OUTPUT PZReferenz, INPUT-OUTPUT PZTNNummer, OUTPUT cReferenz ).
  1274. RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_OCRB', cReferenz ).
  1275. RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_R', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
  1276. RUN VIPER_CREATE_DOKUMENT ( 'BESR', iKopfZeile, 'Referenz_L', STRING(PZReferenz,'XX XXXXX XXXXX XXXXX XXXXX XXXXX') ).
  1277. RUN AUSGABE_GRUPPE ( 'ADRESSE' ).
  1278. RUN AUSGABE_GRUPPE ( 'BESR' ).
  1279. END PROCEDURE.
  1280. /* _UIB-CODE-BLOCK-END */
  1281. &ANALYZE-RESUME
  1282. &ENDIF
  1283. &IF DEFINED(EXCLUDE-DRUCKEN_ENDE) = 0 &THEN
  1284. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_ENDE Procedure
  1285. PROCEDURE DRUCKEN_ENDE :
  1286. /*------------------------------------------------------------------------------
  1287. Purpose:
  1288. Parameters: <none>
  1289. Notes:
  1290. ------------------------------------------------------------------------------*/
  1291. DEFINE VARIABLE cPDFName AS CHARACTER INIT '' NO-UNDO.
  1292. DEFINE VARIABLE iSpace AS INTEGER INIT 0 NO-UNDO.
  1293. DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
  1294. DEFINE VARIABLE iKopie AS INTEGER NO-UNDO.
  1295. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  1296. DEFINE VARIABLE lJa AS LOG NO-UNDO.
  1297. DEFINE VARIABLE nNetto AS DECIMAL NO-UNDO.
  1298. DEFINE VARIABLE nMwst AS DECIMAL NO-UNDO.
  1299. DEFINE VARIABLE nBrutto AS DECIMAL NO-UNDO.
  1300. DEFINE VARIABLE nTNetto AS DECIMAL NO-UNDO.
  1301. DEFINE VARIABLE nTMwst AS DECIMAL NO-UNDO.
  1302. DEFINE VARIABLE nTBrutto AS DECIMAL NO-UNDO.
  1303. DEFINE VARIABLE cText AS CHARACTER NO-UNDO.
  1304. FIND FIRST tParam.
  1305. FIND FIRST tTotale.
  1306. iPos = vpr_getPageVPos().
  1307. iArtZeile = 1.
  1308. iSpace = iSpace + 40.
  1309. iMaxPos = 2650.
  1310. RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile, 'MwstBez' , ' ' ).
  1311. FIND FIRST tTotale.
  1312. DO ix = 1 TO 11:
  1313. IF tTotale.nMwstPfl[ix] = 0 THEN NEXT.
  1314. tTotale.nSammTot = tTotale.nSammTot + tTotale.nMwstBet[ix].
  1315. FIND LAST MWSTAns USE-INDEX MWSTAns-k1
  1316. WHERE MWSTAns.MWST_Cd = ix
  1317. AND MWSTAns.Datum <= bAufko.Kond_Datum NO-LOCK.
  1318. iArtZeile = iArtZeile + 1.
  1319. iSpace = iSpace + 40.
  1320. RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile, 'MwstBez' , MWStAns.Bez ).
  1321. RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile, 'MwstPfl' , TRIM(STRING(tTotale.nMwstPfl[ix],"->>,>>9.99")) ).
  1322. RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile, 'MwstBetr', TRIM(STRING(tTotale.nMwstBet[ix],"->>>,>>9.99")) ).
  1323. RUN VIPER_CREATE_DOKUMENT ( 'Mehrwertsteuer', iArtZeile, 'MwstCd' , TRIM(STRING(ix ,">>9")) ).
  1324. END.
  1325. IF (iSpace + iPos + 80) >= iMaxPos THEN
  1326. DO:
  1327. RUN vpr_SetPageVPos ( iMaxPos ).
  1328. RUN VIPER_NEUE_SEITE.
  1329. RUN DRUCKEN_ADRESSE.
  1330. END.
  1331. RUN AUSGABE_GRUPPE ( 'Mehrwertsteuer' ).
  1332. Rundbetr = tTotale.nSammTot.
  1333. Rundcode = 1.
  1334. RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
  1335. tTotale.nSammTot = Rundbetr.
  1336. iArtZeile = 1.
  1337. RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , TRIM(STRING(tTotale.nSammTot,"->,>>>,>>9.99")) ).
  1338. iArtZeile = 2.
  1339. RUN VIPER_CREATE_DOKUMENT ( 'RechnungsTotal', iArtZeile, 'EndBetrag' , '' ).
  1340. RUN AUSGABE_GRUPPE ( 'RechnungsTotal' ).
  1341. /* ------ Umsatzverteilung ------------------------------------------------ */
  1342. iArtZeile = 1.
  1343. RUN vpr_Asc2RTF(TRIM(SUBSTRING(cFormText[15],41,20)), 'bold', OUTPUT cText).
  1344. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Umsatzgruppe' , cText ).
  1345. ASSIGN
  1346. nTNetto = 0
  1347. nTMwst = 0
  1348. nTBrutto = 0.
  1349. FOR EACH TUmsGrp NO-LOCK
  1350. BY TUmsGrp.Ums_Grp
  1351. BY TUmsGrp.Mwst :
  1352. IF tUmsGrp.lInkl THEN
  1353. DO:
  1354. nNetto = tUmsGrp.Ums_Betr * 100 / (100 + tUmsGrp.Ansatz).
  1355. nBrutto = tUmsGrp.Ums_Betr.
  1356. nMwst = nBrutto - nNetto.
  1357. END.
  1358. ELSE
  1359. DO:
  1360. nNetto = tUmsGrp.Ums_Betr.
  1361. nBrutto = tUmsGrp.Ums_Betr * (100 + tUmsGrp.Ansatz) / 100.
  1362. nMwst = nBrutto - nNetto.
  1363. END.
  1364. ASSIGN
  1365. nTNetto = nTNetto + nNetto
  1366. nTMwst = nTMwst + nMwst
  1367. nTBrutto = nTBrutto + nBrutto.
  1368. iArtZeile = iArtZeile + 1.
  1369. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Umsatzgruppe' , TUmsGrp.Bez ).
  1370. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Frw' , BSteuer.Fwc03 ).
  1371. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Netto' , TRIM(STRING(nNetto ,"->>>,>>9.99")) ).
  1372. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Ansatz' , TRIM(STRING(TUmsGrp.Ansatz,">9.99%")) ).
  1373. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Mwst' , TRIM(STRING(nMwst ,"->>>,>>9.99")) ).
  1374. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Brutto' , TRIM(STRING(nBrutto ,"->>>,>>9.99")) ).
  1375. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'MC' , TRIM(STRING(tUmsGrp.Mwst ,"z9")) ).
  1376. END.
  1377. iArtZeile = iArtZeile + 1.
  1378. RUN vpr_Asc2RTF('Total', 'bold', OUTPUT cText).
  1379. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Umsatzgruppe' , cText ).
  1380. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Netto' , TRIM(STRING(nTNetto ,"->>>,>>9.99")) ).
  1381. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Mwst' , TRIM(STRING(nTMwst ,"->>>,>>9.99")) ).
  1382. RUN VIPER_CREATE_DOKUMENT ( 'Umsatzverteilung', iArtZeile, 'Brutto' , TRIM(STRING(nTBrutto,"->>>,>>9.99")) ).
  1383. ix = DYNAMIC-FUNCTION('calcBlock':U, 'Umsatzverteilung' )
  1384. + 30
  1385. + vpr_getPageVPos().
  1386. IF ix >= iMaxPos THEN
  1387. DO:
  1388. RUN vpr_setPageVPos ( iMaxPos ).
  1389. RUN VIPER_NEUE_SEITE.
  1390. RUN DRUCKEN_ADRESSE.
  1391. END.
  1392. RUN AUSGABE_GRUPPE ( 'Umsatzverteilung' ).
  1393. /* Zahlungskondition ------------------------------------------------- */
  1394. FIND Kondi NO-LOCK USE-INDEX Kondi-k1
  1395. WHERE Kondi.Kond = bAufko.Kond
  1396. AND Kondi.Sprcd = iSprcd NO-ERROR.
  1397. IF AVAILABLE Kondi THEN
  1398. DO:
  1399. iArtZeile = 1.
  1400. RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile, 'Zahkond', Kondi.KoText ).
  1401. RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile, 'Faellig', STRING((dFakDatum + Kondi.Faellig),"99.99.9999") ).
  1402. IF Kondi.Skonto[01] <> 0 THEN
  1403. DO:
  1404. Rundbetr = tTotale.nSkBer * Kondi.Skonto[01] / 100.
  1405. Rundcode = 1.
  1406. RUN RUNDEN ( Rundcode, INPUT-OUTPUT Rundbetr ).
  1407. RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile, 'Skonto', TRIM(STRING(Rundbetr,"->>>,>>9.99")) ).
  1408. END.
  1409. END.
  1410. ELSE
  1411. DO:
  1412. iArtZeile = 1.
  1413. RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile, 'Zahkond', FILL('?', 29) ).
  1414. END.
  1415. RUN VIPER_CREATE_DOKUMENT ( 'Kondition', iArtZeile, 'Netto', TRIM(STRING(tTotale.nSammTot,"->>>,>>9.99")) ).
  1416. RUN AUSGABE_GRUPPE ( 'Kondition' ).
  1417. nFakBetr = tTotale.nSammTot.
  1418. IF nFakBetr = 0 THEN Rundbetr = -1.
  1419. ELSE Rundbetr = nFakBetr.
  1420. IF AVAILABLE Kondi AND
  1421. Kondi.Skonto[01] <> 0 THEN Rundbetr = 0.
  1422. /* Abschluss und Druck ----------------------------------------------- */
  1423. IF iLauf < iAnzDok THEN
  1424. DO:
  1425. RUN vpr_EndDoc.
  1426. IF tParam.lDokDruck THEN RUN vpr_printDoc (0, 0).
  1427. RETURN.
  1428. END.
  1429. IF nFakBetr > 0 THEN RUN DRUCKEN_QRCODE.
  1430. /* ------------------------------------------------------ */
  1431. /* Druckausgabe */
  1432. /* ------------------------------------------------------ */
  1433. RUN vpr_EndDoc.
  1434. cvpr_Dokument = SUBSTITUTE('&1-&2_&3.vpr',
  1435. STRING(bAufko.Knr ,'999999'),
  1436. STRING(bAufko.Faknr,'9999999'),
  1437. tParam.cDokument).
  1438. cvpr_Dokument = SUBSTITUTE(cERPDokumente, cInstallation, 'Rechnungen', cvpr_Dokument).
  1439. RUN vpr_SaveDoc ( cvpr_Dokument ).
  1440. DO WHILE tParam.lDokDruck:
  1441. SESSION:PRINTER-NAME = tParam.Drucker NO-ERROR.
  1442. IF SESSION:PRINTER-NAME <> tParam.Drucker THEN
  1443. DO:
  1444. RUN vpr_printerDialog ( OUTPUT lJa ).
  1445. IF NOT lJa THEN LEAVE.
  1446. END.
  1447. RUN vpr_printDoc (0, 0).
  1448. LEAVE.
  1449. END.
  1450. IF tParam.lCreatePDF THEN
  1451. DO:
  1452. cPDFName = REPLACE(cvpr_Dokument, '.vpr', '.pdf').
  1453. RUN vpr_printPDF (0, 0, INPUT-OUTPUT cPDFName ).
  1454. END.
  1455. IF tParam.lOpenPDF THEN
  1456. DO:
  1457. DEFINE VARIABLE o-i AS i NO-UNDO.
  1458. FILE-INFO:FILE-NAME = cPDFName.
  1459. cPDFName = FILE-INFO:FULL-PATHNAME.
  1460. RUN shellExecuteA (0,
  1461. "open",
  1462. cPDFName,
  1463. "",
  1464. "",
  1465. 0,
  1466. OUTPUT o-i).
  1467. END.
  1468. END PROCEDURE.
  1469. /* _UIB-CODE-BLOCK-END */
  1470. &ANALYZE-RESUME
  1471. &ENDIF
  1472. &IF DEFINED(EXCLUDE-DRUCKEN_KOPF) = 0 &THEN
  1473. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKEN_KOPF Procedure
  1474. PROCEDURE DRUCKEN_KOPF :
  1475. /*------------------------------------------------------------------------------
  1476. Purpose:
  1477. Parameters: <none>
  1478. Notes:
  1479. ------------------------------------------------------------------------------*/
  1480. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  1481. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  1482. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  1483. DEFINE VARIABLE iOldSeite AS INTEGER NO-UNDO.
  1484. FIND FIRST tParam.
  1485. iOldSeite = iSeite.
  1486. RUN VIPER_NEUE_SEITE.
  1487. IF iSeite = 1 THEN
  1488. DO:
  1489. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = cFirma.
  1490. cBesrKopf = ''.
  1491. IF bAufko.Adresse[05] <> '' THEN
  1492. DO:
  1493. i1 = 6.
  1494. DO ii = 1 TO 5:
  1495. CREATE tDokument.
  1496. ASSIGN
  1497. tDokument.cGruppe = 'KOPF'
  1498. tDokument.iZeile = 1
  1499. tDokument.cFeld = 'Adresse_' + STRING((6 + ii),'99')
  1500. tDokument.cInhalt = bAufko.Adresse[ii].
  1501. i1 = i1 + 1.
  1502. cBesrKopf[i1] = bAufko.Adresse[ii].
  1503. END.
  1504. END.
  1505. ELSE
  1506. DO:
  1507. DO ii = 5 TO 11:
  1508. CREATE tDokument.
  1509. ASSIGN
  1510. tDokument.cGruppe = 'KOPF'
  1511. tDokument.iZeile = 1
  1512. tDokument.cFeld = 'Adresse_' + STRING(ii,'99')
  1513. tDokument.cInhalt = bAdresse.Anschrift[ii].
  1514. cBesrKopf[ii] = bAdresse.Anschrift[ii].
  1515. END.
  1516. END.
  1517. CREATE tDokument.
  1518. ASSIGN
  1519. tDokument.cGruppe = 'KOPF'
  1520. tDokument.iZeile = 1
  1521. tDokument.cFeld = 'Ort_Datum'
  1522. tDokument.cInhalt = TRIM(SUBSTRING(cFormText[07],01,20))
  1523. + " "
  1524. + STRING(dFakDatum,"99.99.9999").
  1525. cString = (IF bAufko.Auf_Tot >= 0
  1526. THEN TRIM(SUBSTRING(cFormText[02],01,20))
  1527. ELSE TRIM(SUBSTRING(cFormText[02],21,20))).
  1528. cString = cString
  1529. + ' '
  1530. + TRIM(STRING(bAufko.Faknr,'>>>>>>9')).
  1531. CREATE tDokument.
  1532. ASSIGN
  1533. tDokument.cGruppe = 'KOPF'
  1534. tDokument.iZeile = 1
  1535. tDokument.cFeld = 'T_Dokument'
  1536. tDokument.cInhalt = cString.
  1537. /* CREATE tDokument. */
  1538. /* ASSIGN tDokument.cGruppe = 'KOPF' */
  1539. /* tDokument.iZeile = 1 */
  1540. /* tDokument.cFeld = 'T_Dokument' */
  1541. /* tDokument.cInhalt = (IF bAufko.Auf_Tot >= 0 */
  1542. /* THEN TRIM(SUBSTRING(cFormText[02],01,20)) */
  1543. /* ELSE TRIM(SUBSTRING(cFormText[02],21,20))). */
  1544. /* */
  1545. /* CREATE tDokument. */
  1546. /* ASSIGN tDokument.cGruppe = 'KOPF' */
  1547. /* tDokument.iZeile = 1 */
  1548. /* tDokument.cFeld = 'Aufnr' */
  1549. /* tDokument.cInhalt = STRING(bAufko.Faknr,'z999999'). */
  1550. CREATE tDokument.
  1551. ASSIGN
  1552. tDokument.cGruppe = 'KOPF'
  1553. tDokument.iZeile = 1
  1554. tDokument.cFeld = 'Knr'
  1555. tDokument.cInhalt = STRING(bAufko.Fak_Knr,'999999').
  1556. END.
  1557. IF iSeite > iOldSeite THEN RUN DRUCKEN_ADRESSE.
  1558. END PROCEDURE.
  1559. /* _UIB-CODE-BLOCK-END */
  1560. &ANALYZE-RESUME
  1561. &ENDIF
  1562. &IF DEFINED(EXCLUDE-FUELLEN_tAufze) = 0 &THEN
  1563. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tAufze Procedure
  1564. PROCEDURE FUELLEN_tAufze :
  1565. /*------------------------------------------------------------------------------
  1566. Purpose:
  1567. Parameters: <none>
  1568. Notes:
  1569. ------------------------------------------------------------------------------*/
  1570. DEFINE INPUT PARAMETER ipAufnr AS INTEGER NO-UNDO.
  1571. DEFINE VARIABLE minPos AS INTEGER NO-UNDO.
  1572. DEFINE VARIABLE maxPos AS INTEGER NO-UNDO.
  1573. DEFINE VARIABLE jPlatz AS INTEGER NO-UNDO.
  1574. DEFINE VARIABLE cLagOrt AS CHARACTER NO-UNDO.
  1575. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  1576. DEFINE VARIABLE iPlusMinus AS INTEGER NO-UNDO.
  1577. DEFINE VARIABLE lArtikel AS LOG NO-UNDO.
  1578. DEFINE VARIABLE cSort AS CHARACTER NO-UNDO.
  1579. EMPTY TEMP-TABLE tAufze.
  1580. FIND Steuer NO-LOCK
  1581. WHERE Steuer.Firma = cFirma NO-ERROR.
  1582. IF AVAILABLE Steuer THEN iRuestArt = Steuer.RuestArt.
  1583. ASSIGN
  1584. minPos = 0
  1585. maxPos = 9999
  1586. iPlusMinus = 0.
  1587. /* Kommentar zu Beginn eines Auftrages */
  1588. lArtikel = FALSE.
  1589. FOR EACH Aufze NO-LOCK
  1590. WHERE Aufze.Firma = cFirma
  1591. AND Aufze.Aufnr = ipAufnr
  1592. AND Aufze.Pos > minPos:
  1593. IF Aufze.Artnr > 0 THEN
  1594. DO:
  1595. lArtikel = TRUE.
  1596. LEAVE.
  1597. END.
  1598. minPos = Aufze.Pos.
  1599. CREATE tAufze.
  1600. ASSIGN
  1601. tAufze.Aufnr = Aufze.Aufnr
  1602. tAufze.Artnr = Aufze.Artnr
  1603. tAufze.Inhalt = Aufze.Inhalt
  1604. tAufze.Jahr = Aufze.Jahr
  1605. tAufze.Pos = Aufze.Pos
  1606. tAufze.Zeile = RECID(Aufze)
  1607. tAufze.Aktion = Aufze.Aktion
  1608. tAufze.Preis = Aufze.Preis
  1609. tAufze.MGeli = Aufze.MGeli
  1610. tAufze.MRuek = Aufze.MRuek.
  1611. ASSIGN
  1612. tAufze.Sort1 = ''
  1613. tAufze.Sort2 = STRING(tAufze.Artnr ,'999999')
  1614. + STRING(tAufze.Inhalt,'9999')
  1615. + STRING(tAufze.Jahr ,'9999')
  1616. + STRING(iPlusMinus ,'9')
  1617. + STRING(tAufze.Pos ,'99999')
  1618. tAufze.LagOrt = ''.
  1619. END.
  1620. /* Kommentar am Ende eines Auftrages */
  1621. IF lArtikel THEN
  1622. DO:
  1623. FOR EACH Aufze NO-LOCK
  1624. WHERE Aufze.Firma = cFirma
  1625. AND Aufze.Aufnr = ipAufnr
  1626. BY Aufze.Pos DESCENDING:
  1627. IF Aufze.Artnr > 0 THEN LEAVE.
  1628. maxPos = Aufze.Pos.
  1629. CREATE tAufze.
  1630. ASSIGN
  1631. tAufze.Aufnr = Aufze.Aufnr
  1632. tAufze.Artnr = Aufze.Artnr
  1633. tAufze.Inhalt = Aufze.Inhalt
  1634. tAufze.Jahr = Aufze.Jahr
  1635. tAufze.Pos = Aufze.Pos
  1636. tAufze.Zeile = RECID(Aufze)
  1637. tAufze.Aktion = Aufze.Aktion
  1638. tAufze.Preis = Aufze.Preis
  1639. tAufze.MGeli = Aufze.MGeli
  1640. tAufze.MRuek = Aufze.MRuek.
  1641. ASSIGN
  1642. tAufze.Sort1 = 'ZZZ'
  1643. tAufze.Sort2 = STRING(tAufze.Artnr ,'999999')
  1644. + STRING(tAufze.Inhalt,'9999')
  1645. + STRING(tAufze.Jahr ,'9999')
  1646. + STRING(iPlusMinus ,'9')
  1647. + STRING(tAufze.Pos ,'99999')
  1648. tAufze.LagOrt = ''.
  1649. END.
  1650. END.
  1651. /* Artikelzeilen nach WarenGruppe/ProdGruppen/Artikelgruppen */
  1652. cLagOrt = ''.
  1653. cSort = ''.
  1654. FOR EACH Aufze NO-LOCK
  1655. WHERE Aufze.Firma = cFirma
  1656. AND Aufze.Aufnr = ipAufnr
  1657. AND Aufze.Pos > minPos
  1658. AND Aufze.Pos < MaxPos
  1659. BY Aufze.Pos DESCENDING:
  1660. IF Aufze.Artnr > 0 THEN
  1661. DO:
  1662. FIND Artst NO-LOCK
  1663. WHERE Artst.Firma = Aufze.Firma
  1664. AND Artst.Artnr = Aufze.Artnr
  1665. AND Artst.Inhalt = Aufze.Inhalt
  1666. AND Artst.Jahr = Aufze.Jahr NO-ERROR.
  1667. FIND ArtLager NO-LOCK
  1668. WHERE ArtLager.Firma = Aufze.Firma
  1669. AND ArtLager.Artnr = Aufze.Artnr
  1670. AND ArtLager.Inhalt = Aufze.Inhalt
  1671. AND ArtLager.Jahr = Aufze.Jahr
  1672. AND ArtLager.Lager = Aufze.Lager NO-ERROR.
  1673. IF AVAILABLE ArtLager THEN cLagOrt = ArtLager.Ort.
  1674. ASSIGN
  1675. iWgr = Artst.Wg_Grp
  1676. iPgr = Artst.Prod_Grp
  1677. iAgr = Artst.Art_Grp
  1678. iArtnr = Artst.Artnr
  1679. iInhalt = Artst.Inhalt
  1680. iJahr = Artst.Jahr.
  1681. END.
  1682. cSort = STRING(iWgr,'9999')
  1683. + STRING(iPgr,'9999')
  1684. + STRING(iAgr,'9999').
  1685. iPlusMinus = (IF Aufze.MGeli < 0 THEN 1 ELSE 0).
  1686. CREATE tAufze.
  1687. ASSIGN
  1688. tAufze.Aufnr = Aufze.Aufnr
  1689. tAufze.Artnr = Aufze.Artnr
  1690. tAufze.Inhalt = Aufze.Inhalt
  1691. tAufze.Jahr = Aufze.Jahr
  1692. tAufze.Pos = Aufze.Pos
  1693. tAufze.Zeile = RECID(Aufze)
  1694. tAufze.Aktion = Aufze.Aktion
  1695. tAufze.Preis = Aufze.Preis
  1696. tAufze.MGeli = Aufze.MGeli
  1697. tAufze.MRuek = Aufze.MRuek.
  1698. ASSIGN
  1699. tAufze.Sort1 = cSort
  1700. tAufze.Sort2 = STRING(iArtnr ,'999999')
  1701. + STRING(iInhalt ,'9999')
  1702. + STRING(iJahr ,'9999')
  1703. + STRING(iPlusMinus,'9')
  1704. + STRING(tAufze.Pos,'99999')
  1705. tAufze.LagOrt = cLagort.
  1706. END.
  1707. END PROCEDURE.
  1708. /* _UIB-CODE-BLOCK-END */
  1709. &ANALYZE-RESUME
  1710. &ENDIF
  1711. &IF DEFINED(EXCLUDE-PRUEFZIFFER) = 0 &THEN
  1712. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PRUEFZIFFER Procedure
  1713. PROCEDURE PRUEFZIFFER :
  1714. /*------------------------------------------------------------------------------
  1715. Purpose:
  1716. Parameters: <none>
  1717. Notes:
  1718. ------------------------------------------------------------------------------*/
  1719. /* ------------------------------------------------------------------------- */
  1720. /* Prufziffer MODULO 10, Rekursiv (27 Stellig Ref.-Nr.) */
  1721. /* ------------------------------------------------------------------------- */
  1722. /* */
  1723. /* Uebergabe Variable: 1. String Betrag (12-stellig) */
  1724. /* 2. String Referenz (27-stellig) */
  1725. /* 3. String Teilnehmernummer ( 9-stellig) */
  1726. /* */
  1727. /* Erstellung der VESR-Codierzeile */
  1728. /* */
  1729. /*---------------------------------------------------------------------------*/
  1730. DEFINE INPUT-OUTPUT PARAMETER PZBetrag AS CHARACTER FORMAT "x(13)".
  1731. DEFINE INPUT-OUTPUT PARAMETER PZReferenz AS CHARACTER FORMAT "x(27)".
  1732. DEFINE INPUT-OUTPUT PARAMETER PZTNummer AS CHARACTER FORMAT "x(09)".
  1733. DEFINE OUTPUT PARAMETER VSZeile AS CHARACTER FORMAT "x(58)".
  1734. DEFINE VARIABLE l1 AS INTEGER.
  1735. DEFINE VARIABLE l2 AS INTEGER.
  1736. DEFINE VARIABLE l3 AS INTEGER.
  1737. DEFINE VARIABLE PZ AS INTEGER.
  1738. DEFINE VARIABLE x1 AS INTEGER.
  1739. DEFINE VARIABLE x2 AS INTEGER.
  1740. DEFINE VARIABLE x3 AS INTEGER.
  1741. DEFINE VARIABLE VMOD10 AS CHARACTER FORMAT "x(11)" EXTENT 11.
  1742. VMOD10[01] = "09468271350".
  1743. VMOD10[02] = "94682713509".
  1744. VMOD10[03] = "46827135098".
  1745. VMOD10[04] = "68271350947".
  1746. VMOD10[05] = "82713509466".
  1747. VMOD10[06] = "27135094685".
  1748. VMOD10[07] = "71350946824".
  1749. VMOD10[08] = "13509468273".
  1750. VMOD10[09] = "35094682712".
  1751. VMOD10[10] = "50946827131".
  1752. l1 = 12.
  1753. l2 = 26.
  1754. l3 = 08.
  1755. DO WHILE SUBSTRING(PZBetrag,01,01) <> " ": /* Mit Betrag */
  1756. x2 = 1.
  1757. x1 = INT(SUBSTRING(PZBetrag ,01 ,01)).
  1758. x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
  1759. DO x3 = 2 TO 12:
  1760. x1 = INT(SUBSTRING(PZBetrag ,x3 ,01)).
  1761. x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
  1762. END.
  1763. PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
  1764. SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
  1765. LEAVE.
  1766. END.
  1767. DO WHILE SUBSTRING(PZBetrag,01,01) = " ": /* Ohne Betrag */
  1768. x2 = 11.
  1769. x1 = INT(SUBSTRING(PZBetrag ,01 ,01)).
  1770. x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
  1771. DO x3 = 12 TO 12:
  1772. x1 = INT(SUBSTRING(PZBetrag ,x3 ,01)).
  1773. x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
  1774. END.
  1775. PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
  1776. SUBSTRING(PZBetrag,13) = STRING(PZ,"9").
  1777. LEAVE.
  1778. END.
  1779. DO WHILE l2 = 26:
  1780. x2 = 1.
  1781. x1 = INT(SUBSTRING(PZReferenz,01 ,01)).
  1782. x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
  1783. DO x3 = 2 TO 26:
  1784. x1 = INT(SUBSTRING(PZReferenz ,x3 ,01)).
  1785. x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
  1786. END.
  1787. PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
  1788. SUBSTRING(PZReferenz,27) = STRING(PZ,"9").
  1789. LEAVE.
  1790. END.
  1791. DO WHILE l3 = 08:
  1792. x2 = 1.
  1793. x1 = INT(SUBSTRING(PZTNummer ,01 ,01)).
  1794. x2 = INT(SUBSTRING(VMOD10[x2],x1 + 1,01)).
  1795. DO x3 = 2 TO 08:
  1796. x1 = INT(SUBSTRING(PZTNummer ,x3 ,01)).
  1797. x2 = INT(SUBSTRING(VMOD10[x2 + 1],x1 + 1,01)).
  1798. END.
  1799. PZ = INT(SUBSTRING(VMOD10[x2 + 1],11,1)).
  1800. SUBSTRING(PZTNummer,09) = STRING(PZ,"9").
  1801. LEAVE.
  1802. END.
  1803. VSZeile = "".
  1804. SUBSTRING(VSZeile,01) = PZBetrag.
  1805. SUBSTRING(VSZeile,14) = ">".
  1806. SUBSTRING(VSZeile,15) = PZReferenz.
  1807. SUBSTRING(VSZeile,42) = "+ ".
  1808. SUBSTRING(VSZeile,44) = PZTNummer.
  1809. SUBSTRING(VSZeile,53) = ">".
  1810. /*
  1811. SUBSTRING(VSZeile,58) = "H".
  1812. */
  1813. END PROCEDURE.
  1814. /* _UIB-CODE-BLOCK-END */
  1815. &ANALYZE-RESUME
  1816. &ENDIF
  1817. &IF DEFINED(EXCLUDE-VIPER_CREATE_DOKUMENT) = 0 &THEN
  1818. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VIPER_CREATE_DOKUMENT Procedure
  1819. PROCEDURE VIPER_CREATE_DOKUMENT :
  1820. /*------------------------------------------------------------------------------
  1821. Purpose:
  1822. Parameters: <none>
  1823. Notes:
  1824. ------------------------------------------------------------------------------*/
  1825. DEFINE INPUT PARAMETER ipGruppe AS CHARACTER NO-UNDO.
  1826. DEFINE INPUT PARAMETER ipZeile AS INTEGER NO-UNDO.
  1827. DEFINE INPUT PARAMETER ipFeld AS CHARACTER NO-UNDO.
  1828. DEFINE INPUT PARAMETER ipInhalt AS CHARACTER NO-UNDO.
  1829. CREATE tDokument.
  1830. ASSIGN
  1831. tDokument.cGruppe = ipGruppe
  1832. tDokument.iZeile = ipZeile
  1833. tDokument.cFeld = ipFeld
  1834. tDokument.cInhalt = ipInhalt.
  1835. END PROCEDURE.
  1836. /* _UIB-CODE-BLOCK-END */
  1837. &ANALYZE-RESUME
  1838. &ENDIF
  1839. &IF DEFINED(EXCLUDE-VIPER_INIT) = 0 &THEN
  1840. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VIPER_INIT Procedure
  1841. PROCEDURE VIPER_INIT :
  1842. /*------------------------------------------------------------------------------
  1843. Purpose:
  1844. Parameters: <none>
  1845. Notes:
  1846. ------------------------------------------------------------------------------*/
  1847. DEFINE VARIABLE cTemplate AS CHARACTER NO-UNDO.
  1848. DEFINE VARIABLE cDokument AS CHARACTER NO-UNDO.
  1849. DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
  1850. DEFINE VARIABLE cZelle AS CHARACTER NO-UNDO.
  1851. DEFINE VARIABLE cGruppe AS CHARACTER NO-UNDO.
  1852. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  1853. FIND FIRST tParam.
  1854. IF iLauf = iAnzDok AND
  1855. tParam.lCreatePDF THEN
  1856. DO:
  1857. cDokument = tParam.cInstall + '/' + tParam.cDokument + '_pdf.vfr'.
  1858. cTemplate = tParam.cDokument + '_pdf'.
  1859. END.
  1860. ELSE
  1861. DO:
  1862. cDokument = tParam.cInstall + '/' + tParam.cDokument + '.vfr'.
  1863. cTemplate = tParam.cDokument.
  1864. END.
  1865. RUN vpr_ResetDoc.
  1866. RUN vpr_LoadVFR (cDokument).
  1867. RUN vpr_ActivateReport (cTemplate).
  1868. RUN vpr_SelectPrinter (tParam.Drucker).
  1869. RUN vpr_setPrinterAttrib('duplex=1').
  1870. RUN vpr_SetPrinterAttrib('copies=1').
  1871. RUN vpr_ResetDoc.
  1872. RUN vpr_SetDocAttrib ('PAPERSIZE=A4').
  1873. RUN vpr_SetPreviewMode ('Direct').
  1874. RUN vpr_setDocTitle (tParam.cDokument).
  1875. IF iLauf = 1 THEN
  1876. DO:
  1877. IF tParam.Schacht_Original > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
  1878. END.
  1879. ELSE
  1880. DO:
  1881. IF tParam.Schacht_Kopie > 0 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie ).
  1882. END.
  1883. RUN vpr_SetGroupAttrib ("Kopf" , "Fixed=true").
  1884. RUN vpr_SetGroupAttrib ("Fusstext" , "Fixed=true").
  1885. RUN vpr_SetGroupAttrib ("Kondition", "Fixed=true").
  1886. iMaxPos = 2750.
  1887. END PROCEDURE.
  1888. /* _UIB-CODE-BLOCK-END */
  1889. &ANALYZE-RESUME
  1890. &ENDIF
  1891. &IF DEFINED(EXCLUDE-VIPER_NEUE_SEITE) = 0 &THEN
  1892. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE VIPER_NEUE_SEITE Procedure
  1893. PROCEDURE VIPER_NEUE_SEITE :
  1894. /*------------------------------------------------------------------------------
  1895. Purpose:
  1896. Parameters: <none>
  1897. Notes:
  1898. ------------------------------------------------------------------------------*/
  1899. DEFINE VARIABLE iPos AS INTEGER NO-UNDO.
  1900. FIND FIRST tParam.
  1901. DO WHILE TRUE:
  1902. IF iSeite = 0 THEN
  1903. DO:
  1904. iSeite = iSeite + 1.
  1905. LEAVE.
  1906. END.
  1907. iPos = vpr_getPageVPos().
  1908. IF (iPos + 160) < iMaxPos THEN
  1909. DO:
  1910. iPos = iPos + 20.
  1911. RUN vpr_setPageVPos ( iPos ).
  1912. RETURN.
  1913. END.
  1914. RUN vpr_NewPage.
  1915. IF iLauf = 1 THEN RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Original ).
  1916. ELSE RUN vpr_SetCurrentPageProperties ( "Papertray", tParam.Schacht_Kopie ).
  1917. iSeite = iSeite + 1.
  1918. LEAVE.
  1919. END.
  1920. RUN vpr_InitGroups ('').
  1921. IF tParam.lCreatePDF THEN
  1922. DO:
  1923. RUN vpr_initGraphObj.
  1924. RUN vpr_FlushGroup ('Fusstext').
  1925. END.
  1926. RUN vpr_setPageVPos ( 1 ).
  1927. END PROCEDURE.
  1928. /* _UIB-CODE-BLOCK-END */
  1929. &ANALYZE-RESUME
  1930. &ENDIF
  1931. /* ************************ Function Implementations ***************** */
  1932. &IF DEFINED(EXCLUDE-calcBlock) = 0 &THEN
  1933. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION calcBlock Procedure
  1934. FUNCTION calcBlock RETURNS INTEGER (ipGruppe AS CHARACTER):
  1935. DEFINE VARIABLE cZellen AS CHARACTER NO-UNDO.
  1936. DEFINE VARIABLE cWerte AS CHARACTER NO-UNDO.
  1937. DEFINE VARIABLE iSpace AS INTEGER NO-UNDO.
  1938. DEFINE VARIABLE iGrpHo AS INTEGER NO-UNDO.
  1939. FOR EACH tDokument
  1940. WHERE tDokument.cGruppe = ipGruppe
  1941. BREAK BY tDokument.cGruppe
  1942. BY tDokument.iZeile :
  1943. IF FIRST-OF ( tDokument.iZeile ) THEN
  1944. DO:
  1945. cZellen = ''.
  1946. cWerte = ''.
  1947. END.
  1948. cWerte = cWerte
  1949. + tDokument.cInhalt.
  1950. cZellen = cZellen
  1951. + tDokument.cFeld.
  1952. IF NOT LAST-OF ( tDokument.iZeile ) THEN
  1953. DO:
  1954. ASSIGN
  1955. cWerte = cWerte + CHR(01)
  1956. cZellen = cZellen + ','.
  1957. NEXT.
  1958. END.
  1959. RUN vpr_setGroupText (ipGruppe, cZellen, cWerte).
  1960. iGrpHo = vpr_getGroupHeight ( ipGruppe ).
  1961. iSpace = iSpace + iGrpHo.
  1962. END.
  1963. RETURN iSpace.
  1964. END FUNCTION.
  1965. /* _UIB-CODE-BLOCK-END */
  1966. &ANALYZE-RESUME
  1967. &ENDIF