Sav_Faktura.p 74 KB

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