Faktura.p 87 KB

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