Palettenschein.p 41 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160
  1. /*------------------------------------------------------------------------
  2. File : Palettenschein.p
  3. Purpose :
  4. Syntax :
  5. Description :
  6. Author(s) : walter.riechsteiner
  7. Created : Mon May 31 14:11:18 CEST 2021
  8. Notes :
  9. ----------------------------------------------------------------------*/
  10. /* This .W file was created with the Progress AppBuilder. */
  11. /*----------------------------------------------------------------------*/
  12. /* *************************** Definitions ************************** */
  13. BLOCK-LEVEL ON ERROR UNDO, THROW.
  14. DEFINE VARIABLE sAktiv AS LOGICAL NO-UNDO INIT FALSE.
  15. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO FORMAT "x(04)".
  16. DEFINE VARIABLE Firma AS CHARACTER NO-UNDO FORMAT "x(04)".
  17. DEFINE VARIABLE Progname AS CHARACTER NO-UNDO.
  18. DEFINE VARIABLE cLogName AS CHARACTER NO-UNDO.
  19. DEFINE VARIABLE lBatch AS LOGICAL NO-UNDO INIT TRUE.
  20. DEFINE VARIABLE cUser AS CHARACTER NO-UNDO.
  21. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO.
  22. DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO.
  23. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO.
  24. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO.
  25. DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO.
  26. DEFINE VARIABLE iSeite AS INTEGER NO-UNDO.
  27. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO.
  28. DEFINE VARIABLE dDatum AS DATE NO-UNDO.
  29. DEFINE VARIABLE lOpen AS LOGICAL NO-UNDO.
  30. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO.
  31. DEFINE VARIABLE cKopf AS CHARACTER NO-UNDO EXTENT 50.
  32. DEFINE VARIABLE FormText AS CHARACTER NO-UNDO EXTENT 30.
  33. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO.
  34. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO.
  35. DEFINE VARIABLE cDrucker AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO.
  37. { properties.i }
  38. { incl/ttdruckparam.i }
  39. DEFINE STREAM out_Stream.
  40. DEFINE BUFFER bAufko FOR Aufko .
  41. DEFINE BUFFER bAufze FOR Aufze .
  42. DEFINE BUFFER bTabel FOR Tabel .
  43. DEFINE BUFFER bArtst FOR Artst .
  44. DEFINE BUFFER bSchrift FOR Schrift .
  45. DEFINE BUFFER bDrucker FOR Drucker .
  46. DEFINE BUFFER bSteuer FOR Steuer .
  47. DEFINE BUFFER bDebst FOR Debst .
  48. DEFINE BUFFER bAdresse FOR Adresse .
  49. DEFINE BUFFER bLotLager FOR LotLager .
  50. DEFINE BUFFER bHoReLager FOR HoReLager.
  51. DEFINE TEMP-TABLE tDrucker NO-UNDO
  52. FIELD Drucker AS CHARACTER.
  53. DEFINE TEMP-TABLE tSchrift NO-UNDO LIKE Schrift
  54. FIELD iPlatz AS INTEGER
  55. FIELD Schacht AS INTEGER
  56. FIELD Anzahl AS INTEGER
  57. FIELD iRecid AS RECID
  58. INDEX tSchrift-k1 IS PRIMARY
  59. iPlatz
  60. Schname
  61. Schbild.
  62. DEFINE TEMP-TABLE tAufze NO-UNDO LIKE Aufze
  63. FIELD Platz AS INTEGER
  64. FIELD Lagort AS CHARACTER
  65. INDEX tAufze-k1 IS PRIMARY
  66. Platz
  67. Lagort
  68. Artnr.
  69. DEFINE TEMP-TABLE zAufze LIKE tAufze.
  70. DEFINE TEMP-TABLE tRueck NO-UNDO LIKE tAufze
  71. INDEX tRueck-k1 IS PRIMARY
  72. Platz
  73. Lagort
  74. Artnr.
  75. DEFINE TEMP-TABLE tTabTexte
  76. FIELD cRecArt AS CHARACTER
  77. FIELD iZeile AS INTEGER
  78. FIELD cFeld1 AS CHARACTER
  79. FIELD cFeld2 AS CHARACTER
  80. FIELD cFeld3 AS CHARACTER
  81. FIELD iFeld1 AS INTEGER
  82. FIELD iFeld2 AS INTEGER
  83. FIELD iFeld3 AS INTEGER
  84. INDEX tTabTexte-k1 IS PRIMARY
  85. cRecArt
  86. iZeile.
  87. /* ******************** Preprocessor Definitions ******************** */
  88. /* ************************ Function Prototypes ********************** */
  89. FUNCTION getLogfileName RETURNS CHARACTER
  90. ( ) FORWARD.
  91. FUNCTION putStream RETURNS LOGICAL
  92. (ipAttrib AS CHARACTER,
  93. ipAnzZeilen AS INTEGER,
  94. INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD.
  95. /* *************************** Main Block *************************** */
  96. DEFINE VARIABLE cPrinters AS CHARACTER NO-UNDO.
  97. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  98. DEFINE VARIABLE kRecid AS RECID NO-UNDO.
  99. DEFINE VARIABLE tRecid AS RECID NO-UNDO.
  100. DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO.
  101. DEFINE VARIABLE iCodeI AS INTEGER NO-UNDO INIT -1.
  102. DEFINE BUFFER dTabel FOR Tabel.
  103. SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
  104. IF SAktiv = ? THEN SAktiv = FALSE.
  105. IF SAktiv THEN
  106. DO:
  107. AdFirma = DYNAMIC-FUNCTION('getAdMandant':U) NO-ERROR.
  108. Firma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR.
  109. Progname = DYNAMIC-FUNCTION('makeProgname':U, INPUT THIS-PROCEDURE ) NO-ERROR.
  110. cUser = DYNAMIC-FUNCTION('getBenutzer') NO-ERROR.
  111. cLogName = DYNAMIC-FUNCTION('getLogFileName':U) NO-ERROR.
  112. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR.
  113. END.
  114. EMPTY TEMP-TABLE tDrucker.
  115. EMPTY TEMP-TABLE tSchrift.
  116. cPrinters = SESSION:GET-PRINTERS().
  117. DO ix = 1 TO NUM-ENTRIES(cPrinters, ','):
  118. CREATE tDrucker.
  119. ASSIGN
  120. tDrucker.Drucker = ENTRY(ix, cPrinters, ',').
  121. END.
  122. FIND bSteuer NO-LOCK
  123. WHERE bSteuer.Firma = Firma.
  124. TABELLE:
  125. DO WHILE TRUE:
  126. TABTRANS:
  127. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  128. FIND FIRST bTabel NO-LOCK
  129. WHERE bTabel.Firma = Firma
  130. AND bTabel.RecArt = 'wsPALETT'
  131. AND bTabel.CodeI > iCodeI
  132. AND bTabel.Bez1 = ''
  133. AND bTabel.Int_2 = 2 NO-ERROR.
  134. IF NOT AVAILABLE bTabel THEN LEAVE TABELLE.
  135. tRecid = RECID(bTabel).
  136. iCodeI = bTabel.CodeI.
  137. iPlatz = bTabel.Dec_1.
  138. iRuestArt = bTabel.Int_3.
  139. iAufnr = bTabel.Int_1.
  140. cRuester = bTabel.Bez2.
  141. FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR.
  142. IF NOT AVAILABLE bTabel AND
  143. LOCKED bTabel THEN
  144. DO:
  145. RELEASE bTabel.
  146. FIND Tabel NO-LOCK WHERE RECID(Tabel) = tRecid NO-ERROR.
  147. IF NOT AVAILABLE Tabel THEN NEXT.
  148. cMessage = SUBSTITUTE('Tabel LOCKED RecArt &1, CodeI &2, Aufnr &3, Int_2 &4, Drucker &5',
  149. Tabel.RecArt, Tabel.CodeI, Tabel.Int_1, Tabel.Int_2, cPrinters).
  150. RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  151. RELEASE Tabel.
  152. LEAVE TABTRANS.
  153. END.
  154. IF NOT AVAILABLE bTabel THEN LEAVE TABTRANS.
  155. bTabel.Bez1 = 'A'.
  156. FIND bAufko NO-LOCK
  157. WHERE bAufko.Firma = bTabel.Firma
  158. AND bAufko.Aufnr = iAufnr NO-ERROR.
  159. IF NOT AVAILABLE bAufko THEN
  160. DO:
  161. DELETE bTabel.
  162. RELEASE bTabel.
  163. LEAVE TABTRANS.
  164. END.
  165. kRecid = RECID(bAufko).
  166. cRetValue = ''.
  167. DO WHILE TRUE:
  168. RUN FUELLEN_tAufze.
  169. FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR.
  170. IF NOT AVAILABLE tAufze THEN
  171. DO:
  172. DELETE bTabel.
  173. RELEASE bTabel.
  174. LEAVE TABTRANS.
  175. END.
  176. RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR.
  177. cMessage = SUBSTITUTE('Palettenschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch).
  178. RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  179. FIND bAufko NO-LOCK WHERE RECID(bAufko) = kRecid.
  180. RUN PALETTENSCHEIN.
  181. cRetValue = RETURN-VALUE.
  182. cMessage = SUBSTITUTE('Palettenschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue).
  183. RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  184. LEAVE.
  185. END.
  186. IF cRetValue <> '' THEN
  187. DO:
  188. bTabel.Bez1 = 'F'.
  189. RELEASE bTabel.
  190. LEAVE TABTRANS.
  191. END.
  192. IF AVAILABLE bTabel THEN
  193. DO:
  194. FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = kRecid NO-WAIT NO-ERROR.
  195. IF AVAILABLE Aufko THEN Aufko.Gedruckt = TRUE.
  196. RELEASE Aufko.
  197. DELETE bTabel.
  198. RELEASE bTabel.
  199. END.
  200. LEAVE.
  201. END.
  202. END.
  203. /* ********************** Internal Procedures *********************** */
  204. PROCEDURE BAR-CODE-39 :
  205. /*------------------------------------------------------------------------------*/
  206. /* Purpose: */
  207. /* Notes: */
  208. /*------------------------------------------------------------------------------*/
  209. DEFINE INPUT PARAMETER ipWert AS CHARACTER NO-UNDO.
  210. DEFINE INPUT PARAMETER ipCodeArt AS CHARACTER NO-UNDO.
  211. DEFINE OUTPUT PARAMETER opBarCode AS CHARACTER NO-UNDO.
  212. DEFINE VARIABLE clr AS LOG INIT TRUE NO-UNDO.
  213. DEFINE VARIABLE wk AS CHARACTER NO-UNDO.
  214. DEFINE VARIABLE drw AS CHARACTER NO-UNDO.
  215. DEFINE VARIABLE cDir AS CHARACTER NO-UNDO.
  216. DEFINE VARIABLE k AS CHARACTER NO-UNDO.
  217. DEFINE VARIABLE att AS CHARACTER NO-UNDO.
  218. DEFINE VARIABLE kod AS CHARACTER NO-UNDO
  219. INIT "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.Ø *$/+%".
  220. att =
  221. "100100001001100001101100000000110001100110000001110000000100101100100100"
  222. + "001100100000110100100001001001001001101001000000011001100011000001011000"
  223. + "000001101100001100001001100000011100100000011001000011101000010000010011"
  224. + "100010010001010010000000111100000110001000110000010110110000001011000001"
  225. + "111000000010010001110010000011010000010000101110000100011000100010010100"
  226. + "010101000010100010010001010000101010".
  227. DEFINE VARIABLE i AS INTEGER NO-UNDO.
  228. DEFINE VARIABLE j AS INTEGER NO-UNDO.
  229. DEFINE VARIABLE l AS INTEGER NO-UNDO.
  230. DEFINE VARIABLE brd AS INTEGER NO-UNDO.
  231. DEFINE VARIABLE jst AS INTEGER NO-UNDO.
  232. ASSIGN
  233. i = (IF SUBSTRING (ipCodeArt, 1, 1) = "P" THEN 1 ELSE 2)
  234. opBarCode = "~E&f0S~E*c100G"
  235. drw = SUBSTRING("ab" , i, 1)
  236. + SUBSTRING(ipCodeArt, 6)
  237. + SUBSTRING("ba" , i, 1)
  238. + "P"
  239. cDir = SUBSTRING("XY", i, 1)
  240. k = "*" + ipWert + "*" .
  241. DO i = 1 TO LENGTH(k):
  242. ASSIGN
  243. j = INDEX(kod, SUBSTRING (k, i, 1)) * 9 - 8
  244. wk = SUBSTRING (att, j, 9) + "0" .
  245. DO l = 1 TO 10:
  246. ASSIGN
  247. brd = IF SUBSTRING(wk,l,1) = "0" THEN 2 ELSE 4
  248. opBarCode = opBarCode
  249. + (IF clr THEN "~E*c" + SUBSTRING (ipCodeArt, brd, 2) + drw
  250. ELSE "~E*p+" + STRING(INTEGER(SUBSTRING(ipCodeArt, brd, 2))
  251. + jst) + cDir)
  252. jst = INTEGER (SUBSTRING (ipCodeArt, brd, 2))
  253. clr = NOT clr.
  254. END. /* of looping 1 to 10 */
  255. END. /* of going through string 'k' */
  256. ASSIGN
  257. opBarCode = opBarCode + "~E&f1S"
  258. wk = "".
  259. END PROCEDURE.
  260. PROCEDURE DRUCKAUSGABE:
  261. /*------------------------------------------------------------------------------*/
  262. /* Purpose: */
  263. /* Parameters: <none> */
  264. /* Notes: */
  265. /*------------------------------------------------------------------------------*/
  266. DEFINE VARIABLE iAnzKopien AS INTEGER NO-UNDO.
  267. DEFINE VARIABLE sRecid AS RECID NO-UNDO.
  268. DEFINE VARIABLE iSize AS INTEGER NO-UNDO.
  269. DEFINE VARIABLE iKopie AS INTEGER NO-UNDO.
  270. DEFINE VARIABLE iSchacht AS INTEGER NO-UNDO.
  271. DEFINE VARIABLE cString AS CHARACTER INIT '' NO-UNDO.
  272. FIND FIRST tSchrift NO-LOCK
  273. WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
  274. IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
  275. sRecid = tSchrift.iRecid.
  276. iAnzKopien = tSchrift.Anzahl.
  277. iSchacht = tSchrift.Schacht.
  278. RUN writeLogfile.p ( ProgName, cLogName, SUBSTITUTE('Druckausgabe -> Platz: &1, Drucker: &2, Schrift: &3', tSchrift.iPlatz, tSchrift.Schname, tSchrift.Schbild) ) NO-ERROR.
  279. IF iAnzKopien = 0 THEN iAnzKopien = 1.
  280. DO iKopie = 1 TO iAnzKopien:
  281. iSize = DYNAMIC-FUNCTION('putDateiToPrinter':U, cDateiName ,
  282. sRecid ,
  283. tSchrift.Schacht ,
  284. 240 , /* Blockgrösse */
  285. 'ibm850' ,
  286. iAnzKopien ). /* Anzahl Kopien */
  287. IF iSize = 0 THEN
  288. DO:
  289. cString = 'Druckvorgang gescheitert !!! '.
  290. RUN writeLogfile.p ( ProgName, cLogName, cString ) NO-ERROR.
  291. IF lBatch THEN RETURN ERROR.
  292. RETURN cString.
  293. END.
  294. IF iKopie < iAnzKopien THEN
  295. DO:
  296. ETIME(TRUE).
  297. DO WHILE ETIME(FALSE) < 200:
  298. END.
  299. END.
  300. END.
  301. OS-DELETE VALUE(cDateiName) NO-ERROR.
  302. END PROCEDURE.
  303. PROCEDURE FUELLEN_tAufze:
  304. /*------------------------------------------------------------------------------*/
  305. /* Purpose: */
  306. /* Notes: */
  307. /*------------------------------------------------------------------------------*/
  308. DEFINE VARIABLE minPos AS INTEGER NO-UNDO.
  309. DEFINE VARIABLE maxPos AS INTEGER NO-UNDO.
  310. DEFINE VARIABLE jPlatz AS INTEGER NO-UNDO.
  311. DEFINE VARIABLE cLagOrt AS CHARACTER NO-UNDO.
  312. DEFINE VARIABLE lArtikel AS LOG NO-UNDO.
  313. EMPTY TEMP-TABLE tAufze.
  314. EMPTY TEMP-TABLE tRueck.
  315. ASSIGN
  316. minPos = 0
  317. maxPos = 9999.
  318. /* -------------------------------------- */
  319. /* Kommentar zu Beginn eines Auftrages */
  320. /* -------------------------------------- */
  321. lArtikel = FALSE.
  322. FOR EACH Aufze NO-LOCK USE-INDEX Aufze-k1
  323. WHERE Aufze.Firma = Firma
  324. AND Aufze.Aufnr = bAufko.Aufnr
  325. AND Aufze.Pos > minPos:
  326. IF Aufze.Artnr > 0 THEN
  327. DO:
  328. lArtikel = TRUE.
  329. LEAVE.
  330. END.
  331. minPos = Aufze.Pos.
  332. CREATE tAufze.
  333. BUFFER-COPY Aufze TO tAufze
  334. ASSIGN
  335. tAufze.Platz = iPlatz
  336. tAufze.LagOrt = ''.
  337. END.
  338. /* ---------------------------------------------- */
  339. /* Kommentar am Ende eines Auftrages */
  340. /* ebenfalls an den Anfang des Auftrages schieben */
  341. /* ---------------------------------------------- */
  342. IF lArtikel THEN
  343. DO:
  344. FOR EACH Aufze NO-LOCK
  345. WHERE Aufze.Firma = Firma
  346. AND Aufze.Aufnr = bAufko.Aufnr
  347. BY Aufze.Pos DESCENDING:
  348. IF Aufze.Artnr > 0 THEN LEAVE.
  349. maxPos = Aufze.Pos.
  350. CREATE tAufze.
  351. BUFFER-COPY Aufze TO tAufze
  352. ASSIGN
  353. tAufze.Platz = iPlatz
  354. tAufze.LagOrt = 'zz'.
  355. END.
  356. END.
  357. /* ------------------------------------------------------ */
  358. /* Artikelzeilen dem Ruestsektor und Lagerplatz zuteilen */
  359. /* ------------------------------------------------------ */
  360. FOR EACH Aufze NO-LOCK
  361. WHERE Aufze.Firma = Firma
  362. AND Aufze.Aufnr = bAufko.Aufnr
  363. AND Aufze.Pos > minPos
  364. AND Aufze.Pos < MaxPos:
  365. IF Aufze.Artnr > 0 THEN
  366. DO:
  367. FIND FIRST RuestAuf NO-LOCK
  368. WHERE RuestAuf.Firma = Aufze.Firma
  369. AND RuestAuf.Aufnr = Aufze.Aufnr
  370. AND RuestAuf.Pos = Aufze.Pos NO-ERROR.
  371. IF NOT AVAILABLE RuestAuf THEN NEXT.
  372. IF RuestAuf.Platz <> iPlatz THEN NEXT.
  373. END.
  374. CREATE tAufze.
  375. BUFFER-COPY Aufze TO tAufze
  376. ASSIGN
  377. tAufze.Platz = RuestAuf.Platz
  378. tAufze.LagOrt = RuestAuf.Lagerort.
  379. IF tAufze.MRuek > 0 THEN
  380. DO:
  381. CREATE tRueck.
  382. BUFFER-COPY tAufze TO tRueck.
  383. END.
  384. END.
  385. END PROCEDURE.
  386. PROCEDURE GET_DRUCKERDATEN :
  387. /*------------------------------------------------------------------------------*/
  388. /* Purpose: */
  389. /* Parameters: <none> */
  390. /* Notes: */
  391. /*------------------------------------------------------------------------------*/
  392. DEFINE INPUT PARAMETER ipPlatz AS INTEGER NO-UNDO.
  393. DEFINE INPUT PARAMETER ipDrucker AS CHARACTER NO-UNDO.
  394. DEFINE INPUT PARAMETER ipSchrift AS CHARACTER NO-UNDO.
  395. DEFINE VARIABLE lJa AS LOG INIT TRUE NO-UNDO.
  396. DEFINE VARIABLE lError AS LOG INIT TRUE NO-UNDO.
  397. DO WHILE TRUE:
  398. FIND FIRST tDrucker NO-LOCK
  399. WHERE tDrucker.Drucker = ipDrucker NO-ERROR.
  400. IF AVAILABLE tDrucker THEN LEAVE.
  401. cMessage = SUBSTITUTE('Der gewünschte Drucker &1 ist nicht verfügbar ', ipDrucker).
  402. RETURN cMessage.
  403. END.
  404. RUN CHECKPRINTER ( ipDrucker, OUTPUT lError ) NO-ERROR.
  405. IF lError THEN RETURN SUBSTITUTE('Drucker &1 konnte nicht angewählt werden', ipDrucker).
  406. DO WHILE TRUE:
  407. FIND FIRST Schrift NO-LOCK
  408. WHERE Schrift.SchName = ipDrucker
  409. AND Schrift.SchBild = ipSchrift NO-ERROR.
  410. IF AVAILABLE Schrift THEN LEAVE.
  411. FIND FIRST Schrift NO-LOCK
  412. WHERE Schrift.SchName = SESSION:PRINTER-NAME
  413. AND Schrift.SchBild = ipSchrift NO-ERROR.
  414. IF AVAILABLE Schrift THEN LEAVE.
  415. cMessage = 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden'.
  416. RETURN cMessage.
  417. END.
  418. CREATE tSchrift.
  419. BUFFER-COPY Schrift TO tSchrift
  420. ASSIGN
  421. tSchrift.iPlatz = ipPlatz
  422. tSchrift.SchName = SESSION:PRINTER-NAME
  423. tSchrift.iRecid = RECID(Schrift).
  424. FIND bDrucker NO-LOCK
  425. WHERE bDrucker.Drucker = tSchrift.SchDru.
  426. RETURN ''.
  427. END PROCEDURE.
  428. PROCEDURE LIBILD:
  429. /*------------------------------------------------------------------------------*/
  430. /* Purpose: */
  431. /* Parameters: <none> */
  432. /* Notes: */
  433. /*------------------------------------------------------------------------------*/
  434. DEFINE INPUT PARAMETER ipDokArt AS CHARACTER NO-UNDO.
  435. DEFINE VARIABLE cProgName AS CHARACTER NO-UNDO.
  436. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  437. cProgName = bSteuer.Fwc10 + ":" + ipDokArt.
  438. FormText = "".
  439. FOR EACH LiBild USE-INDEX LiBild-k1
  440. WHERE LiBild.Sprcd = 1
  441. AND LiBild.Prog = cProgName
  442. AND LiBild.Tenr > 0 NO-LOCK ix = 1 TO 40:
  443. FormText[ix] = LiBild.Litext.
  444. END.
  445. END PROCEDURE.
  446. PROCEDURE NEUE_SEITE :
  447. /*------------------------------------------------------------------------------*/
  448. /* Purpose: */
  449. /* Parameters: <none> */
  450. /* Notes: */
  451. /*------------------------------------------------------------------------------*/
  452. DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
  453. IF iSeite > 0 THEN
  454. DO:
  455. PUT STREAM out_Stream CONTROL CHR(12).
  456. END.
  457. FIND FIRST tSchrift NO-LOCK
  458. WHERE tSchrift.iPlatz = iPlatz.
  459. cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
  460. IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
  461. iZeile = tSchrift.Schzzbeg.
  462. iSeite = iSeite + 1.
  463. END PROCEDURE.
  464. PROCEDURE PALETTENSCHEIN:
  465. /*------------------------------------------------------------------------------*/
  466. /* Purpose: */
  467. /* Notes: */
  468. /*------------------------------------------------------------------------------*/
  469. DEFINE VARIABLE cDokArt AS CHARACTER NO-UNDO.
  470. DEFINE VARIABLE hbAufko AS HANDLE NO-UNDO.
  471. DEFINE VARIABLE htTabTexte AS HANDLE NO-UNDO.
  472. DEFINE VARIABLE nFakBetr AS DECIMAL NO-UNDO.
  473. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  474. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  475. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  476. DEFINE VARIABLE xPlatz AS INTEGER NO-UNDO.
  477. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO.
  478. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO.
  479. FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR.
  480. IF NOT AVAILABLE tAufze THEN RETURN ''.
  481. cRetVal = DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tAufze.Firma, tAufze.Aufnr, OUTPUT nTotale) NO-ERROR.
  482. cMessage = SUBSTITUTE('Palettenschein &1 Platz &2 gestartet', tAufze.Aufnr, iPlatz).
  483. RUN writeLogFile.p ( Progname, cLogName, cMessage) NO-ERROR.
  484. cDokArt = 'PALETTEN'.
  485. iSeite = 0.
  486. iZeile = 0.
  487. cDrucker = ''.
  488. lOpen = FALSE.
  489. cZeile = ''.
  490. dDatum = bAufko.Lief_Datum.
  491. RUN LIBILD ( cDokArt ).
  492. hbAufko = BUFFER bAufko:HANDLE.
  493. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
  494. RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ).
  495. EMPTY TEMP-TABLE tSchrift.
  496. FOR EACH RuestDaten NO-LOCK
  497. WHERE RuestDaten.Firma = bAufko.Firma
  498. AND RuestDaten.RuestArt = iRuestArt
  499. AND RuestDaten.Platz > 0
  500. AND Ruestdaten.PA_Doku = TRUE:
  501. xPlatz = RuestDaten.Platz.
  502. RUN GET_DRUCKERDATEN ( xPlatz, RuestDaten.PA_Drucker, RuestDaten.PA_Schrift ).
  503. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
  504. FIND FIRST tSchrift WHERE tSchrift.iPlatz = xPlatz.
  505. ASSIGN
  506. tSchrift.Schzztot = RuestDaten.PA_TotZZ
  507. tSchrift.Schzzbeg = RuestDaten.PA_KopfZZ
  508. tSchrift.Schzzend = RuestDaten.PA_FussZZ
  509. tSchrift.Schacht = RuestDaten.PA_Schacht
  510. tSchrift.Anzahl = iAnzahl.
  511. END.
  512. FIND FIRST tSchrift NO-LOCK
  513. WHERE tSchrift.iPlatz = iPlatz.
  514. IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1.
  515. IF tSchrift.Schzzend = 0 THEN tSchrift.Schzzend = 3.
  516. IF tSchrift.Schzztot = 0 THEN tSchrift.Schzztot = 66.
  517. FIND bDrucker NO-LOCK
  518. WHERE bDrucker.Drucker = tSchrift.SchDru.
  519. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
  520. WHERE bAdresse.Firma = AdFirma
  521. AND bAdresse.Knr = bAufko.Knr NO-ERROR.
  522. EMPTY TEMP-TABLE zAufze.
  523. CREATE zAufze.
  524. FOR EACH tAufze NO-LOCK
  525. WHERE tAufze.Platz = iPlatz
  526. BREAK BY tAufze.Platz
  527. BY tAufze.Lagort
  528. BY tAufze.Pos :
  529. DO WHILE TRUE:
  530. IF NOT FIRST-OF ( tAufze.Platz ) THEN LEAVE.
  531. cDrucker = tSchrift.Schname.
  532. cDateiName = SESSION:TEMP-DIR
  533. + 'PalettPapier'
  534. + STRING(TIME,'999999')
  535. + STRING(RANDOM(1, 999999),'999999')
  536. + '.txt'.
  537. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
  538. lOpen = TRUE.
  539. LEAVE.
  540. END.
  541. IF iSeite = 0 THEN RUN PALETTENSCHEIN_KOPF ( iPlatz ).
  542. IF (tSchrift.Schzztot - iZeile - 2) <= tSchrift.Schzzend THEN
  543. DO:
  544. RUN PALETTENSCHEIN_KOPF ( iPlatz ).
  545. END.
  546. IF tAufze.MGeli <> 0 THEN
  547. DO:
  548. FIND FIRST zAufze.
  549. BUFFER-COPY tAufze TO zAufze.
  550. RUN PALETTENSCHEIN_ARTIKELZEILE.
  551. END.
  552. IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT.
  553. cZeile = FILL('=', 100).
  554. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  555. END.
  556. DO WHILE TRUE:
  557. FIND FIRST tRueck NO-LOCK
  558. WHERE tRueck.Platz = iPlatz NO-ERROR.
  559. IF NOT AVAILABLE tRueck THEN LEAVE.
  560. IF NOT lOpen THEN
  561. DO:
  562. cDrucker = tSchrift.Schname.
  563. cDateiName = SESSION:TEMP-DIR
  564. + 'PalettPapier'
  565. + STRING(TIME,'999999')
  566. + STRING(RANDOM(1, 999999),'999999')
  567. + '.txt'.
  568. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
  569. lOpen = TRUE.
  570. RUN PALETTENSCHEIN_KOPF ( iPlatz ).
  571. END.
  572. ELSE
  573. DO:
  574. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  575. END.
  576. FOR EACH tRueck NO-LOCK
  577. WHERE tRueck.Platz = iPlatz
  578. BREAK BY tRueck.Platz
  579. BY tRueck.Lagort
  580. BY tRueck.Pos :
  581. IF (tSchrift.Schzztot - iZeile - 6) <= tSchrift.Schzzend THEN
  582. DO:
  583. RUN PALETTENSCHEIN_KOPF ( iPlatz ).
  584. END.
  585. IF FIRST-OF ( tRueck.Platz ) THEN
  586. DO:
  587. cZeile = FILL('=', 100).
  588. SUBSTRING(cZeile,30) = ' Rückstände/Teillieferungen '.
  589. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  590. END.
  591. RUN PALETTENSCHEIN_RUECKSTAND ( RECID(tRueck) ).
  592. END.
  593. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  594. LEAVE.
  595. END.
  596. IF lOpen THEN
  597. DO:
  598. SUBSTRING(cZeile,008) = 'Gerüstet durch : ' + cRuester.
  599. DYNAMIC-FUNCTION('putStream':U, 'N', 3, INPUT-OUTPUT cZeile) NO-ERROR.
  600. END.
  601. DO WHILE TRUE:
  602. IF NOT lOpen THEN LEAVE.
  603. FIND FIRST RuestAuf NO-LOCK
  604. WHERE RuestAuf.Firma = Firma
  605. AND RuestAuf.Aufnr = bAufko.Aufnr
  606. AND RuestAuf.Platz <> iPlatz NO-ERROR.
  607. IF NOT AVAILABLE RuestAuf THEN LEAVE.
  608. SUBSTRING(cZeile,10) = 'Weitere Rüstplätze'.
  609. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  610. FOR EACH RuestAuf NO-LOCK
  611. WHERE RuestAuf.Firma = Firma
  612. AND RuestAuf.Aufnr = bAufko.Aufnr
  613. AND RuestAuf.Platz <> iPlatz
  614. BREAK BY RuestAuf.Platz:
  615. IF NOT FIRST-OF ( RuestAuf.Platz ) THEN NEXT.
  616. FIND RuestPlatz NO-LOCK
  617. WHERE RuestPlatz.Firma = RuestAuf.Firma
  618. AND RuestPlatz.RuestArt = iRuestArt
  619. AND RuestPlatz.Platz = RuestAuf.Platz NO-ERROR.
  620. IF NOT AVAILABLE RuestPlatz THEN NEXT.
  621. SUBSTRING(cZeile,12) = '- ' + RuestPlatz.Bezeichnung.
  622. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  623. END.
  624. LEAVE.
  625. END.
  626. IF lOpen THEN
  627. DO:
  628. OUTPUT STREAM out_Stream CLOSE.
  629. lOpen = FALSE.
  630. RUN DRUCKAUSGABE NO-ERROR.
  631. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
  632. END.
  633. FIND FIRST tAufze NO-LOCK NO-ERROR.
  634. cMessage = SUBSTITUTE('Palettenschein &1 Platz &2 beendet', tAufze.Aufnr, iPlatz).
  635. RUN writeLogFile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  636. RETURN ''.
  637. END PROCEDURE.
  638. PROCEDURE PALETTENSCHEIN_ARTIKELZEILE:
  639. /*------------------------------------------------------------------------------*/
  640. /* Purpose: */
  641. /* Notes: */
  642. /*------------------------------------------------------------------------------*/
  643. DEFINE VARIABLE cBarCode AS CHARACTER NO-UNDO.
  644. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
  645. /*
  646. DEF VAR cCodeArt AS CHAR INIT 'P0205075' NO-UNDO.
  647. */
  648. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205080' NO-UNDO.
  649. FIND FIRST zAufze NO-LOCK.
  650. PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
  651. DO WHILE zAufze.Artnr = 0:
  652. SUBSTRING(cZeile,036) = STRING(zAufze.Bez1,"x(30)").
  653. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  654. IF zAufze.Bez2 <> '' THEN
  655. DO:
  656. SUBSTRING(cZeile,036) = STRING(zAufze.Bez2,"x(30)").
  657. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  658. END.
  659. RETURN.
  660. END.
  661. FIND Artst NO-LOCK OF zAufze.
  662. FIND VGebinde
  663. WHERE VGebinde.Firma = zAufze.Firma
  664. AND VGebinde.Geb_Cd = zAufze.VGeb_Cd NO-ERROR.
  665. FIND KGebinde
  666. WHERE KGebinde.Firma = zAufze.Firma
  667. AND KGebinde.Geb_Cd = zAufze.KGeb_Cd NO-ERROR.
  668. SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)").
  669. IF zAufze.VGeb_Me <> 0 THEN
  670. DO:
  671. SUBSTRING(cZeile,012) = STRING(zAufze.VGeb_Me,'->>>')
  672. + 'x '
  673. + VGebinde.KBez.
  674. END.
  675. SUBSTRING(cZeile,028) = STRING(zAufze.MGeli ,"->>>>9").
  676. SUBSTRING(cZeile,036) = STRING(zAufze.Bez1 ,"x(30)").
  677. IF zAufze.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(zAufze.Alk_Gehalt,"zz9.9%").
  678. IF zAufze.Jahr > 9 THEN SUBSTRING(cZeile,075) = STRING(zAufze.Jahr,"9999").
  679. SUBSTRING(cZeile,081) = STRING(zAufze.Artnr ,"999999").
  680. SUBSTRING(cZeile,089) = STRING(zAufze.LagOrt,'x(08)').
  681. cZeile = bDrucker.Drufettb
  682. + SUBSTRING(cZeile,001,027)
  683. + bDrucker.Drufette
  684. + SUBSTRING(cZeile,028,061)
  685. + bDrucker.Drufettb
  686. + SUBSTRING(cZeile,089,008)
  687. + bDrucker.Drufette
  688. + SUBSTRING(cZeile,097).
  689. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  690. IF zAufze.Bez2 <> '' THEN
  691. DO:
  692. SUBSTRING(cZeile,036) = STRING(zAufze.Bez2,"x(30)").
  693. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  694. END.
  695. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  696. END PROCEDURE.
  697. PROCEDURE PALETTENSCHEIN_KOPF:
  698. /*------------------------------------------------------------------------------*/
  699. /* Purpose: */
  700. /* Notes: */
  701. /*------------------------------------------------------------------------------*/
  702. DEFINE INPUT PARAMETER ipPlatz AS INTEGER NO-UNDO.
  703. DEFINE VARIABLE cAufnr AS CHARACTER NO-UNDO.
  704. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
  705. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  706. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  707. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  708. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  709. DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
  710. DEFINE VARIABLE cFahrer AS CHARACTER NO-UNDO.
  711. /*
  712. DEF VAR cCodeArt AS CHAR INIT 'P0205075' NO-UNDO.
  713. */
  714. /* P = Portrait */
  715. /* L = Landscape */
  716. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0210200' NO-UNDO.
  717. RUN NEUE_SEITE.
  718. PUT STREAM out_Stream CONTROL bDrucker.Dru15cpi.
  719. PUT STREAM out_Stream CONTROL CHR(27) '&k2G'.
  720. cAufnr = STRING(bAufko.Aufnr,'9999999')
  721. + '.'
  722. + TRIM(STRING(ipPlatz,'>9')).
  723. RUN BAR-CODE-39 ( INPUT cAufnr ,
  724. INPUT cCodeArt,
  725. OUTPUT oBarCode ).
  726. oBarCode = CHR(027) + "*p" + "100y" + "100X" + oBarCode
  727. + CHR(027) + "*p" + "405y" + "260X"
  728. + bDrucker.Drufettb + bDrucker.Dru10cpi + bDrucker.Drufettb
  729. + cAufnr
  730. + bDrucker.Drufette + bDrucker.Dru15cpi + bDrucker.Drufette
  731. + CHR(027) + "*p" + "0y" + "0X".
  732. PUT STREAM out_Stream CONTROL oBarCode.
  733. FIND FIRST tSchrift NO-LOCK
  734. WHERE tSchrift.iPlatz = iPlatz.
  735. IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1.
  736. cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
  737. IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
  738. iZeile = tSchrift.Schzzbeg.
  739. IF bAufko.Adresse[05] <> '' THEN
  740. DO:
  741. DO ix = 1 TO 5:
  742. SUBSTRING(cZeile,066) = bAufko.Adresse[ix].
  743. IF ix = 5 THEN
  744. DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  745. END.
  746. ELSE
  747. DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  748. END.
  749. END.
  750. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  751. END.
  752. ELSE
  753. DO:
  754. DO ix = 6 TO 12:
  755. SUBSTRING(cZeile,066) = bAdresse.Anschrift[ix].
  756. IF ix = 11 THEN
  757. DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  758. END.
  759. ELSE
  760. DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  761. END.
  762. END.
  763. END.
  764. IF bAufko.Auf_Tot >= 0
  765. THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20).
  766. ELSE
  767. SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20).
  768. cZeile =
  769. bDrucker.Dru10cpi
  770. + SUBSTRING(cZeile,001,30)
  771. + bDrucker.Dru15cpi.
  772. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  773. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20))
  774. + " "
  775. + STRING(dDatum,"99.99.9999").
  776. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  777. IF iSeite = 1 THEN
  778. DO:
  779. FIND FIRST tTabtexte NO-LOCK
  780. WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
  781. IF AVAILABLE tTabTexte THEN SUBSTRING(cZeile,008) = tTabTexte.cFeld3.
  782. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],21,20))
  783. + STRING(bAufko.Gewicht,"zz,zz9.999-").
  784. cZeile = TRIM(bDrucker.Drufettb)
  785. + SUBSTRING(cZeile,001,65)
  786. + TRIM(bDrucker.Drufette)
  787. + SUBSTRING(cZeile,066).
  788. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  789. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],41,20))
  790. + " "
  791. + STRING(bAufko.Auf_Datum,"99.99.9999").
  792. SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[08],01,20))
  793. + STRING(bAufko.Knr,"z999999").
  794. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],41,20))
  795. + " "
  796. + bAdresse.Tel-1.
  797. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  798. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[09],21,20))
  799. + " "
  800. + STRING(bAufko.Lief_Datum,"99.99.9999").
  801. SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[09],01,20))
  802. + " ". /* Lieferart */
  803. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  804. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],21,20))
  805. + " "
  806. + STRING(bAufko.U_Ref,'x(20)').
  807. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  808. END.
  809. SUBSTRING(cZeile,001) = TRIM(SUBSTRING(FormText[03],01,70)).
  810. SUBSTRING(cZeile,071) = TRIM(SUBSTRING(FormText[04],01,70)).
  811. DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  812. IF iSeite = 1 AND
  813. bAufko.Abh_Text <> '' THEN
  814. DO:
  815. cString = bAufko.Abh_Text.
  816. i2 = 0.
  817. DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
  818. SUBSTRING(cZeile,008) = ENTRY(i1, cString, CHR(10)).
  819. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  820. i2 = i2 + 1.
  821. END.
  822. IF i2 > 0 THEN
  823. DO:
  824. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  825. END.
  826. END.
  827. IF iSeite = 1 THEN
  828. DO:
  829. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  830. RUN FIND_FAHRER ( bAufko.Fahrer, OUTPUT cString ).
  831. IF cString <> '' THEN cFahrer = ENTRY(2, cString, CHR(01)) + ' ' + ENTRY(3, cString, CHR(01)).
  832. i1 = (80 - LENGTH(cFahrer)) / 2.
  833. SUBSTRING(cZeile,i1) = CHR(27) + "(s6H"
  834. + cFahrer
  835. + bDrucker.Dru15cpi.
  836. DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  837. FIND FIRST RuestPlatz NO-LOCK
  838. WHERE RuestPlatz.Firma = bAufko.Firma
  839. AND RuestPlatz.RuestArt = iRuestArt
  840. AND RuestPlatz.Platz = ipPlatz.
  841. i1 = (98 - LENGTH(RuestPlatz.Bezeichnung)) / 2.
  842. cZeile = FILL('=', i1) + ' ' + RuestPlatz.Bezeichnung + ' ' + FILL('=', i1).
  843. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  844. END.
  845. DO WHILE iSeite > 1:
  846. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  847. LEAVE.
  848. END.
  849. END PROCEDURE.
  850. PROCEDURE PALETTENSCHEIN_RUECKSTAND:
  851. /*------------------------------------------------------------------------------*/
  852. /* Purpose: */
  853. /* Notes: */
  854. /*------------------------------------------------------------------------------*/
  855. DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO.
  856. DEFINE VARIABLE cBarCode AS CHARACTER NO-UNDO.
  857. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
  858. /*
  859. DEF VAR cCodeArt AS CHAR INIT 'P0205075' NO-UNDO.
  860. */
  861. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205080' NO-UNDO.
  862. FIND tRueck WHERE RECID(tRueck) = ipRecid NO-LOCK.
  863. PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi.
  864. DO WHILE tRueck.Artnr = 0:
  865. SUBSTRING(cZeile,036) = STRING(tRueck.Bez1,"x(30)").
  866. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  867. IF tRueck.Bez2 <> '' THEN
  868. DO:
  869. SUBSTRING(cZeile,036) = STRING(tRueck.Bez2,"x(30)").
  870. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  871. END.
  872. RETURN.
  873. END.
  874. FIND Artst NO-LOCK OF tRueck.
  875. FIND VGebinde NO-LOCK
  876. WHERE VGebinde.Firma = tRueck.Firma
  877. AND VGebinde.Geb_Cd = tRueck.VGeb_Cd NO-ERROR.
  878. FIND KGebinde NO-LOCK
  879. WHERE KGebinde.Firma = tRueck.Firma
  880. AND KGebinde.Geb_Cd = tRueck.KGeb_Cd NO-ERROR.
  881. SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)").
  882. IF tRueck.VGeb_Ru <> 0 AND
  883. tRueck.VGeb_Me <> tRueck.VGeb_Be THEN
  884. DO:
  885. SUBSTRING(cZeile,012) = STRING(tRueck.VGeb_Ru,'->>>')
  886. + 'x '
  887. + VGebinde.KBez.
  888. END.
  889. SUBSTRING(cZeile,028) = STRING(tRueck.MRuek ,"->>>>9").
  890. SUBSTRING(cZeile,036) = STRING(tRueck.Bez1 ,"x(30)").
  891. IF tRueck.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(tRueck.Alk_Gehalt,"zz9.9%").
  892. IF tRueck.Jahr > 9 THEN SUBSTRING(cZeile,075) = STRING(tRueck.Jahr,"9999").
  893. SUBSTRING(cZeile,081) = STRING(tRueck.Artnr ,"999999").
  894. SUBSTRING(cZeile,089) = STRING(tRueck.LagOrt,'x(08)').
  895. cZeile = bDrucker.Drufettb
  896. + SUBSTRING(cZeile,001,027)
  897. + bDrucker.Drufette
  898. + SUBSTRING(cZeile,028,061)
  899. + bDrucker.Drufettb
  900. + SUBSTRING(cZeile,089,008)
  901. + bDrucker.Drufette
  902. + SUBSTRING(cZeile,097).
  903. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  904. IF tRueck.Bez2 <> '' THEN
  905. DO:
  906. SUBSTRING(cZeile,036) = STRING(tRueck.Bez2,"x(30)").
  907. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  908. END.
  909. END PROCEDURE.
  910. /* ************************ Function Implementations ***************** */
  911. FUNCTION getLogfileName RETURNS CHARACTER
  912. ( /* parameter-definitions */ ) :
  913. /*------------------------------------------------------------------------------*/
  914. /* Purpose: */
  915. /* Parameters: <none> */
  916. /* Notes: */
  917. /*------------------------------------------------------------------------------*/
  918. DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
  919. DEFINE VARIABLE cProg AS CHARACTER NO-UNDO.
  920. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  921. cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
  922. cProg = REPLACE(Progname, '\', '/').
  923. ii = R-INDEX(cProg, '/').
  924. IF ii > 0 THEN cProg = SUBSTRING(cProg, ii + 1).
  925. cPath = cPath
  926. + cProg
  927. + '_'
  928. + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
  929. + '.Log'.
  930. RETURN cPath.
  931. END FUNCTION.
  932. FUNCTION putStream RETURNS LOGICAL
  933. ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) :
  934. /*------------------------------------------------------------------------------*/
  935. /* Purpose: */
  936. /* Notes: */
  937. /*------------------------------------------------------------------------------*/
  938. DEFINE VARIABLE cLF AS CHARACTER NO-UNDO.
  939. cLF = FILL(CHR(10), ipAnzZeilen).
  940. CASE ipAttrib:
  941. WHEN 'N' THEN
  942. PUT STREAM out_Stream CONTROL ipZeile.
  943. WHEN 'F' THEN
  944. PUT STREAM out_Stream CONTROL bDrucker.Drufettb ipZeile bDrucker.Drufette.
  945. WHEN 'U' THEN
  946. PUT STREAM out_Stream CONTROL bDrucker.Druunterb ipZeile bDrucker.Druuntere.
  947. END CASE.
  948. PUT STREAM out_Stream CONTROL cLF.
  949. iZeile = iZeile + ipAnzZeilen.
  950. ipZeile = ''.
  951. RETURN TRUE.
  952. END FUNCTION.