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