Sav_Faktura.p 85 KB

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