Ladeschein.p 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  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 tTabTexte
  70. FIELD cRecArt AS CHARACTER
  71. FIELD iZeile AS INTEGER
  72. FIELD cFeld1 AS CHARACTER
  73. FIELD cFeld2 AS CHARACTER
  74. FIELD cFeld3 AS CHARACTER
  75. FIELD iFeld1 AS INTEGER
  76. FIELD iFeld2 AS INTEGER
  77. FIELD iFeld3 AS INTEGER
  78. INDEX tTabTexte-k1 IS PRIMARY
  79. cRecArt
  80. iZeile.
  81. /* ******************** Preprocessor Definitions ******************** */
  82. /* ************************ Function Prototypes ********************** */
  83. FUNCTION getLogfileName RETURNS CHARACTER
  84. ( ) FORWARD.
  85. FUNCTION putStream RETURNS LOGICAL
  86. (ipAttrib AS CHARACTER,
  87. ipAnzZeilen AS INTEGER,
  88. INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD.
  89. /* *************************** Main Block *************************** */
  90. DEFINE VARIABLE cPrinters AS CHARACTER NO-UNDO.
  91. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  92. DEFINE VARIABLE kRecid AS RECID NO-UNDO.
  93. DEFINE VARIABLE tRecid AS RECID NO-UNDO.
  94. DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO.
  95. DEFINE VARIABLE iCodeI AS INTEGER NO-UNDO INIT -1.
  96. DEFINE BUFFER dTabel FOR Tabel.
  97. SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR.
  98. IF SAktiv = ? THEN SAktiv = FALSE.
  99. IF SAktiv THEN
  100. DO:
  101. AdFirma = DYNAMIC-FUNCTION('getAdMandant':U) NO-ERROR.
  102. Firma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR.
  103. Progname = DYNAMIC-FUNCTION('makeProgname':U, INPUT THIS-PROCEDURE ) NO-ERROR.
  104. cUser = DYNAMIC-FUNCTION('getBenutzer') NO-ERROR.
  105. cLogName = DYNAMIC-FUNCTION('getLogFileName':U) NO-ERROR.
  106. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR.
  107. END.
  108. EMPTY TEMP-TABLE tDrucker.
  109. EMPTY TEMP-TABLE tSchrift.
  110. cPrinters = SESSION:GET-PRINTERS().
  111. DO ix = 1 TO NUM-ENTRIES(cPrinters, ','):
  112. CREATE tDrucker.
  113. ASSIGN
  114. tDrucker.Drucker = ENTRY(ix, cPrinters, ',').
  115. END.
  116. FIND bSteuer NO-LOCK
  117. WHERE bSteuer.Firma = Firma.
  118. TABELLE:
  119. DO WHILE TRUE:
  120. TABTRANS:
  121. REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
  122. FIND FIRST bTabel NO-LOCK
  123. WHERE bTabel.Firma = Firma
  124. AND bTabel.RecArt = 'wsLADEPAPIER'
  125. AND bTabel.CodeI > iCodeI
  126. AND bTabel.Bez1 = ''
  127. AND bTabel.Int_2 = 3 NO-ERROR.
  128. IF NOT AVAILABLE bTabel THEN LEAVE TABELLE.
  129. tRecid = RECID(bTabel).
  130. iCodeI = bTabel.CodeI.
  131. iPlatz = bTabel.Dec_1.
  132. iAnzahl = bTabel.Dec_2.
  133. iRuestArt = bTabel.Int_3.
  134. iAufnr = bTabel.Int_1.
  135. cRuester = bTabel.Bez2.
  136. FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR.
  137. IF NOT AVAILABLE bTabel AND
  138. LOCKED bTabel THEN
  139. DO:
  140. RELEASE bTabel.
  141. FIND Tabel NO-LOCK WHERE RECID(Tabel) = tRecid NO-ERROR.
  142. IF NOT AVAILABLE Tabel THEN NEXT.
  143. cMessage = SUBSTITUTE('Tabel LOCKED RecArt &1, CodeI &2, Aufnr &3, Int_2 &4, Drucker &5',
  144. Tabel.RecArt, Tabel.CodeI, Tabel.Int_1, Tabel.Int_2, cPrinters).
  145. RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  146. RELEASE Tabel.
  147. LEAVE TABTRANS.
  148. END.
  149. IF NOT AVAILABLE bTabel THEN LEAVE TABTRANS.
  150. bTabel.Bez1 = 'A'.
  151. FIND bAufko NO-LOCK
  152. WHERE bAufko.Firma = bTabel.Firma
  153. AND bAufko.Aufnr = iAufnr NO-ERROR.
  154. IF NOT AVAILABLE bAufko THEN
  155. DO:
  156. DELETE bTabel.
  157. RELEASE bTabel.
  158. LEAVE TABTRANS.
  159. END.
  160. kRecid = RECID(bAufko).
  161. cRetValue = ''.
  162. dDatum = bAufko.Lief_Datum.
  163. DO WHILE TRUE:
  164. RUN FUELLEN_tAufze.
  165. FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR.
  166. IF NOT AVAILABLE tAufze THEN
  167. DO:
  168. DELETE bTabel.
  169. RELEASE bTabel.
  170. LEAVE TABTRANS.
  171. END.
  172. RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR.
  173. cMessage = SUBSTITUTE('Ladeschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch).
  174. RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  175. FIND bAufko NO-LOCK WHERE RECID(bAufko) = kRecid.
  176. RUN LADESCHEIN.
  177. cRetValue = RETURN-VALUE.
  178. cMessage = SUBSTITUTE('Ladeschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue).
  179. RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR.
  180. LEAVE.
  181. END.
  182. IF cRetValue <> '' THEN
  183. DO:
  184. bTabel.Bez1 = 'F'.
  185. RELEASE bTabel.
  186. LEAVE TABTRANS.
  187. END.
  188. IF AVAILABLE bTabel THEN
  189. DO:
  190. FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = kRecid NO-WAIT NO-ERROR.
  191. IF AVAILABLE Aufko THEN Aufko.Gedruckt = TRUE.
  192. RELEASE Aufko.
  193. DELETE bTabel.
  194. RELEASE bTabel.
  195. END.
  196. LEAVE.
  197. END.
  198. END.
  199. /* ********************** Internal Procedures *********************** */
  200. PROCEDURE BAR-CODE-39 :
  201. /*------------------------------------------------------------------------------*/
  202. /* Purpose: */
  203. /* Notes: */
  204. /*------------------------------------------------------------------------------*/
  205. DEFINE INPUT PARAMETER ipWert AS CHARACTER NO-UNDO.
  206. DEFINE INPUT PARAMETER ipCodeArt AS CHARACTER NO-UNDO.
  207. DEFINE OUTPUT PARAMETER opBarCode AS CHARACTER NO-UNDO.
  208. DEFINE VARIABLE clr AS LOG INIT TRUE NO-UNDO.
  209. DEFINE VARIABLE wk AS CHARACTER NO-UNDO.
  210. DEFINE VARIABLE drw AS CHARACTER NO-UNDO.
  211. DEFINE VARIABLE cDir AS CHARACTER NO-UNDO.
  212. DEFINE VARIABLE k AS CHARACTER NO-UNDO.
  213. DEFINE VARIABLE att AS CHARACTER NO-UNDO.
  214. DEFINE VARIABLE kod AS CHARACTER NO-UNDO
  215. INIT "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.Ø *$/+%".
  216. att =
  217. "100100001001100001101100000000110001100110000001110000000100101100100100"
  218. + "001100100000110100100001001001001001101001000000011001100011000001011000"
  219. + "000001101100001100001001100000011100100000011001000011101000010000010011"
  220. + "100010010001010010000000111100000110001000110000010110110000001011000001"
  221. + "111000000010010001110010000011010000010000101110000100011000100010010100"
  222. + "010101000010100010010001010000101010".
  223. DEFINE VARIABLE i AS INTEGER NO-UNDO.
  224. DEFINE VARIABLE j AS INTEGER NO-UNDO.
  225. DEFINE VARIABLE l AS INTEGER NO-UNDO.
  226. DEFINE VARIABLE brd AS INTEGER NO-UNDO.
  227. DEFINE VARIABLE jst AS INTEGER NO-UNDO.
  228. ASSIGN
  229. i = (IF SUBSTRING (ipCodeArt, 1, 1) = "P" THEN 1 ELSE 2)
  230. opBarCode = "~E&f0S~E*c100G"
  231. drw = SUBSTRING("ab" , i, 1)
  232. + SUBSTRING(ipCodeArt, 6)
  233. + SUBSTRING("ba" , i, 1)
  234. + "P"
  235. cDir = SUBSTRING("XY", i, 1)
  236. k = "*" + ipWert + "*" .
  237. DO i = 1 TO LENGTH(k):
  238. ASSIGN
  239. j = INDEX(kod, SUBSTRING (k, i, 1)) * 9 - 8
  240. wk = SUBSTRING (att, j, 9) + "0" .
  241. DO l = 1 TO 10:
  242. ASSIGN
  243. brd = IF SUBSTRING(wk,l,1) = "0" THEN 2 ELSE 4
  244. opBarCode = opBarCode
  245. + (IF clr THEN "~E*c" + SUBSTRING (ipCodeArt, brd, 2) + drw
  246. ELSE "~E*p+" + STRING(INTEGER(SUBSTRING(ipCodeArt, brd, 2))
  247. + jst) + cDir)
  248. jst = INTEGER (SUBSTRING (ipCodeArt, brd, 2))
  249. clr = NOT clr.
  250. END. /* of looping 1 to 10 */
  251. END. /* of going through string 'k' */
  252. ASSIGN
  253. opBarCode = opBarCode + "~E&f1S"
  254. wk = "".
  255. END PROCEDURE.
  256. PROCEDURE DRUCKAUSGABE:
  257. /*------------------------------------------------------------------------------*/
  258. /* Purpose: */
  259. /* Parameters: <none> */
  260. /* Notes: */
  261. /*------------------------------------------------------------------------------*/
  262. DEFINE VARIABLE iAnzKopien AS INTEGER NO-UNDO.
  263. DEFINE VARIABLE sRecid AS RECID NO-UNDO.
  264. DEFINE VARIABLE iSize AS INTEGER NO-UNDO.
  265. DEFINE VARIABLE iKopie AS INTEGER NO-UNDO.
  266. DEFINE VARIABLE iSchacht AS INTEGER NO-UNDO.
  267. DEFINE VARIABLE cString AS CHARACTER INIT '' NO-UNDO.
  268. FIND FIRST tSchrift NO-LOCK
  269. WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
  270. IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
  271. sRecid = tSchrift.iRecid.
  272. iAnzKopien = tSchrift.Anzahl.
  273. iSchacht = tSchrift.Schacht.
  274. RUN writeLogfile.p ( ProgName, cLogName, SUBSTITUTE('Druckausgabe -> Platz: &1, Drucker: &2, Schrift: &3', tSchrift.iPlatz, tSchrift.Schname, tSchrift.Schbild) ) NO-ERROR.
  275. IF iAnzKopien = 0 THEN iAnzKopien = 1.
  276. DO iKopie = 1 TO iAnzKopien:
  277. iSize = DYNAMIC-FUNCTION('putDateiToPrinter':U, cDateiName ,
  278. sRecid ,
  279. tSchrift.Schacht ,
  280. 240 , /* Blockgrösse */
  281. 'ibm850' ,
  282. iAnzKopien ). /* Anzahl Kopien */
  283. IF iSize = 0 THEN
  284. DO:
  285. cString = 'Druckvorgang gescheitert !!! '.
  286. RUN writeLogfile.p ( ProgName, cLogName, cString ) NO-ERROR.
  287. IF lBatch THEN RETURN ERROR.
  288. RETURN cString.
  289. END.
  290. IF iKopie < iAnzKopien THEN
  291. DO:
  292. ETIME(TRUE).
  293. DO WHILE ETIME(FALSE) < 200:
  294. END.
  295. END.
  296. END.
  297. OS-DELETE VALUE(cDateiName) NO-ERROR.
  298. END PROCEDURE.
  299. PROCEDURE FUELLEN_tAufze:
  300. /*------------------------------------------------------------------------------*/
  301. /* Purpose: */
  302. /* Notes: */
  303. /*------------------------------------------------------------------------------*/
  304. DEFINE VARIABLE minPos AS INTEGER NO-UNDO.
  305. DEFINE VARIABLE maxPos AS INTEGER NO-UNDO.
  306. DEFINE VARIABLE jPlatz AS INTEGER NO-UNDO.
  307. DEFINE VARIABLE cLagOrt AS CHARACTER NO-UNDO.
  308. DEFINE VARIABLE lArtikel AS LOG NO-UNDO.
  309. EMPTY TEMP-TABLE tAufze.
  310. FOR EACH Aufze NO-LOCK
  311. WHERE Aufze.Firma = Firma
  312. AND Aufze.Aufnr = bAufko.Aufnr
  313. AND Aufze.Artnr > 0,
  314. FIRST RuestAuf NO-LOCK
  315. WHERE RuestAuf.Firma = Aufze.Firma
  316. AND RuestAuf.Aufnr = Aufze.Aufnr
  317. AND RuestAuf.Pos = Aufze.Pos :
  318. CREATE tAufze.
  319. BUFFER-COPY Aufze TO tAufze
  320. ASSIGN
  321. tAufze.Platz = RuestAuf.Platz
  322. tAufze.LagOrt = RuestAuf.Lagerort.
  323. END.
  324. END PROCEDURE.
  325. PROCEDURE GET_DRUCKERDATEN :
  326. /*------------------------------------------------------------------------------*/
  327. /* Purpose: */
  328. /* Parameters: <none> */
  329. /* Notes: */
  330. /*------------------------------------------------------------------------------*/
  331. DEFINE INPUT PARAMETER ipPlatz AS INTEGER NO-UNDO.
  332. DEFINE INPUT PARAMETER ipDrucker AS CHARACTER NO-UNDO.
  333. DEFINE INPUT PARAMETER ipSchrift AS CHARACTER NO-UNDO.
  334. DEFINE VARIABLE lJa AS LOG INIT TRUE NO-UNDO.
  335. DEFINE VARIABLE lError AS LOG INIT TRUE NO-UNDO.
  336. DO WHILE TRUE:
  337. FIND FIRST tDrucker NO-LOCK
  338. WHERE tDrucker.Drucker = ipDrucker NO-ERROR.
  339. IF AVAILABLE tDrucker THEN LEAVE.
  340. cMessage = SUBSTITUTE('Der gewünschte Drucker &1 ist nicht verfügbar ', ipDrucker).
  341. RETURN cMessage.
  342. END.
  343. RUN CHECKPRINTER ( ipDrucker, OUTPUT lError ) NO-ERROR.
  344. IF lError THEN RETURN SUBSTITUTE('Drucker &1 konnte nicht angewählt werden', ipDrucker).
  345. DO WHILE TRUE:
  346. FIND FIRST Schrift NO-LOCK
  347. WHERE Schrift.SchName = ipDrucker
  348. AND Schrift.SchBild = ipSchrift NO-ERROR.
  349. IF AVAILABLE Schrift THEN LEAVE.
  350. FIND FIRST Schrift NO-LOCK
  351. WHERE Schrift.SchName = SESSION:PRINTER-NAME
  352. AND Schrift.SchBild = ipSchrift NO-ERROR.
  353. IF AVAILABLE Schrift THEN LEAVE.
  354. cMessage = 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden'.
  355. RETURN cMessage.
  356. END.
  357. CREATE tSchrift.
  358. BUFFER-COPY Schrift TO tSchrift
  359. ASSIGN
  360. tSchrift.iPlatz = ipPlatz
  361. tSchrift.SchName = SESSION:PRINTER-NAME
  362. tSchrift.iRecid = RECID(Schrift).
  363. FIND bDrucker NO-LOCK
  364. WHERE bDrucker.Drucker = tSchrift.SchDru.
  365. RETURN ''.
  366. END PROCEDURE.
  367. PROCEDURE LIBILD:
  368. /*------------------------------------------------------------------------------*/
  369. /* Purpose: */
  370. /* Parameters: <none> */
  371. /* Notes: */
  372. /*------------------------------------------------------------------------------*/
  373. DEFINE INPUT PARAMETER ipDokArt AS CHARACTER NO-UNDO.
  374. DEFINE VARIABLE cProgName AS CHARACTER NO-UNDO.
  375. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  376. cProgName = bSteuer.Fwc10 + ":" + ipDokArt.
  377. FormText = "".
  378. FOR EACH LiBild USE-INDEX LiBild-k1
  379. WHERE LiBild.Sprcd = 1
  380. AND LiBild.Prog = cProgName
  381. AND LiBild.Tenr > 0 NO-LOCK ix = 1 TO 40:
  382. FormText[ix] = LiBild.Litext.
  383. END.
  384. END PROCEDURE.
  385. PROCEDURE NEUE_SEITE :
  386. /*------------------------------------------------------------------------------*/
  387. /* Purpose: */
  388. /* Parameters: <none> */
  389. /* Notes: */
  390. /*------------------------------------------------------------------------------*/
  391. DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
  392. IF iSeite > 0 THEN
  393. DO:
  394. PUT STREAM out_Stream CONTROL CHR(12).
  395. END.
  396. FIND FIRST tSchrift NO-LOCK
  397. WHERE tSchrift.iPlatz = iPlatz.
  398. cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
  399. IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
  400. iZeile = tSchrift.Schzzbeg.
  401. iSeite = iSeite + 1.
  402. END PROCEDURE.
  403. PROCEDURE LADESCHEIN:
  404. /*------------------------------------------------------------------------------*/
  405. /* Purpose: */
  406. /* Notes: */
  407. /*------------------------------------------------------------------------------*/
  408. DEFINE VARIABLE cDokArt AS CHARACTER NO-UNDO.
  409. DEFINE VARIABLE hbAufko AS HANDLE NO-UNDO.
  410. DEFINE VARIABLE htTabTexte AS HANDLE NO-UNDO.
  411. /* DEFINE VARIABLE cString AS CHARACTER NO-UNDO.*/
  412. /* DEFINE VARIABLE i1 AS INTEGER NO-UNDO.*/
  413. /* DEFINE VARIABLE i2 AS INTEGER NO-UNDO.*/
  414. DEFINE VARIABLE xPlatz AS INTEGER NO-UNDO.
  415. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO.
  416. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO.
  417. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO.
  418. DEFINE VARIABLE iAnzPal AS INTEGER NO-UNDO.
  419. DEFINE VARIABLE cAufnr AS CHARACTER NO-UNDO.
  420. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
  421. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205090' NO-UNDO.
  422. FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR.
  423. IF NOT AVAILABLE tAufze THEN RETURN ''.
  424. cRetVal = DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tAufze.Firma, tAufze.Aufnr, OUTPUT nTotale) NO-ERROR.
  425. cMessage = SUBSTITUTE('Ladeschein &1 Platz &2 gestartet', tAufze.Aufnr, iPlatz).
  426. RUN writeLogFile.p ( Progname, cLogName, cMessage) NO-ERROR.
  427. cDokArt = 'LADEPAPIER'.
  428. iSeite = 0.
  429. iZeile = 0.
  430. cDrucker = ''.
  431. lOpen = FALSE.
  432. cZeile = ''.
  433. RUN LIBILD ( cDokArt ).
  434. hbAufko = BUFFER bAufko:HANDLE.
  435. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE.
  436. RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ).
  437. EMPTY TEMP-TABLE tSchrift.
  438. FOR EACH RuestDaten NO-LOCK
  439. WHERE RuestDaten.Firma = bAufko.Firma
  440. AND RuestDaten.RuestArt = iRuestArt
  441. AND RuestDaten.Platz > 0
  442. AND Ruestdaten.LA_Doku = TRUE:
  443. xPlatz = RuestDaten.Platz.
  444. RUN GET_DRUCKERDATEN ( xPlatz, RuestDaten.LA_Drucker, RuestDaten.LA_Schrift ).
  445. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
  446. FIND FIRST tSchrift WHERE tSchrift.iPlatz = xPlatz.
  447. ASSIGN
  448. tSchrift.Schzztot = RuestDaten.LA_TotZZ
  449. tSchrift.Schzzbeg = RuestDaten.LA_KopfZZ
  450. tSchrift.Schzzend = RuestDaten.LA_FussZZ
  451. tSchrift.Schacht = RuestDaten.LA_Schacht
  452. tSchrift.Anzahl = RuestDaten.LA_Anzahl.
  453. END.
  454. FIND FIRST tSchrift NO-LOCK
  455. WHERE tSchrift.iPlatz = iPlatz.
  456. IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1.
  457. IF tSchrift.Schzzend = 0 THEN tSchrift.Schzzend = 3.
  458. IF tSchrift.Schzztot = 0 THEN tSchrift.Schzztot = 66.
  459. FIND bDrucker NO-LOCK
  460. WHERE bDrucker.Drucker = tSchrift.SchDru.
  461. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1
  462. WHERE bAdresse.Firma = AdFirma
  463. AND bAdresse.Knr = bAufko.Knr NO-ERROR.
  464. FOR EACH tAufze NO-LOCK
  465. BREAK BY tAufze.Platz
  466. BY tAufze.Lagort
  467. BY tAufze.Pos :
  468. IF FIRST-OF ( tAufze.Platz ) THEN iAnz = 0.
  469. IF tAufze.MGeli <> 0 THEN iAnz = iAnz + 1.
  470. IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT.
  471. FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz NO-ERROR.
  472. IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift.
  473. FIND bDrucker NO-LOCK
  474. WHERE bDrucker.Drucker = tSchrift.SchDru.
  475. IF NOT lOpen THEN
  476. DO:
  477. cDrucker = tSchrift.Schname.
  478. cDateiName = SESSION:TEMP-DIR
  479. + 'LadePapier'
  480. + STRING(TIME,'999999')
  481. + STRING(RANDOM(1, 999999),'999999')
  482. + '.txt'.
  483. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT.
  484. lOpen = TRUE.
  485. END.
  486. IF iSeite = 0 THEN RUN LADESCHEIN_KOPF ( iPlatz ).
  487. FIND FIRST RuestAuf NO-LOCK
  488. WHERE RuestAuf.Firma = tAufze.Firma
  489. AND RuestAuf.Aufnr = tAufze.Aufnr
  490. AND RuestAuf.Platz = tAufze.Platz NO-ERROR.
  491. IF NOT AVAILABLE RuestAuf THEN
  492. DO:
  493. FIND FIRST RuestAuf NO-LOCK
  494. WHERE RuestAuf.Firma = tAufze.Firma
  495. AND RuestAuf.Aufnr = tAufze.Aufnr
  496. AND RuestAuf.Artnr = tAufze.Artnr NO-ERROR.
  497. END.
  498. iAnzPal = (IF AVAILABLE RuestAuf THEN RuestAuf.AnzPaletten ELSE 1).
  499. cAufnr = STRING(bAufko.Aufnr,'9999999')
  500. + '.'
  501. + TRIM(STRING(tAufze.Platz,'>9'))
  502. + ' - '
  503. + (IF iAnz = 0 THEN 'KEINE LIEFERUNG' ELSE TRIM(STRING(iAnzPal,'->>>>>>>>>>9')))
  504. + ' / '
  505. + (IF AVAILABLE RuestAuf THEN RuestAuf.Ruester ELSE 'unbekannt').
  506. SUBSTRING(cZeile,20) = bDrucker.Dru10cpi
  507. + cAufnr
  508. + bDrucker.Dru15cpi.
  509. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  510. IF iAnz > 0 THEN
  511. DO:
  512. cAufnr = STRING(bAufko.Aufnr,'9999999')
  513. + '.'
  514. + TRIM(STRING(tAufze.Platz,'>9')).
  515. RUN BAR-CODE-39 ( INPUT cAufnr ,
  516. INPUT cCodeArt,
  517. OUTPUT oBarCode ).
  518. SUBSTRING(cZeile,20) = oBarCode.
  519. DYNAMIC-FUNCTION('putStream':U, 'N', 4, INPUT-OUTPUT cZeile) NO-ERROR.
  520. END.
  521. END.
  522. IF lOpen THEN
  523. DO:
  524. OUTPUT STREAM out_Stream CLOSE.
  525. lOpen = FALSE.
  526. RUN DRUCKAUSGABE NO-ERROR.
  527. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'.
  528. END.
  529. cMessage = SUBSTITUTE('Ladepapier &1 beendet', bAufko.Aufnr).
  530. DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR.
  531. RETURN ''.
  532. END PROCEDURE.
  533. PROCEDURE LADESCHEIN_KOPF:
  534. /*------------------------------------------------------------------------------*/
  535. /* Purpose: */
  536. /* Notes: */
  537. /*------------------------------------------------------------------------------*/
  538. DEFINE INPUT PARAMETER ipPlatz AS INTEGER NO-UNDO.
  539. DEFINE VARIABLE cAufnr AS CHARACTER NO-UNDO.
  540. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO.
  541. DEFINE VARIABLE ix AS INTEGER NO-UNDO.
  542. DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
  543. DEFINE VARIABLE i2 AS INTEGER NO-UNDO.
  544. DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
  545. DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO.
  546. DEFINE VARIABLE cFahrer AS CHARACTER NO-UNDO.
  547. DEFINE BUFFER btAufze FOR tAufze.
  548. /*
  549. DEF VAR cCodeArt AS CHAR INIT 'P0205075' NO-UNDO.
  550. */
  551. /* P = Portrait */
  552. /* L = Landscape */
  553. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0210200' NO-UNDO.
  554. RUN NEUE_SEITE.
  555. PUT STREAM out_Stream CONTROL bDrucker.Dru15cpi.
  556. PUT STREAM out_Stream CONTROL CHR(27) '&k2G'.
  557. cAufnr = STRING(bAufko.Aufnr,'9999999').
  558. RUN BAR-CODE-39 ( INPUT cAufnr ,
  559. INPUT cCodeArt,
  560. OUTPUT oBarCode ).
  561. oBarCode = CHR(027) + "*p" + "100y" + "100X" + oBarCode
  562. + CHR(027) + "*p" + "405y" + "260X"
  563. + bDrucker.Drufettb + bDrucker.Dru10cpi + bDrucker.Drufettb
  564. + cAufnr
  565. + bDrucker.Drufette + bDrucker.Dru15cpi + bDrucker.Drufette
  566. + CHR(027) + "*p" + "0y" + "0X".
  567. PUT STREAM out_Stream CONTROL oBarCode.
  568. FIND FIRST tSchrift NO-LOCK
  569. WHERE tSchrift.iPlatz = iPlatz.
  570. cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg).
  571. IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile.
  572. iZeile = tSchrift.Schzzbeg.
  573. IF bAufko.Adresse[05] <> '' THEN
  574. DO:
  575. DO ix = 1 TO 5:
  576. SUBSTRING(cZeile,066) = bAufko.Adresse[ix].
  577. IF ix = 5 THEN
  578. DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  579. END.
  580. ELSE
  581. DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  582. END.
  583. END.
  584. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  585. END.
  586. ELSE
  587. DO:
  588. DO ix = 6 TO 12:
  589. SUBSTRING(cZeile,066) = bAdresse.Anschrift[ix].
  590. IF ix = 11 THEN
  591. DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  592. END.
  593. ELSE
  594. DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  595. END.
  596. END.
  597. END.
  598. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  599. IF bAufko.Auf_Tot >= 0
  600. THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20).
  601. ELSE
  602. SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20).
  603. cZeile = bDrucker.Dru10cpi
  604. + SUBSTRING(cZeile,001,30)
  605. + bDrucker.Dru15cpi.
  606. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  607. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20))
  608. + " "
  609. + STRING(dDatum,"99.99.9999").
  610. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  611. IF iSeite = 1 THEN
  612. DO:
  613. FIND FIRST tTabtexte NO-LOCK
  614. WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR.
  615. IF AVAILABLE tTabTexte THEN SUBSTRING(cZeile,008) = tTabTexte.cFeld3.
  616. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],21,20))
  617. + STRING(bAufko.Gewicht,"zz,zz9.999-").
  618. cZeile = TRIM(bDrucker.Drufettb)
  619. + SUBSTRING(cZeile,001,65)
  620. + TRIM(bDrucker.Drufette)
  621. + SUBSTRING(cZeile,066).
  622. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  623. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],41,20))
  624. + " "
  625. + STRING(bAufko.Auf_Datum,"99.99.9999").
  626. SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[08],01,20))
  627. + STRING(bAufko.Knr,"z999999").
  628. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],41,20))
  629. + " "
  630. + bAdresse.Tel-1.
  631. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  632. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[09],21,20))
  633. + " "
  634. + STRING(bAufko.Lief_Datum,"99.99.9999").
  635. SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[09],01,20))
  636. + " ". /* Lieferart */
  637. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  638. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],21,20))
  639. + " "
  640. + STRING(bAufko.U_Ref,'x(20)').
  641. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  642. END.
  643. IF iSeite = 1 AND
  644. bAufko.Abh_Text <> '' THEN
  645. DO:
  646. cString = bAufko.Abh_Text.
  647. i2 = 0.
  648. DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)):
  649. SUBSTRING(cZeile,008) = ENTRY(i1, cString, CHR(10)).
  650. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  651. i2 = i2 + 1.
  652. END.
  653. IF i2 > 0 THEN
  654. DO:
  655. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  656. END.
  657. END.
  658. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR.
  659. RUN FIND_FAHRER ( bAufko.Fahrer, OUTPUT cString ).
  660. IF cString <> '' THEN cFahrer = ENTRY(2, cString, CHR(01)) + ' ' + ENTRY(3, cString, CHR(01)).
  661. i1 = (80 - LENGTH(cFahrer)) / 2.
  662. SUBSTRING(cZeile,i1) = CHR(27) + "(s6H"
  663. + cFahrer
  664. + bDrucker.Dru15cpi.
  665. DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR.
  666. END PROCEDURE.
  667. /* ************************ Function Implementations ***************** */
  668. FUNCTION getLogfileName RETURNS CHARACTER
  669. ( /* parameter-definitions */ ) :
  670. /*------------------------------------------------------------------------------*/
  671. /* Purpose: */
  672. /* Parameters: <none> */
  673. /* Notes: */
  674. /*------------------------------------------------------------------------------*/
  675. DEFINE VARIABLE cPath AS CHARACTER NO-UNDO.
  676. DEFINE VARIABLE cProg AS CHARACTER NO-UNDO.
  677. DEFINE VARIABLE ii AS INTEGER NO-UNDO.
  678. cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR.
  679. cProg = REPLACE(Progname, '\', '/').
  680. ii = R-INDEX(cProg, '/').
  681. IF ii > 0 THEN cProg = SUBSTRING(cProg, ii + 1).
  682. cPath = cPath
  683. + cProg
  684. + '_'
  685. + REPLACE(STRING(TODAY,'99.99.9999'), '.', '')
  686. + '.Log'.
  687. RETURN cPath.
  688. END FUNCTION.
  689. FUNCTION putStream RETURNS LOGICAL
  690. ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) :
  691. /*------------------------------------------------------------------------------*/
  692. /* Purpose: */
  693. /* Notes: */
  694. /*------------------------------------------------------------------------------*/
  695. DEFINE VARIABLE cLF AS CHARACTER NO-UNDO.
  696. cLF = FILL(CHR(10), ipAnzZeilen).
  697. CASE ipAttrib:
  698. WHEN 'N' THEN
  699. PUT STREAM out_Stream CONTROL ipZeile.
  700. WHEN 'F' THEN
  701. PUT STREAM out_Stream CONTROL bDrucker.Drufettb ipZeile bDrucker.Drufette.
  702. WHEN 'U' THEN
  703. PUT STREAM out_Stream CONTROL bDrucker.Druunterb ipZeile bDrucker.Druuntere.
  704. END CASE.
  705. PUT STREAM out_Stream CONTROL cLF.
  706. iZeile = iZeile + ipAnzZeilen.
  707. ipZeile = ''.
  708. RETURN TRUE.
  709. END FUNCTION.