Sav_SammelRechnung.p 82 KB

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