SammelRechnung.p 80 KB

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