Sav_SammelRechnung.p 81 KB

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