/*------------------------------------------------------------------------ File : Palettenschein.p Purpose : Syntax : Description : Author(s) : walter.riechsteiner Created : Mon May 31 14:11:18 CEST 2021 Notes : ----------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ BLOCK-LEVEL ON ERROR UNDO, THROW. DEFINE VARIABLE sAktiv AS LOGICAL NO-UNDO INIT FALSE. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO FORMAT "x(04)". DEFINE VARIABLE Firma AS CHARACTER NO-UNDO FORMAT "x(04)". DEFINE VARIABLE Progname AS CHARACTER NO-UNDO. DEFINE VARIABLE cLogName AS CHARACTER NO-UNDO. DEFINE VARIABLE lBatch AS LOGICAL NO-UNDO INIT TRUE. DEFINE VARIABLE cUser AS CHARACTER NO-UNDO. DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO. DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO. DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO. DEFINE VARIABLE iSeite AS INTEGER NO-UNDO. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO. DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE lOpen AS LOGICAL NO-UNDO. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO. DEFINE VARIABLE cKopf AS CHARACTER NO-UNDO EXTENT 50. DEFINE VARIABLE FormText AS CHARACTER NO-UNDO EXTENT 30. DEFINE VARIABLE cDruckProgramm AS CHARACTER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE cDrucker AS CHARACTER NO-UNDO. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO. { properties.i } { incl/ttdruckparam.i } DEFINE STREAM out_Stream. DEFINE BUFFER bAufko FOR Aufko . DEFINE BUFFER bAufze FOR Aufze . DEFINE BUFFER bTabel FOR Tabel . DEFINE BUFFER bArtst FOR Artst . DEFINE BUFFER bSchrift FOR Schrift . DEFINE BUFFER bDrucker FOR Drucker . DEFINE BUFFER bSteuer FOR Steuer . DEFINE BUFFER bDebst FOR Debst . DEFINE BUFFER bAdresse FOR Adresse . DEFINE BUFFER bLotLager FOR LotLager . DEFINE BUFFER bHoReLager FOR HoReLager. DEFINE TEMP-TABLE tDrucker NO-UNDO FIELD Drucker AS CHARACTER. DEFINE TEMP-TABLE tSchrift NO-UNDO LIKE Schrift FIELD iPlatz AS INTEGER FIELD Schacht AS INTEGER FIELD Anzahl AS INTEGER FIELD iRecid AS RECID INDEX tSchrift-k1 IS PRIMARY iPlatz Schname Schbild. DEFINE TEMP-TABLE tAufze NO-UNDO LIKE Aufze FIELD Platz AS INTEGER FIELD Lagort AS CHARACTER INDEX tAufze-k1 IS PRIMARY Platz Lagort Artnr. DEFINE TEMP-TABLE tTabTexte FIELD cRecArt AS CHARACTER FIELD iZeile AS INTEGER FIELD cFeld1 AS CHARACTER FIELD cFeld2 AS CHARACTER FIELD cFeld3 AS CHARACTER FIELD iFeld1 AS INTEGER FIELD iFeld2 AS INTEGER FIELD iFeld3 AS INTEGER INDEX tTabTexte-k1 IS PRIMARY cRecArt iZeile. /* ******************** Preprocessor Definitions ******************** */ /* ************************ Function Prototypes ********************** */ FUNCTION getLogfileName RETURNS CHARACTER ( ) FORWARD. FUNCTION putStream RETURNS LOGICAL (ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD. /* *************************** Main Block *************************** */ DEFINE VARIABLE cPrinters AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE kRecid AS RECID NO-UNDO. DEFINE VARIABLE tRecid AS RECID NO-UNDO. DEFINE VARIABLE cRetValue AS CHARACTER NO-UNDO. DEFINE VARIABLE iCodeI AS INTEGER NO-UNDO INIT -1. DEFINE BUFFER dTabel FOR Tabel. SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR. IF SAktiv = ? THEN SAktiv = FALSE. IF SAktiv THEN DO: AdFirma = DYNAMIC-FUNCTION('getAdMandant':U) NO-ERROR. Firma = DYNAMIC-FUNCTION('getMandant':U) NO-ERROR. Progname = DYNAMIC-FUNCTION('makeProgname':U, INPUT THIS-PROCEDURE ) NO-ERROR. cUser = DYNAMIC-FUNCTION('getBenutzer') NO-ERROR. cLogName = DYNAMIC-FUNCTION('getLogFileName':U) NO-ERROR. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR. END. EMPTY TEMP-TABLE tDrucker. EMPTY TEMP-TABLE tSchrift. cPrinters = SESSION:GET-PRINTERS(). DO ix = 1 TO NUM-ENTRIES(cPrinters, ','): CREATE tDrucker. ASSIGN tDrucker.Drucker = ENTRY(ix, cPrinters, ','). END. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = Firma. TABELLE: DO WHILE TRUE: TABTRANS: REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST bTabel NO-LOCK WHERE bTabel.Firma = Firma AND bTabel.RecArt = 'wsLADEPAPIER' AND bTabel.CodeI > iCodeI AND bTabel.Bez1 = '' AND bTabel.Int_2 = 3 NO-ERROR. IF NOT AVAILABLE bTabel THEN LEAVE TABELLE. tRecid = RECID(bTabel). iCodeI = bTabel.CodeI. iPlatz = bTabel.Dec_1. iAnzahl = bTabel.Dec_2. iRuestArt = bTabel.Int_3. iAufnr = bTabel.Int_1. cRuester = bTabel.Bez2. FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR. IF NOT AVAILABLE bTabel AND LOCKED bTabel THEN DO: RELEASE bTabel. FIND Tabel NO-LOCK WHERE RECID(Tabel) = tRecid NO-ERROR. IF NOT AVAILABLE Tabel THEN NEXT. cMessage = SUBSTITUTE('Tabel LOCKED RecArt &1, CodeI &2, Aufnr &3, Int_2 &4, Drucker &5', Tabel.RecArt, Tabel.CodeI, Tabel.Int_1, Tabel.Int_2, cPrinters). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. RELEASE Tabel. LEAVE TABTRANS. END. IF NOT AVAILABLE bTabel THEN LEAVE TABTRANS. bTabel.Bez1 = 'A'. FIND bAufko NO-LOCK WHERE bAufko.Firma = bTabel.Firma AND bAufko.Aufnr = iAufnr NO-ERROR. IF NOT AVAILABLE bAufko THEN DO: DELETE bTabel. RELEASE bTabel. LEAVE TABTRANS. END. kRecid = RECID(bAufko). cRetValue = ''. dDatum = bAufko.Lief_Datum. DO WHILE TRUE: RUN FUELLEN_tAufze. FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR. IF NOT AVAILABLE tAufze THEN DO: DELETE bTabel. RELEASE bTabel. LEAVE TABTRANS. END. RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR. cMessage = SUBSTITUTE('Ladeschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. FIND bAufko NO-LOCK WHERE RECID(bAufko) = kRecid. RUN LADESCHEIN. cRetValue = RETURN-VALUE. cMessage = SUBSTITUTE('Ladeschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. LEAVE. END. IF cRetValue <> '' THEN DO: bTabel.Bez1 = 'F'. RELEASE bTabel. LEAVE TABTRANS. END. IF AVAILABLE bTabel THEN DO: FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = kRecid NO-WAIT NO-ERROR. IF AVAILABLE Aufko THEN Aufko.Gedruckt = TRUE. RELEASE Aufko. DELETE bTabel. RELEASE bTabel. END. LEAVE. END. END. /* ********************** Internal Procedures *********************** */ PROCEDURE BAR-CODE-39 : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipWert AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER ipCodeArt AS CHARACTER NO-UNDO. DEFINE OUTPUT PARAMETER opBarCode AS CHARACTER NO-UNDO. DEFINE VARIABLE clr AS LOG INIT TRUE NO-UNDO. DEFINE VARIABLE wk AS CHARACTER NO-UNDO. DEFINE VARIABLE drw AS CHARACTER NO-UNDO. DEFINE VARIABLE cDir AS CHARACTER NO-UNDO. DEFINE VARIABLE k AS CHARACTER NO-UNDO. DEFINE VARIABLE att AS CHARACTER NO-UNDO. DEFINE VARIABLE kod AS CHARACTER NO-UNDO INIT "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.Ø *$/+%". att = "100100001001100001101100000000110001100110000001110000000100101100100100" + "001100100000110100100001001001001001101001000000011001100011000001011000" + "000001101100001100001001100000011100100000011001000011101000010000010011" + "100010010001010010000000111100000110001000110000010110110000001011000001" + "111000000010010001110010000011010000010000101110000100011000100010010100" + "010101000010100010010001010000101010". DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE j AS INTEGER NO-UNDO. DEFINE VARIABLE l AS INTEGER NO-UNDO. DEFINE VARIABLE brd AS INTEGER NO-UNDO. DEFINE VARIABLE jst AS INTEGER NO-UNDO. ASSIGN i = (IF SUBSTRING (ipCodeArt, 1, 1) = "P" THEN 1 ELSE 2) opBarCode = "~E&f0S~E*c100G" drw = SUBSTRING("ab" , i, 1) + SUBSTRING(ipCodeArt, 6) + SUBSTRING("ba" , i, 1) + "P" cDir = SUBSTRING("XY", i, 1) k = "*" + ipWert + "*" . DO i = 1 TO LENGTH(k): ASSIGN j = INDEX(kod, SUBSTRING (k, i, 1)) * 9 - 8 wk = SUBSTRING (att, j, 9) + "0" . DO l = 1 TO 10: ASSIGN brd = IF SUBSTRING(wk,l,1) = "0" THEN 2 ELSE 4 opBarCode = opBarCode + (IF clr THEN "~E*c" + SUBSTRING (ipCodeArt, brd, 2) + drw ELSE "~E*p+" + STRING(INTEGER(SUBSTRING(ipCodeArt, brd, 2)) + jst) + cDir) jst = INTEGER (SUBSTRING (ipCodeArt, brd, 2)) clr = NOT clr. END. /* of looping 1 to 10 */ END. /* of going through string 'k' */ ASSIGN opBarCode = opBarCode + "~E&f1S" wk = "". END PROCEDURE. PROCEDURE DRUCKAUSGABE: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iAnzKopien AS INTEGER NO-UNDO. DEFINE VARIABLE sRecid AS RECID NO-UNDO. DEFINE VARIABLE iSize AS INTEGER NO-UNDO. DEFINE VARIABLE iKopie AS INTEGER NO-UNDO. DEFINE VARIABLE iSchacht AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER INIT '' NO-UNDO. FIND FIRST tSchrift NO-LOCK WHERE tSchrift.iPlatz = iPlatz NO-ERROR. IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift. sRecid = tSchrift.iRecid. iAnzKopien = tSchrift.Anzahl. iSchacht = tSchrift.Schacht. RUN writeLogfile.p ( ProgName, cLogName, SUBSTITUTE('Druckausgabe -> Platz: &1, Drucker: &2, Schrift: &3', tSchrift.iPlatz, tSchrift.Schname, tSchrift.Schbild) ) NO-ERROR. IF iAnzKopien = 0 THEN iAnzKopien = 1. DO iKopie = 1 TO iAnzKopien: iSize = DYNAMIC-FUNCTION('putDateiToPrinter':U, cDateiName , sRecid , tSchrift.Schacht , 240 , /* Blockgrösse */ 'ibm850' , iAnzKopien ). /* Anzahl Kopien */ IF iSize = 0 THEN DO: cString = 'Druckvorgang gescheitert !!! '. RUN writeLogfile.p ( ProgName, cLogName, cString ) NO-ERROR. IF lBatch THEN RETURN ERROR. RETURN cString. END. IF iKopie < iAnzKopien THEN DO: ETIME(TRUE). DO WHILE ETIME(FALSE) < 200: END. END. END. OS-DELETE VALUE(cDateiName) NO-ERROR. END PROCEDURE. PROCEDURE FUELLEN_tAufze: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE minPos AS INTEGER NO-UNDO. DEFINE VARIABLE maxPos AS INTEGER NO-UNDO. DEFINE VARIABLE jPlatz AS INTEGER NO-UNDO. DEFINE VARIABLE cLagOrt AS CHARACTER NO-UNDO. DEFINE VARIABLE lArtikel AS LOG NO-UNDO. EMPTY TEMP-TABLE tAufze. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Firma AND Aufze.Aufnr = bAufko.Aufnr AND Aufze.Artnr > 0, FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = Aufze.Firma AND RuestAuf.Aufnr = Aufze.Aufnr AND RuestAuf.Pos = Aufze.Pos : CREATE tAufze. BUFFER-COPY Aufze TO tAufze ASSIGN tAufze.Platz = RuestAuf.Platz tAufze.LagOrt = RuestAuf.Lagerort. END. END PROCEDURE. PROCEDURE GET_DRUCKERDATEN : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipPlatz AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER ipDrucker AS CHARACTER NO-UNDO. DEFINE INPUT PARAMETER ipSchrift AS CHARACTER NO-UNDO. DEFINE VARIABLE lJa AS LOG INIT TRUE NO-UNDO. DEFINE VARIABLE lError AS LOG INIT TRUE NO-UNDO. DO WHILE TRUE: FIND FIRST tDrucker NO-LOCK WHERE tDrucker.Drucker = ipDrucker NO-ERROR. IF AVAILABLE tDrucker THEN LEAVE. cMessage = SUBSTITUTE('Der gewünschte Drucker &1 ist nicht verfügbar ', ipDrucker). RETURN cMessage. END. RUN CHECKPRINTER ( ipDrucker, OUTPUT lError ) NO-ERROR. IF lError THEN RETURN SUBSTITUTE('Drucker &1 konnte nicht angewählt werden', ipDrucker). DO WHILE TRUE: FIND FIRST Schrift NO-LOCK WHERE Schrift.SchName = ipDrucker AND Schrift.SchBild = ipSchrift NO-ERROR. IF AVAILABLE Schrift THEN LEAVE. FIND FIRST Schrift NO-LOCK WHERE Schrift.SchName = SESSION:PRINTER-NAME AND Schrift.SchBild = ipSchrift NO-ERROR. IF AVAILABLE Schrift THEN LEAVE. cMessage = 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden'. RETURN cMessage. END. CREATE tSchrift. BUFFER-COPY Schrift TO tSchrift ASSIGN tSchrift.iPlatz = ipPlatz tSchrift.SchName = SESSION:PRINTER-NAME tSchrift.iRecid = RECID(Schrift). FIND bDrucker NO-LOCK WHERE bDrucker.Drucker = tSchrift.SchDru. RETURN ''. END PROCEDURE. PROCEDURE LIBILD: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipDokArt AS CHARACTER NO-UNDO. DEFINE VARIABLE cProgName AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. cProgName = bSteuer.Fwc10 + ":" + ipDokArt. FormText = "". FOR EACH LiBild USE-INDEX LiBild-k1 WHERE LiBild.Sprcd = 1 AND LiBild.Prog = cProgName AND LiBild.Tenr > 0 NO-LOCK ix = 1 TO 40: FormText[ix] = LiBild.Litext. END. END PROCEDURE. PROCEDURE NEUE_SEITE : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO. IF iSeite > 0 THEN DO: PUT STREAM out_Stream CONTROL CHR(12). END. FIND FIRST tSchrift NO-LOCK WHERE tSchrift.iPlatz = iPlatz. cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg). IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile. iZeile = tSchrift.Schzzbeg. iSeite = iSeite + 1. END PROCEDURE. PROCEDURE LADESCHEIN: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cDokArt AS CHARACTER NO-UNDO. DEFINE VARIABLE hbAufko AS HANDLE NO-UNDO. DEFINE VARIABLE htTabTexte AS HANDLE NO-UNDO. /* DEFINE VARIABLE cString AS CHARACTER NO-UNDO.*/ /* DEFINE VARIABLE i1 AS INTEGER NO-UNDO.*/ /* DEFINE VARIABLE i2 AS INTEGER NO-UNDO.*/ DEFINE VARIABLE xPlatz AS INTEGER NO-UNDO. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO. DEFINE VARIABLE iAnzPal AS INTEGER NO-UNDO. DEFINE VARIABLE cAufnr AS CHARACTER NO-UNDO. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205090' NO-UNDO. FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR. IF NOT AVAILABLE tAufze THEN RETURN ''. cRetVal = DYNAMIC-FUNCTION('calculateAuftragsTotal':U, tAufze.Firma, tAufze.Aufnr, OUTPUT nTotale) NO-ERROR. cMessage = SUBSTITUTE('Ladeschein &1 Platz &2 gestartet', tAufze.Aufnr, iPlatz). RUN writeLogFile.p ( Progname, cLogName, cMessage) NO-ERROR. cDokArt = 'LADEPAPIER'. iSeite = 0. iZeile = 0. cDrucker = ''. lOpen = FALSE. cZeile = ''. RUN LIBILD ( cDokArt ). hbAufko = BUFFER bAufko:HANDLE. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE. RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ). EMPTY TEMP-TABLE tSchrift. FOR EACH RuestDaten NO-LOCK WHERE RuestDaten.Firma = bAufko.Firma AND RuestDaten.RuestArt = iRuestArt AND RuestDaten.Platz > 0 AND Ruestdaten.LA_Doku = TRUE: xPlatz = RuestDaten.Platz. RUN GET_DRUCKERDATEN ( xPlatz, RuestDaten.LA_Drucker, RuestDaten.LA_Schrift ). IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. FIND FIRST tSchrift WHERE tSchrift.iPlatz = xPlatz. ASSIGN tSchrift.Schzztot = RuestDaten.LA_TotZZ tSchrift.Schzzbeg = RuestDaten.LA_KopfZZ tSchrift.Schzzend = RuestDaten.LA_FussZZ tSchrift.Schacht = RuestDaten.LA_Schacht tSchrift.Anzahl = RuestDaten.LA_Anzahl. END. FIND FIRST tSchrift NO-LOCK WHERE tSchrift.iPlatz = iPlatz. IF tSchrift.Schzzbeg = 0 THEN tSchrift.Schzzbeg = 1. IF tSchrift.Schzzend = 0 THEN tSchrift.Schzzend = 3. IF tSchrift.Schzztot = 0 THEN tSchrift.Schzztot = 66. FIND bDrucker NO-LOCK WHERE bDrucker.Drucker = tSchrift.SchDru. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. FOR EACH tAufze NO-LOCK BREAK BY tAufze.Platz BY tAufze.Lagort BY tAufze.Pos : IF FIRST-OF ( tAufze.Platz ) THEN iAnz = 0. IF tAufze.MGeli <> 0 THEN iAnz = iAnz + 1. IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT. FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz NO-ERROR. IF NOT AVAILABLE tSchrift THEN FIND FIRST tSchrift. FIND bDrucker NO-LOCK WHERE bDrucker.Drucker = tSchrift.SchDru. IF NOT lOpen THEN DO: cDrucker = tSchrift.Schname. cDateiName = SESSION:TEMP-DIR + 'LadePapier' + STRING(TIME,'999999') + STRING(RANDOM(1, 999999),'999999') + '.txt'. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT. lOpen = TRUE. END. IF iSeite = 0 THEN RUN LADESCHEIN_KOPF ( iPlatz ). FIND FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr AND RuestAuf.Platz = tAufze.Platz NO-ERROR. IF NOT AVAILABLE RuestAuf THEN DO: FIND FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr AND RuestAuf.Artnr = tAufze.Artnr NO-ERROR. END. iAnzPal = (IF AVAILABLE RuestAuf THEN RuestAuf.AnzPaletten ELSE 1). cAufnr = STRING(bAufko.Aufnr,'9999999') + '.' + TRIM(STRING(tAufze.Platz,'>9')) + ' - ' + (IF iAnz = 0 THEN 'KEINE LIEFERUNG' ELSE TRIM(STRING(iAnzPal,'->>>>>>>>>>9'))) + ' / ' + (IF AVAILABLE RuestAuf THEN RuestAuf.Ruester ELSE 'unbekannt'). SUBSTRING(cZeile,20) = bDrucker.Dru10cpi + cAufnr + bDrucker.Dru15cpi. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. IF iAnz > 0 THEN DO: cAufnr = STRING(bAufko.Aufnr,'9999999') + '.' + TRIM(STRING(tAufze.Platz,'>9')). RUN BAR-CODE-39 ( INPUT cAufnr , INPUT cCodeArt, OUTPUT oBarCode ). SUBSTRING(cZeile,20) = oBarCode. DYNAMIC-FUNCTION('putStream':U, 'N', 4, INPUT-OUTPUT cZeile) NO-ERROR. END. END. IF lOpen THEN DO: OUTPUT STREAM out_Stream CLOSE. lOpen = FALSE. RUN DRUCKAUSGABE NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. END. cMessage = SUBSTITUTE('Ladepapier &1 beendet', bAufko.Aufnr). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. RETURN ''. END PROCEDURE. PROCEDURE LADESCHEIN_KOPF: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipPlatz AS INTEGER NO-UNDO. DEFINE VARIABLE cAufnr AS CHARACTER NO-UNDO. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO. DEFINE VARIABLE ix AS INTEGER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. DEFINE VARIABLE i2 AS INTEGER NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE cLeerZeile AS CHARACTER NO-UNDO. DEFINE VARIABLE cFahrer AS CHARACTER NO-UNDO. DEFINE BUFFER btAufze FOR tAufze. /* DEF VAR cCodeArt AS CHAR INIT 'P0205075' NO-UNDO. */ /* P = Portrait */ /* L = Landscape */ DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0210200' NO-UNDO. RUN NEUE_SEITE. PUT STREAM out_Stream CONTROL bDrucker.Dru15cpi. PUT STREAM out_Stream CONTROL CHR(27) '&k2G'. cAufnr = STRING(bAufko.Aufnr,'9999999'). RUN BAR-CODE-39 ( INPUT cAufnr , INPUT cCodeArt, OUTPUT oBarCode ). oBarCode = CHR(027) + "*p" + "100y" + "100X" + oBarCode + CHR(027) + "*p" + "405y" + "260X" + bDrucker.Drufettb + bDrucker.Dru10cpi + bDrucker.Drufettb + cAufnr + bDrucker.Drufette + bDrucker.Dru15cpi + bDrucker.Drufette + CHR(027) + "*p" + "0y" + "0X". PUT STREAM out_Stream CONTROL oBarCode. FIND FIRST tSchrift NO-LOCK WHERE tSchrift.iPlatz = iPlatz. cLeerZeile = FILL(CHR(10), tSchrift.Schzzbeg). IF cLeerZeile <> '' THEN PUT STREAM out_Stream cLeerZeile. iZeile = tSchrift.Schzzbeg. IF bAufko.Adresse[05] <> '' THEN DO: DO ix = 1 TO 5: SUBSTRING(cZeile,066) = bAufko.Adresse[ix]. IF ix = 5 THEN DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. ELSE DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. END. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. ELSE DO: DO ix = 6 TO 12: SUBSTRING(cZeile,066) = bAdresse.Anschrift[ix]. IF ix = 11 THEN DO: DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. ELSE DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. END. END. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. IF bAufko.Auf_Tot >= 0 THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20). ELSE SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20). cZeile = bDrucker.Dru10cpi + SUBSTRING(cZeile,001,30) + bDrucker.Dru15cpi. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20)) + " " + STRING(dDatum,"99.99.9999"). DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. IF iSeite = 1 THEN DO: FIND FIRST tTabtexte NO-LOCK WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR. IF AVAILABLE tTabTexte THEN SUBSTRING(cZeile,008) = tTabTexte.cFeld3. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],21,20)) + STRING(bAufko.Gewicht,"zz,zz9.999-"). cZeile = TRIM(bDrucker.Drufettb) + SUBSTRING(cZeile,001,65) + TRIM(bDrucker.Drufette) + SUBSTRING(cZeile,066). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],41,20)) + " " + STRING(bAufko.Auf_Datum,"99.99.9999"). SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[08],01,20)) + STRING(bAufko.Knr,"z999999"). SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[08],41,20)) + " " + bAdresse.Tel-1. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[09],21,20)) + " " + STRING(bAufko.Lief_Datum,"99.99.9999"). SUBSTRING(cZeile,038) = TRIM(SUBSTRING(FormText[09],01,20)) + " ". /* Lieferart */ DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. SUBSTRING(cZeile,008) = TRIM(SUBSTRING(FormText[07],21,20)) + " " + STRING(bAufko.U_Ref,'x(20)'). DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. IF iSeite = 1 AND bAufko.Abh_Text <> '' THEN DO: cString = bAufko.Abh_Text. i2 = 0. DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)): SUBSTRING(cZeile,008) = ENTRY(i1, cString, CHR(10)). DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. i2 = i2 + 1. END. IF i2 > 0 THEN DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. END. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. RUN FIND_FAHRER ( bAufko.Fahrer, OUTPUT cString ). IF cString <> '' THEN cFahrer = ENTRY(2, cString, CHR(01)) + ' ' + ENTRY(3, cString, CHR(01)). i1 = (80 - LENGTH(cFahrer)) / 2. SUBSTRING(cZeile,i1) = CHR(27) + "(s6H" + cFahrer + bDrucker.Dru15cpi. DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR. END PROCEDURE. /* ************************ Function Implementations ***************** */ FUNCTION getLogfileName RETURNS CHARACTER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cPath AS CHARACTER NO-UNDO. DEFINE VARIABLE cProg AS CHARACTER NO-UNDO. DEFINE VARIABLE ii AS INTEGER NO-UNDO. cPath = DYNAMIC-FUNCTION ('getLogFilePfad':U) NO-ERROR. cProg = REPLACE(Progname, '\', '/'). ii = R-INDEX(cProg, '/'). IF ii > 0 THEN cProg = SUBSTRING(cProg, ii + 1). cPath = cPath + cProg + '_' + REPLACE(STRING(TODAY,'99.99.9999'), '.', '') + '.Log'. RETURN cPath. END FUNCTION. FUNCTION putStream RETURNS LOGICAL ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cLF AS CHARACTER NO-UNDO. cLF = FILL(CHR(10), ipAnzZeilen). CASE ipAttrib: WHEN 'N' THEN PUT STREAM out_Stream CONTROL ipZeile. WHEN 'F' THEN PUT STREAM out_Stream CONTROL bDrucker.Drufettb ipZeile bDrucker.Drufette. WHEN 'U' THEN PUT STREAM out_Stream CONTROL bDrucker.Druunterb ipZeile bDrucker.Druuntere. END CASE. PUT STREAM out_Stream CONTROL cLF. iZeile = iZeile + ipAnzZeilen. ipZeile = ''. RETURN TRUE. END FUNCTION.