&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 &ANALYZE-RESUME USING OpenEdge.Core.String FROM PROPATH. USING OpenEdge.Net.HTTP.ClientBuilder FROM PROPATH. USING OpenEdge.Net.HTTP.Credentials FROM PROPATH. USING OpenEdge.Net.HTTP.IHttpClient FROM PROPATH. USING OpenEdge.Net.HTTP.IHttpRequest FROM PROPATH. USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH. USING OpenEdge.Net.HTTP.RequestBuilder FROM PROPATH. USING OpenEdge.Net.HTTP.ResponseBuilder FROM PROPATH. USING OpenEdge.Net.URI FROM PROPATH. &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure /*------------------------------------------------------------------------ File : Purpose : Syntax : Description : Author(s) : Created : Notes : ----------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* *************************** Definitions ************************** */ DEFINE VARIABLE iRuestArt AS INTEGER NO-UNDO. DEFINE VARIABLE AdFirma AS CHARACTER NO-UNDO FORMAT "x(04)". DEFINE VARIABLE FBFirma 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 sAktiv AS LOGICAL NO-UNDO INIT FALSE. /*DEFINE VARIABLE cBenutzerDaten AS CHARACTER NO-UNDO. */ /*DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO. */ /*DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO. */ DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO. DEFINE VARIABLE iRecid AS RECID NO-UNDO. DEFINE VARIABLE iPlatz AS INTEGER NO-UNDO. DEFINE VARIABLE iAnzahl AS INTEGER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE FormText AS CHARACTER NO-UNDO EXTENT 30. DEFINE VARIABLE iSeite AS INTEGER NO-UNDO. DEFINE VARIABLE iZeile AS INTEGER NO-UNDO. DEFINE VARIABLE iZusZZ AS INTEGER NO-UNDO. DEFINE VARIABLE dDatum AS DATE NO-UNDO. DEFINE VARIABLE cZeile AS CHARACTER NO-UNDO. DEFINE VARIABLE cKopf AS CHARACTER NO-UNDO EXTENT 50. DEFINE VARIABLE cRabText AS CHARACTER NO-UNDO FORMAT "x(25)". DEFINE VARIABLE cZusText AS CHARACTER NO-UNDO FORMAT "x(25)". DEFINE VARIABLE cEpzText AS CHARACTER NO-UNDO FORMAT "x(25)". DEFINE VARIABLE lOpen AS LOGICAL NO-UNDO. DEFINE VARIABLE lMutation AS LOGICAL NO-UNDO INIT FALSE. DEFINE VARIABLE lMailLS AS LOGICAL NO-UNDO INIT FALSE. DEFINE VARIABLE lFirst AS LOGICAL NO-UNDO. DEFINE VARIABLE lDrucken AS LOGICAL NO-UNDO. { properties.i } { incl/ttdruckparam.i } { incl/ttsendmail.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 tAufze NO-UNDO LIKE Aufze FIELD Platz AS INTEGER FIELD Lagort AS CHARACTER FIELD cMutArt AS CHARACTER INDEX tAufze-k1 IS PRIMARY Platz Lagort Pos INDEX tAufze-k2 Firma Aufnr Pos. DEFINE BUFFER btAufze FOR tAufze. DEFINE TEMP-TABLE zAufze LIKE tAufze. DEFINE TEMP-TABLE tRuestAuf LIKE RuestAuf. DEFINE VARIABLE htRuestAuf AS HANDLE NO-UNDO. DEFINE VARIABLE hrawTable AS HANDLE NO-UNDO. htRuestAuf = TEMP-TABLE tRuestAuf:DEFAULT-BUFFER-HANDLE. hrawTable = BUFFER rawTable:HANDLE. 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 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. DEFINE TEMP-TABLE tLagerorte FIELD iPrio AS INTEGER FIELD Art AS INTEGER FIELD Artnr AS INTEGER FIELD Inhalt AS INTEGER FIELD Jahr AS INTEGER FIELD cSort AS CHARACTER FIELD HoReLager_Id AS INTEGER FIELD rHoReLager AS RECID FIELD rLotLager AS RECID FIELD Lotnr AS CHARACTER FIELD Verfall AS DATE FIELD Bestand AS INTEGER FIELD Platz AS INTEGER INDEX tLagerorte-k1 IS PRIMARY Artnr Inhalt Jahr iPrio Art cSort. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE Procedure &Scoped-define DB-AWARE no /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &IF DEFINED(EXCLUDE-getLogfileName) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogfileName Procedure FUNCTION getLogfileName RETURNS CHARACTER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-putStream) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD putStream Procedure FUNCTION putStream RETURNS LOGICAL (ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: Procedure Allow: Frames: 0 Add Fields to: Neither Other Settings: CODE-ONLY COMPILE */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS /* ************************* Create Window ************************** */ &ANALYZE-SUSPEND _CREATE-WINDOW /* DESIGN Window definition (used by the UIB) CREATE WINDOW Procedure ASSIGN HEIGHT = 15 WIDTH = 60. /* END WINDOW DEFINITION */ */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure /* *************************** 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. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO. DEFINE BUFFER dTabel FOR Tabel. DEFINE BUFFER brawTable FOR rawTable. SAktiv = DYNAMIC-FUNCTION('getSuperaktiv':U) NO-ERROR. IF SAktiv = ? THEN SAktiv = FALSE. IF SAktiv THEN DO: AdFirma = DYNAMIC-FUNCTION('getAdMandant':U) NO-ERROR. FBFirma = DYNAMIC-FUNCTION('getFBMandant':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: REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST bTabel NO-LOCK WHERE bTabel.Firma = Firma AND bTabel.RecArt = 'AUFDRUCK' AND bTabel.CodeI > iCodeI AND bTabel.Bez1 = '' AND bTabel.Int_2 = 1 NO-ERROR. IF NOT AVAILABLE bTabel THEN LEAVE TABELLE. tRecid = RECID(bTabel). iCodeI = bTabel.CodeI. 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. NEXT. END. IF NOT AVAILABLE bTabel THEN NEXT. bTabel.Bez1 = 'A'. lDrucken = bTabel.Flag_3. cMessage = SUBSTITUTE('Tabel Flag_3 = &1 ', bTabel.Flag_3 ). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. FIND bAufko NO-LOCK WHERE bAufko.Firma = bTabel.Firma AND bAufko.Aufnr = bTabel.Int_1 NO-ERROR. IF NOT AVAILABLE bAufko THEN DO: DELETE bTabel. RELEASE bTabel. NEXT. END. iAufnr = bAufko.Aufnr. kRecid = RECID(bAufko). iRuestArt = bTabel.Int_3. cRetValue = ''. DO WHILE TRUE: RUN LAGERORTE_ERMITTELN. RUN FUELLEN_tAufze. FIND FIRST tAufze WHERE tAufze.Artnr > 0 NO-ERROR. IF NOT AVAILABLE tAufze THEN DO: DELETE bTabel. RELEASE bTabel. NEXT TABELLE. END. RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR. cMessage = SUBSTITUTE('Auftragsschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. FIND bAufko WHERE RECID(bAufko) = kRecid. RUN AUFTRAGSSCHEIN. cRetValue = RETURN-VALUE. cMessage = SUBSTITUTE('Auftragsschein &1 beendet mit Return-Value = &2', iAufnr, cRetValue). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. IF cRetValue <> '' THEN LEAVE. RUN writeLogfile.p ( ProgName, cLogName, '' ) NO-ERROR. cMessage = SUBSTITUTE('Rüstschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch). RUN writeLogfile.p ( ProgName, cLogName, cMessage ) NO-ERROR. FIND bAufko WHERE RECID(bAufko) = kRecid. RUN RUESTSCHEIN. cRetValue = RETURN-VALUE. cMessage = SUBSTITUTE('Ruestschein &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. NEXT TABELLE. 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. IF NOT lMailLS THEN LEAVE. RUN START_HTML_DOKUMENT ( iAufnr ). LEAVE. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &IF DEFINED(EXCLUDE-AUFTRAGSSCHEIN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN Procedure PROCEDURE AUFTRAGSSCHEIN : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cDokArt AS CHARACTER NO-UNDO. DEFINE VARIABLE hbAufko AS HANDLE NO-UNDO. DEFINE VARIABLE htTabTexte AS HANDLE NO-UNDO. DEFINE VARIABLE nFakBetr AS DECIMAL NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. DEFINE VARIABLE i1 AS INTEGER NO-UNDO. DEFINE VARIABLE i2 AS INTEGER NO-UNDO. cDokArt = 'AUFTRAGSSCHEIN'. iSeite = 0. iZeile = 0. iPlatz = 0. cZeile = ''. lOpen = FALSE. dDatum = bAufko.Lief_Datum. RUN LIBILD ( cDokArt ). hbAufko = BUFFER bAufko:HANDLE. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE. RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR. EMPTY TEMP-TABLE tSchrift. DO WHILE TRUE: FIND FIRST RuestDaten NO-LOCK WHERE RuestDaten.Firma = bAufko.Firma AND RuestDaten.RuestArt = iRuestArt AND Ruestdaten.AS_Doku = TRUE NO-ERROR. IF AVAILABLE RuestDaten THEN DO: iPlatz = RuestDaten.Platz. RUN GET_DRUCKERDATEN ( iPlatz, RuestDaten.AS_Drucker, RuestDaten.AS_Schrift ). IF RETURN-VALUE <> '' THEN RETURN RETURN-VALUE. FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz. ASSIGN tSchrift.Schzztot = RuestDaten.AS_TotZZ tSchrift.Schzzbeg = RuestDaten.AS_KopfZZ tSchrift.Schzzend = RuestDaten.AS_FussZZ tSchrift.Schacht = RuestDaten.AS_Schacht tSchrift.Anzahl = RuestDaten.AS_Anzahl. LEAVE. END. LEAVE. END. EMPTY TEMP-TABLE zAufze. CREATE zAufze. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. cDateiName = SESSION:TEMP-DIR + 'AuftragsSchein' + STRING(TIME,'999999') + STRING(RANDOM(1, 999999),'999999') + '.txt'. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT. lOpen = TRUE. RUN AUFTRAGSSCHEIN_KOPF. i2 = 0. FOR EACH tAufze NO-LOCK WHERE tAufze.Platz = 0: FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. RUN AUFTRAGSSCHEIN_ARTIKELZEILE. i2 = i2 + 1. END. IF i2 > 0 THEN DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. FOR EACH tAufze NO-LOCK WHERE tAufze.Platz > 0 AND tAufze.Platz < 99 BY tAufze.Platz BY tAufze.Lagort BY tAufze.Pos : FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. IF (tSchrift.Schzztot - iZeile - 2) < tSchrift.Schzzend THEN DO: RUN AUFTRAGSSCHEIN_KOPF. END. RUN AUFTRAGSSCHEIN_ARTIKELZEILE. nFakBetr = nFakBetr + tAufze.Net_Betr. END. PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. SUBSTRING(cZeile,040) = SUBSTRING(FormText[15],21,20). SUBSTRING(cZeile,100) = STRING(nFakBetr,"->>>,>>9.99"). DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. PUT STREAM Out_Stream CONTROL bDrucker.Dru12cpi. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. IF BAufko.Auf_Text <> '' THEN DO: cString = BAufko.Auf_Text. i1 = NUM-ENTRIES(cString, CHR(10)). IF i1 > 0 THEN iZusZZ = iZusZZ + i1 + 1. END. IF iZusZZ > 0 THEN iZusZZ = iZusZZ + 2. IF (tSchrift.Schzztot - iZeile - iZusZZ) < tSchrift.Schzzend THEN DO: RUN AUFTRAGSSCHEIN_KOPF. END. /* Auftragstext ------------------------------------------------------ */ cString = BAufko.Auf_Text. IF cString <> '' THEN DO: i2 = 0. DO i1 = 1 TO NUM-ENTRIES(cString, CHR(10)): SUBSTRING(cZeile,005) = ENTRY(i1, cString, CHR(10)). DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. i2 = i2 + 1. END. END. IF i2 > 0 THEN DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. FOR EACH tAufze NO-LOCK WHERE tAufze.Platz = 99: FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. RUN AUFTRAGSSCHEIN_ARTIKELZEILE. i2 = i2 + 1. END. IF lOpen = TRUE THEN DO: OUTPUT STREAM out_Stream CLOSE. lOpen = FALSE. RUN DRUCKAUSGABE NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. END. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-AUFTRAGSSCHEIN_ARTIKELZEILE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN_ARTIKELZEILE Procedure PROCEDURE AUFTRAGSSCHEIN_ARTIKELZEILE : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE dRabWert AS DECIMAL NO-UNDO. DEFINE VARIABLE cString AS CHARACTER NO-UNDO. FIND FIRST zAufze NO-LOCK. PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi. DO WHILE zAufze.Artnr = 0: SUBSTRING(cZeile,040) = STRING(zAufze.Bez1,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. IF zAufze.Bez2 <> '' THEN DO: SUBSTRING(cZeile,040) = STRING(zAufze.Bez2,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. END. RETURN. END. FIND Artst NO-LOCK WHERE Artst.Firma = zAufze.Firma AND Artst.Artnr = zAufze.Artnr AND Artst.Inhalt = zAufze.Inhalt AND Artst.Jahr = zAufze.Jahr. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = bAufko.Firma AND VGebinde.Geb_Cd = zAufze.VGeb_Cd NO-ERROR. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = bAufko.Firma AND KGebinde.Geb_Cd = zAufze.KGeb_Cd NO-ERROR. SUBSTRING(cZeile,003) = STRING(KGebinde.KBez,"x(10)"). IF zAufze.VGeb_Be <> 0 THEN DO: SUBSTRING(cZeile,015) = STRING(zAufze.VGeb_Be,'->>>') + 'x ' + STRING(VGebinde.KBez,'x(10)'). END. SUBSTRING(cZeile,031) = STRING(zAufze.MGeli ,"->>,>>9"). SUBSTRING(cZeile,040) = STRING(zAufze.Bez1 ,"x(30)"). IF zAufze.Jahr > 9 THEN SUBSTRING(cZeile,069) = STRING(zAufze.Jahr,"9999"). IF zAufze.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,074) = STRING(zAufze.Alk_Gehalt,"zz9.9%"). SUBSTRING(cZeile,082) = STRING(zAufze.Artnr ,"999999"). SUBSTRING(cZeile,090) = STRING(zAufze.Preis ,">>,>>9.999"). SUBSTRING(cZeile,100) = STRING(zAufze.Bru_Betr ,"->>>,>>9.99"). SUBSTRING(cZeile,112) = STRING(zAufze.WuCd ,"z9"). cZeile = SUBSTRING(cZeile,001,014) + bDrucker.Drufettb + SUBSTRING(cZeile,015,016) + bDrucker.Drufette + SUBSTRING(cZeile,031). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. IF zAufze.Bez2 <> '' THEN DO: SUBSTRING(cZeile,040) = STRING(zAufze.Bez2,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. END. IF zAufze.Aktion THEN DO: SUBSTRING(cZeile,040) = STRING(zAufze.Aktion_Text,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. END. DO WHILE TRUE: IF zAufze.Rab_Betr = 0 THEN LEAVE. dRabWert = ABSOLUTE(zAufze.Rab_Wert). IF zAufze.Rab_Art = 3 THEN cString = cEpzText. ELSE DO: IF zAufze.Rab_Betr < 0 THEN cString = cZusText. IF zAufze.Rab_Betr > 0 THEN cString = cRabText. END. SUBSTRING(cZeile,040) = TRIM(cString). IF zAufze.Rab_Art = 1 THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"->9.9%"). IF zAufze.Rab_Art = 2 OR zAufze.Rab_Art = 3 THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"-9.99"). SUBSTRING(cZeile,100) = STRING(- zAufze.Rab_Betr ,"->>>,>>9.99"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. LEAVE. END. DO WHILE TRUE: IF zAufze.Zus_Betr = 0 THEN LEAVE. dRabWert = ABSOLUTE(zAufze.Zus_Wert). IF zAufze.Zus_Art = 3 THEN cString = cEpzText. ELSE DO: IF zAufze.Zus_Betr < 0 THEN cString = cRabText. IF zAufze.Zus_Betr > 0 THEN cString = cZusText. END. SUBSTRING(cZeile,040) = TRIM(cString). IF zAufze.Zus_Art = 1 THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"->9.9%"). IF zAufze.Zus_Art = 2 OR zAufze.Zus_Art = 3 THEN SUBSTRING(cZeile,095) = STRING(dRabWert,"-9.99"). SUBSTRING(cZeile,100) = STRING(+ zAufze.Zus_Betr ,"->>>,>>9.99"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile ) NO-ERROR. LEAVE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-AUFTRAGSSCHEIN_KOPF) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN_KOPF Procedure PROCEDURE AUFTRAGSSCHEIN_KOPF : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE kk AS INTEGER 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 cAufnr AS CHARACTER NO-UNDO. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0210100' NO-UNDO. DEFINE VARIABLE cBarcode AS CHARACTER NO-UNDO. RUN NEUE_SEITE. IF iSeite = 1 THEN DO: FIND bDebst NO-LOCK USE-INDEX Debst-k1 WHERE bDebst.Firma = bAufko.Firma AND bDebst.Knr = bAufko.Knr NO-ERROR. END. ASSIGN cKopf = '' cZeile = '' kk = 0. IF bAufko.Adresse[05] <> '' THEN DO: kk = kk + 2. DO ix = 1 TO 5: IF ix = 5 THEN SUBSTRING(cZeile,003) = bDrucker.Drufettb + bAufko.Adresse[ix] + bDrucker.Drufette. ELSE SUBSTRING(cZeile,003) = bAufko.Adresse[ix]. kk = kk + 1. cKopf[kk] = cZeile. cZeile = ''. END. END. ELSE DO: DO ix = 5 TO 11: IF ix = 11 THEN SUBSTRING(cZeile,003) = bDrucker.Drufettb + bAdresse.Anschrift[ix] + bDrucker.Drufette. ELSE SUBSTRING(cZeile,003) = bAdresse.Anschrift[ix]. kk = kk + 1. cKopf[kk] = cZeile. cZeile = ''. END. END. IF iSeite = 1 THEN DO: cAufnr = STRING(bAufko.Aufnr,'9999999'). RUN BAR-CODE-39 ( INPUT cAufnr , INPUT cCodeArt, OUTPUT cBarCode ). kk = kk + 2. SUBSTRING(cKopf[kk],003) = CHR(27) + "&f0S" /* Cursorposition speichern */ + CHR(27) + "*p" /* Cursor neu Positionieren anhand der Zeile */ + STRING(((kk + iZeile) * 50),"9999") + "Y" + cBarcode + CHR(027) + "&f1S". /* Cusrorposition zurückholen */ END. kk = 12. IF bAufko.Auf_Tot >= 0 THEN SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[02],01,20)). ELSE SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[02],21,20)). cKopf[kk] = cKopf[kk] + STRING(bAufko.Aufnr,"zz999999"). cKopf[kk] = SUBSTRING(cKopf[kk],001,066) + bDrucker.Drufettb + SUBSTRING(cKopf[kk],067) + bDrucker.Drufette. kk = kk + 2. IF iSeite = 1 THEN DO: FIND FIRST tTabtexte NO-LOCK WHERE tTabTexte.cRecArt = 'ABLAD' NO-ERROR. IF AVAILABLE tTabTexte THEN DO: SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[19],01,20)) + TRIM(bDrucker.Drufettb) + ' ' + tTabTexte.cFeld3 + TRIM(bDrucker.Drufette). cZeile = ''. kk = kk + 1. END. FIND FIRST tTabtexte NO-LOCK WHERE tTabTexte.cRecArt = 'WISO' NO-ERROR. IF AVAILABLE tTabTexte THEN DO: SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[19],21,20)) + TRIM(bDrucker.Drufettb) + ' ' + tTabTexte.cFeld3 + TRIM(bDrucker.Drufette). cZeile = ''. kk = kk + 1. END. SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[07],41,20)) + " " + STRING(bAufko.Auf_Datum,"99.99.9999"). SUBSTRING(cKopf[kk],034) = TRIM(SUBSTRING(FormText[08],01,20)) + STRING(bAufko.Knr,"zzzzzzz999999"). SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[07],01,20)) + " " + STRING(dDatum,"99.99.9999"). cZeile = ''. kk = kk + 1. SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[09],21,20)) + " " + STRING(bAufko.Lief_Datum,"99.99.9999"). SUBSTRING(cKopf[kk],034) = TRIM(SUBSTRING(FormText[08],21,20)) + STRING(bAufko.Gewicht,"z,zzz,zz9.999-"). SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[20],01,20)) + STRING(iSeite,'z9'). cKopf[kk] = SUBSTRING(cKopf[kk],01,33) + bDrucker.Drufettb + SUBSTRING(cKopf[kk],34,33) + bDrucker.Drufette + SUBSTRING(cKopf[kk],67). cZeile = ''. kk = kk + 1. SUBSTRING(cKopf[kk],003) = TRIM(SUBSTRING(FormText[07],21,20)) + " " + STRING(bAufko.U_Ref,'x(20)'). SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[08],41,20)) + " " + bAdresse.Tel-1. cZeile = ''. END. ELSE DO: kk = kk + 2. SUBSTRING(cKopf[kk],067) = TRIM(SUBSTRING(FormText[20],01,20)) + STRING(iSeite,'z9'). kk = kk + 1. END. kk = kk + 2. cZeile = 'Inhalt Gebinde Menge Bezeichnung JG Alk% ArtNr Preis Betrag C'. SUBSTRING(cKopf[kk],003) = bDrucker.Druunterb + cZeile + bDrucker.Druuntere. SUBSTRING(cKopf[kk - 1],003) = bDrucker.Druunterb + FILL(' ', LENGTH(cZeile)) + bDrucker.Druuntere. cKopf[kk - 1] = bDrucker.Dru15cpi + bDrucker.Drufettb + cKopf[kk - 1] + bDrucker.Drufettb + bDrucker.Dru12cpi. cKopf[kk] = bDrucker.Dru15cpi + bDrucker.Drufettb + cKopf[kk] + bDrucker.Drufettb + bDrucker.Dru12cpi. kk = kk + 1. cZeile = ''. DO ix = 1 TO kk: cZeile = cKopf[ix]. DYNAMIC-FUNCTION('putStream':U, 'N', 1, 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,003) = 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. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-BAR-CODE-39) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BAR-CODE-39 Procedure PROCEDURE BAR-CODE-39 : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-CREATE_RUESTAUFTRAG) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE CREATE_RUESTAUFTRAG Procedure PROCEDURE CREATE_RUESTAUFTRAG : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iSubPos AS INTEGER NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE BUFFER bRuestAuf FOR RuestAuf. DEFINE BUFFER mTabel FOR Tabel. DISABLE TRIGGERS FOR LOAD OF RuestAuf. EMPTY TEMP-TABLE tRuestAuf. EMPTY TEMP-TABLE zAufze . FIND FIRST tAufze NO-ERROR. IF NOT AVAILABLE tAufze THEN RETURN. FIND bAufko NO-LOCK OF tAufze NO-ERROR. lMailLS = TRUE. IF bAufko.Auf_Sta > 1 THEN lMailLS = FALSE. IF bAufko.Fahrer = 0 THEN lMailLS = FALSE. REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr NO-ERROR. lFirst = (IF AVAILABLE RuestAuf THEN FALSE ELSE TRUE). IF lFirst THEN lMailLS = FALSE. IF lFirst THEN DO: /* ------------------------------------------ */ /* Erstmaliger Druck */ /* ------------------------------------------ */ FOR EACH tAufze: CREATE zAufze. BUFFER-COPY tAufze TO zAufze ASSIGN zAufze.cMutArt = 'NN'. END. LEAVE. END. FOR EACH RuestAuf NO-LOCK WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr: /* ------------------------------------------ */ /* Test auf RuestAuftragszeilen ohne Aufze */ /* ------------------------------------------ */ FIND Aufze NO-LOCK OF RuestAuf NO-ERROR. IF NOT AVAILABLE Aufze THEN DO: lMutation = TRUE. lRetVal = DYNAMIC-FUNCTION ('deleteRuestAuf':U, RECID(RuestAuf)) NO-ERROR. RELEASE RuestAuf. NEXT. END. CREATE tRuestAuf. BUFFER-COPY RuestAuf TO tRuestAuf. END. FOR EACH tAufze: CREATE zAufze. BUFFER-COPY tAufze TO zAufze. FIND FIRST tRuestAuf WHERE tRuestAuf.Firma = tAufze.Firma AND tRuestAuf.Aufnr = tAufze.Aufnr AND tRuestAuf.Pos = tAufze.Pos NO-ERROR. IF NOT AVAILABLE tRuestAuf THEN DO: zAufze.cMutArt = 'NN'. NEXT. END. IF tRuestAuf.lGeruestet AND tRuestAuf.MBest = zAufze.MBest AND tRuestAuf.Lagerort = zAufze.Lagort THEN NEXT. IF NOT tRuestAuf.lGeruestet AND tRuestAuf.MGeli = 0 AND tRuestAuf.Lagerort = zAufze.Lagort THEN NEXT. IF zAufze.MBest < tRuestAuf.MGeli THEN DO: FIND Aufze NO-LOCK OF tAufze. FIND RuestAuf NO-LOCK OF tRuestAuf. lRetVal = DYNAMIC-FUNCTION ('deleteRuestAuf':U, RECID(RuestAuf)) NO-ERROR. lRetVal = DYNAMIC-FUNCTION ('deleteAufLot':U , RECID(Aufze)) NO-ERROR. zAufze.cMutArt = 'NN'. NEXT. END. zAufze.cMutArt = 'M'. END. LEAVE. END. REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FOR EACH zAufze NO-LOCK WHERE zAufze.cMutArt <> '': FIND FIRST tLagerorte WHERE tlagerorte.Artnr = zAufze.Artnr AND tLagerorte.Inhalt = zAufze.Inhalt AND tLagerorte.Jahr = zAufze.Jahr. IF zAufze.cMutArt BEGINS 'N' THEN DO: CREATE RuestAuf. ASSIGN RuestAuf.Firma = zAufze.Firma RuestAuf.Aufnr = zAufze.Aufnr RuestAuf.Platz = tLagerorte.Platz RuestAuf.Pos = zAufze.Pos RuestAuf.SubPos = iSubPos RuestAuf.Artnr = zAufze.Artnr RuestAuf.Inhalt = zAufze.Inhalt RuestAuf.Jahr = zAufze.Jahr RuestAuf.Lagerort = tLagerorte.cSort RuestAuf.GGeb_Best = zAufze.GGeb_Be RuestAuf.VGeb_Best = zAufze.VGeb_Be RuestAuf.KGeb_Best = zAufze.KGeb_Be RuestAuf.lGeladen = FALSE RuestAuf.lGeruestet = FALSE RuestAuf.lLAGedruckt = FALSE RuestAuf.lLSGedruckt = FALSE RuestAuf.lPAGedruckt = FALSE RuestAuf.lRSGedruckt = FALSE RuestAuf.lWeiter = FALSE RuestAuf.MBest = zAufze.MBest RuestAuf.AnzPaletten = 0 RuestAuf.iMenge = 0 RuestAuf.GGeb_Geli = 0 RuestAuf.VGeb_Geli = 0 RuestAuf.KGeb_Geli = 0 RuestAuf.MGeli = 0 RuestAuf.RecidArtLager = ? RuestAuf.Verfall = ? RuestAuf.Lotnr = '' RuestAuf.RecidHoReLager = tLagerorte.rHoReLager RuestAuf.RecidLotLager = tLagerorte.rLotLager RuestAuf.iMenge = zAufze.KGeb_Be NO-ERROR. NEXT. END. IF zAufze.cMutArt = 'M' THEN DO: FIND FIRST RuestAuf WHERE RuestAuf.Firma = zAufze.Firma AND RuestAuf.Aufnr = zAufze.Aufnr AND RuestAuf.Pos = zAufze.Pos. ASSIGN RuestAuf.Lagerort = zAufze.Lagort RuestAuf.Platz = tLagerorte.Platz RuestAuf.MBest = zAufze.MBest RuestAuf.iMenge = zAufze.MBest RuestAuf.GGeb_Best = zAufze.GGeb_Be RuestAuf.VGeb_Best = zAufze.VGeb_Be RuestAuf.KGeb_Best = zAufze.KGeb_Be RuestAuf.lGeladen = FALSE RuestAuf.lGeruestet = FALSE RuestAuf.lLAGedruckt = FALSE RuestAuf.lLSGedruckt = FALSE RuestAuf.lPAGedruckt = FALSE RuestAuf.lRSGedruckt = FALSE RuestAuf.lWeiter = FALSE. END. END. RELEASE Aufze . RELEASE RuestAuf. RELEASE Aufko . LEAVE. END. IF NOT lMailLS THEN RETURN . lMutation = FALSE. FOR EACH zAufze NO-LOCK WHERE zAufze.cMutArt <> '': FIND Aufze NO-LOCK OF zAufze NO-ERROR. FIND FIRST rawTable NO-LOCK WHERE rawTable.Firma = Aufze.Firma AND rawTable.Tabelle = 'RUESTAUF' AND rawTable.Tabelle_Id = RECID(Aufze) NO-ERROR. IF NOT AVAILABLE rawTable THEN NEXT. lMutation = TRUE. LEAVE. END. IF lMutation THEN DO: REPEAT TRANSACTION ON ERROR UNDO, LEAVE: FIND FIRST zAufze NO-ERROR. FOR EACH RuestAuf NO-LOCK WHERE RuestAuf.Firma = zAufze.Firma AND RuestAuf.Aufnr = zAufze.Aufnr AND RuestAuf.lGeladen: FIND bRuestAuf WHERE RECID(bRuestAuf) = RECID(RuestAuf) EXCLUSIVE-LOCK NO-WAIT NO-ERROR. IF AVAILABLE bRuestAuf THEN DO: bRuestAuf.lGeladen = FALSE. RELEASE bRuestAuf. NEXT. END. END. RELEASE RuestAuf. LEAVE. END. END. lMailLS = lMutation. RETURN. /* Neuer Rüstschein erstellt */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-DRUCKAUSGABE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKAUSGABE 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 WHILE lDrucken: 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. MESSAGE cString VIEW-AS ALERT-BOX ERROR. RETURN ERROR. END. IF iKopie < iAnzKopien THEN DO: ETIME(TRUE). DO WHILE ETIME(FALSE) < 200: END. END. END. OS-DELETE VALUE(cDateiName) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-FUELLEN_tAUFZE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tAUFZE Procedure PROCEDURE FUELLEN_tAufze : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* 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. ASSIGN minPos = 0 maxPos = 9999. /* -------------------------------------- */ /* Kommentar zu Beginn eines Auftrages */ /* -------------------------------------- */ lArtikel = FALSE. FOR EACH Aufze NO-LOCK USE-INDEX Aufze-k1 WHERE Aufze.Firma = Firma AND Aufze.Aufnr = bAufko.Aufnr AND Aufze.Pos > minPos: IF Aufze.Artnr > 0 THEN DO: lArtikel = TRUE. LEAVE. END. minPos = Aufze.Pos. CREATE tAufze. BUFFER-COPY Aufze TO tAufze ASSIGN tAufze.Platz = 0 tAufze.LagOrt = ''. END. /* ---------------------------------------------- */ /* Kommentar am Ende eines Auftrages */ /* ebenfalls an den Anfang des Auftrages schieben */ /* ---------------------------------------------- */ IF lArtikel THEN DO: FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Firma AND Aufze.Aufnr = bAufko.Aufnr BY Aufze.Pos DESCENDING: IF Aufze.Artnr > 0 THEN LEAVE. maxPos = Aufze.Pos. CREATE tAufze. BUFFER-COPY Aufze TO tAufze ASSIGN tAufze.Platz = 0 tAufze.LagOrt = ''. END. END. /* ------------------------------------------------------ */ /* Artikelzeilen dem Ruestsektor und Lagerplatz zuteilen */ /* ------------------------------------------------------ */ FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Firma AND Aufze.Aufnr = bAufko.Aufnr AND Aufze.Pos > minPos AND Aufze.Pos < MaxPos: IF Aufze.Artnr > 0 THEN DO: cLagOrt = ''. jPlatz = -1. FOR FIRST tLagerOrte NO-LOCK WHERE tLagerOrte.Artnr = Aufze.Artnr AND tLagerOrte.Inhalt = Aufze.Inhalt AND tLagerOrte.Jahr = Aufze.Jahr : cLagOrt = tLagerorte.cSort. jPlatz = tLagerorte.Platz. END. END. CREATE tAufze. BUFFER-COPY Aufze TO tAufze ASSIGN tAufze.Platz = jPlatz tAufze.LagOrt = cLagort. END. /* OUTPUT TO 'C:\Entwicklung\TEMP\OE117WRK\tAufze.csv'.*/ /* FOR EACH tAufze: */ /* EXPORT DELIMITER ';' tAufze. */ /* END. */ /* OUTPUT CLOSE. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-GET_DRUCKERDATEN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GET_DRUCKERDATEN 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-LAGERORTE_ERMITTELN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LAGERORTE_ERMITTELN Procedure PROCEDURE LAGERORTE_ERMITTELN : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iArt AS INTEGER NO-UNDO. DEFINE VARIABLE iRecid AS RECID NO-UNDO. EMPTY TEMP-TABLE tLagerOrte. FOR EACH bAufze NO-LOCK WHERE bAufze.Firma = bAufko.Firma AND bAufze.Aufnr = bAUfko.Aufnr AND bAufze.Artnr > 0, FIRST bArtst NO-LOCK WHERE bArtst.Firma = bAufze.Firma AND bArtst.Artnr = bAufze.Artnr AND bArtst.Inhalt = bAufze.Inhalt AND bArtst.Jahr = bAufze.Jahr : FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = bAufze.Firma AND HoReLager.Art = 1 AND HoReLager.Lager = bAufze.Lager AND HoReLager.Artnr = bAufze.Artnr AND HoReLager.Inhalt = bAufze.Inhalt AND HoReLager.Jahr = bAufze.Jahr NO-ERROR. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = bAufze.Firma AND HoReLager.Art = 1 AND HoReLager.Lager = bAufze.Lager AND HoReLager.Artnr = bAufze.Artnr AND HoReLager.Inhalt = bAufze.Inhalt NO-ERROR. END. IF NOT AVAILABLE HoReLager THEN DO: FIND FIRST HoReLager NO-LOCK WHERE HoReLager.Firma = bAufze.Firma AND HoReLager.Art = 3 AND HoReLager.Lager = bAufze.Lager AND HoReLager.Artnr = bAufze.Artnr AND HoReLager.Inhalt = bAufze.Inhalt NO-ERROR. END. CREATE tLagerOrte. ASSIGN tLagerorte.iPrio = 1 tLagerorte.Artnr = bAufze.Artnr tLagerorte.Inhalt = bAufze.Inhalt tLagerorte.Jahr = bAufze.Jahr tLagerorte.cSort = (IF AVAILABLE HoReLager THEN HoReLager.cSort ELSE '99' ) tLagerorte.HoReLager_Id = (IF AVAILABLE HoReLager THEN HoReLager.HoReLager_Id ELSE 0 ) tLagerorte.Bestand = (IF AVAILABLE HoReLager THEN HoReLager.Bestand ELSE bAufze.MBest ) tLagerorte.Lotnr = '' tLagerorte.Verfall = ? tLagerorte.rHoReLager = (IF AVAILABLE HoReLager THEN RECID(HoReLager) ELSE ? ) tLagerorte.rLotLager = ? tLagerorte.Art = (IF AVAILABLE HoReLager THEN HoReLager.Art ELSE 1 ) tLagerorte.Platz = iPlatz. END. FOR EACH tLagerOrte: FIND LAST RuestPlatz NO-LOCK USE-INDEX RuestPlatz-k2 WHERE RuestPlatz.Firma = Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.abLagort <= tLagerorte.cSort NO-ERROR. tLagerorte.Platz = (IF AVAILABLE RuestPlatz THEN RuestPlatz.Platz ELSE 0). END. /* OUTPUT TO 'C:\Entwicklung\TEMP\OE117WRK\tLagerorte.csv'.*/ /* FOR EACH tLagerorte: */ /* EXPORT DELIMITER ';' tLagerorte. */ /* END. */ /* OUTPUT CLOSE. */ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-LIBILD) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LIBILD 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. cRabText = TRIM(SUBSTRING(FormText[21],01,20)). cZusText = TRIM(SUBSTRING(FormText[21],21,20)). cEpzText = TRIM(SUBSTRING(FormText[21],41,20)). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-NEUE_SEITE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEUE_SEITE 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-RUESTSCHEIN) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN Procedure PROCEDURE RUESTSCHEIN : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cDokArt AS CHARACTER NO-UNDO. DEFINE VARIABLE hbAufko AS HANDLE NO-UNDO. DEFINE VARIABLE htTabTexte AS HANDLE NO-UNDO. DEFINE VARIABLE nFakBetr AS DECIMAL 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 cDrucker AS CHARACTER NO-UNDO. ASSIGN cDokArt = 'RUEST' iSeite = 0 iZeile = 0 iPlatz = 0 cZeile = '' lOpen = FALSE dDatum = bAufko.Lief_Datum lMutation = FALSE. RUN CREATE_RUESTAUFTRAG. RUN LIBILD ( cDokArt ). hbAufko = BUFFER bAufko:HANDLE. htTabTexte = TEMP-TABLE tTabTexte:DEFAULT-BUFFER-HANDLE. RUN CREATE_TABTEXTE ( INPUT hbAufko, INPUT-OUTPUT htTabTexte ) NO-ERROR. EMPTY TEMP-TABLE tSchrift. FOR EACH RuestDaten NO-LOCK WHERE RuestDaten.Firma = bAufko.Firma AND RuestDaten.RuestArt = iRuestArt AND RuestDaten.Platz > 0 AND RuestDaten.RU_Doku = TRUE : iPlatz = RuestDaten.Platz. RUN GET_DRUCKERDATEN ( iPlatz, RuestDaten.RU_Drucker, RuestDaten.RU_Schrift ). IF RETURN-VALUE <> '' THEN RETURN RETURN-VALUE. FIND FIRST tSchrift WHERE tSchrift.iPlatz = iPlatz. ASSIGN tSchrift.Schzztot = RuestDaten.RU_TotZZ tSchrift.Schzzbeg = RuestDaten.RU_KopfZZ tSchrift.Schzzend = RuestDaten.RU_FussZZ tSchrift.Schacht = RuestDaten.RU_Schacht tSchrift.Anzahl = RuestDaten.RU_Anzahl. END. EMPTY TEMP-TABLE zAufze. CREATE zAufze. FOR EACH tAufze NO-LOCK WHERE tAufze.Platz > 0 AND tAufze.Platz < 99 AND tAufze.Artnr > 0 BREAK BY tAufze.Platz BY tAufze.Lagort BY tAufze.Pos : FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze ASSIGN zAufze.Lagort = tAufze.Lagort zAufze.Platz = tAufze.Platz. DO WHILE TRUE: IF NOT FIRST-OF ( tAufze.Platz ) THEN LEAVE. ASSIGN iSeite = 0 iZeile = 0 iPlatz = tAufze.Platz. FIND FIRST tSchrift NO-LOCK WHERE tSchrift.iPlatz = iPlatz. FIND bDrucker NO-LOCK WHERE bDrucker.Drucker = tSchrift.SchDru. IF NOT lOpen THEN DO: cDrucker = tSchrift.Schname. cDateiName = SESSION:TEMP-DIR + 'RuestPapier' + STRING(TIME,'999999') + STRING(RANDOM(1, 999999),'999999') + '.txt'. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT. lOpen = TRUE. LEAVE. END. IF tSchrift.Schname = cDrucker THEN DO: PUT STREAM out_Stream CONTROL CHR(12). LEAVE. END. OUTPUT STREAM out_Stream CLOSE. lOpen = FALSE. RUN DRUCKAUSGABE NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. cDrucker = tSchrift.Schname. cDateiName = SESSION:TEMP-DIR + 'RuestPapier' + STRING(TIME,'999999') + STRING(RANDOM(1, 999999),'999999') + '.txt'. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT. lOpen = TRUE. LEAVE. END. IF iSeite = 0 OR (tSchrift.Schzztot - iZeile - 2) <= tSchrift.Schzzend THEN DO: RUN RUESTSCHEIN_KOPF ( iPlatz ). FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. END. RUN RUESTSCHEIN_ARTIKELZEILE. IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT. cZeile = FILL('=', 100). DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. FOR EACH btAufze NO-LOCK WHERE btAufze.Platz = 99: FIND FIRST zAufze. BUFFER-COPY btAufze TO zAufze. RUN RUESTSCHEIN_ARTIKELZEILE. i2 = i2 + 1. END. END. FOR EACH RuestAuf WHERE RuestAuf.Firma = bAufko.Firma AND RuestAuf.Aufnr = bAufko.Aufnr: RuestAuf.lRSGedruckt = TRUE. END. IF lOpen THEN DO: OUTPUT STREAM out_Stream CLOSE. lOpen = FALSE. RUN DRUCKAUSGABE NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. END. IF bAufko.Auf_Sta < 1 THEN RUN WEITER ( bAufko.Aufnr ). RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-RUESTSCHEIN_ARTIKELZEILE) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN_ARTIKELZEILE Procedure PROCEDURE RUESTSCHEIN_ARTIKELZEILE: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cBarCode AS CHARACTER NO-UNDO. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO. /* DEF VAR cCodeArt AS CHAR INIT 'P0205075' NO-UNDO. */ DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205080' NO-UNDO. FIND FIRST zAufze NO-LOCK. PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi. DO WHILE zAufze.Artnr = 0: SUBSTRING(cZeile,036) = STRING(zAufze.Bez1,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. IF zAufze.Bez2 <> '' THEN DO: SUBSTRING(cZeile,036) = STRING(zAufze.Bez2,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. RETURN. END. FIND Artst NO-LOCK OF zAufze. FIND VGebinde WHERE VGebinde.Firma = zAufze.Firma AND VGebinde.Geb_Cd = zAufze.VGeb_Cd NO-ERROR. FIND KGebinde WHERE KGebinde.Firma = zAufze.Firma AND KGebinde.Geb_Cd = zAufze.KGeb_Cd NO-ERROR. FIND FIRST ArtLief NO-LOCK WHERE ArtLief.Firma = zAufze.Firma AND ArtLief.Artnr = zAufze.Artnr AND ArtLief.Inhalt = zAufze.Inhalt AND ArtLief.Jahr = zAufze.Jahr AND ArtLief.Strichcode_KGeb <> '' NO-ERROR. cBarCode = ''. oBarCode = ''. IF AVAILABLE ArtLief THEN DO: IF ArtLief.Strichcode_KGeb <> '' THEN cBarCode = ArtLief.Strichcode_KGeb. END. IF cBarCode = '' THEN cBarCode = Artst.Strichcode. IF cBarCode = '' THEN cBarCode = TRIM(STRING(zAufze.Artnr ,'zzzzz9')) + '.' + TRIM(STRING(zAufze.Inhalt,'zzz9')) + '.' + TRIM(STRING(zAufze.Jahr ,'zzz9')). ELSE cBarCode = ''. /* Alle Artikelbarcode drucken */ /* IF cBarCode = '' THEN cBarCode = TRIM(STRING(zAufze.Artnr ,'zzzzz9'))*/ /* + '.' */ /* + TRIM(STRING(zAufze.Inhalt,'zzz9')) */ /* + '.' */ /* + TRIM(STRING(zAufze.Jahr ,'zzz9')). */ /* -------------------------- */ IF cBarCode <> '' THEN DO: . RUN BAR-CODE-39 ( INPUT cBarCode, INPUT cCodeArt, OUTPUT oBarCode ). END. SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)"). IF zAufze.VGeb_Be <> 0 THEN DO: SUBSTRING(cZeile,012) = STRING(zAufze.VGeb_Be,'->>>') + 'x ' + VGebinde.KBez. END. SUBSTRING(cZeile,028) = STRING(zAufze.MBest ,"->>>>9"). SUBSTRING(cZeile,036) = STRING(zAufze.Bez1 ,"x(30)"). IF zAufze.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(zAufze.Alk_Gehalt,"zz9.9%"). IF zAufze.Jahr > 9 THEN SUBSTRING(cZeile,075) = STRING(zAufze.Jahr,"9999"). SUBSTRING(cZeile,081) = STRING(zAufze.Artnr ,"999999"). FIND FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = zAufze.Firma AND RuestAuf.Aufnr = zAufze.Aufnr AND RuestAuf.Pos = zAufze.Pos. SUBSTRING(cZeile,089) = RuestAuf.Lagerort. cZeile = bDrucker.Drufettb + SUBSTRING(cZeile,001,027) + bDrucker.Drufette + SUBSTRING(cZeile,028,061) + bDrucker.Drufettb + SUBSTRING(cZeile,089,014) + bDrucker.Drufette + SUBSTRING(cZeile,103). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. IF zAufze.Bez2 <> '' THEN DO: SUBSTRING(cZeile,036) = STRING(zAufze.Bez2,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. IF oBarCode <> '' THEN DO: SUBSTRING(cZeile,036) = CHR(27) + "&f0S" /* Cursorposition speichern */ + CHR(27) + "*p" /* Cursor neu Positionieren anhand der Zeile */ + STRING((iZeile * 50) - 25,"9999") + "Y" + oBarcode + CHR(027) + "&f1S". /* Cusrorposition zurückholen */ DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. ELSE DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-RUESTSCHEIN_KOPF) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN_KOPF Procedure PROCEDURE RUESTSCHEIN_KOPF: /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* 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. /* 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') + '.' + TRIM(STRING(ipPlatz,'>9')). 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 iSeite = 1 THEN */ /* DO: */ /* FIND LDebst USE-INDEX Debst-k1 */ /* WHERE LDebst.Firma = bAufko.Firma */ /* AND LDebst.Knr = bAufko.Knr NO-LOCK NO-ERROR.*/ /* FIND FDebst USE-INDEX Debst-k1 */ /* WHERE FDebst.Firma = bAufko.Firma */ /* AND FDebst.Knr = bAufko.Fak_Knr NO-LOCK NO-ERROR.*/ /* END. */ 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. IF bAufko.Auf_Tot >= 0 THEN SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],01,20). ELSE SUBSTRING(cZeile,008) = SUBSTRING(FormText[02],21,20). IF lMutation THEN cZeile = cZeile + ' (KORREKTUR) '. SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20)) + " " + STRING(dDatum,"99.99.9999"). cZeile = bDrucker.Drufettb + SUBSTRING(cZeile,001,50) + bDrucker.Drufette + SUBSTRING(cZeile,051). 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. SUBSTRING(cZeile,001) = TRIM(SUBSTRING(FormText[03],01,70)). SUBSTRING(cZeile,071) = TRIM(SUBSTRING(FormText[04],01,70)). DYNAMIC-FUNCTION('putStream':U, 'F', 2, INPUT-OUTPUT cZeile) NO-ERROR. 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. IF iSeite = 1 THEN DO: i2 = 0. FOR EACH btAufze NO-LOCK WHERE btAufze.Platz = 0: FIND FIRST zAufze. BUFFER-COPY btAufze TO zAufze. RUN RUESTSCHEIN_ARTIKELZEILE. i2 = i2 + 1. END. IF i2 > 0 THEN DO: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. FIND FIRST RuestPlatz NO-LOCK WHERE RuestPlatz.Firma = bAufko.Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.Platz = ipPlatz NO-ERROR. i1 = (98 - LENGTH(RuestPlatz.Bezeichnung)) / 2. cZeile = FILL('=', i1) + ' ' + RuestPlatz.Bezeichnung + ' ' + FILL('=', i1). DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. DO WHILE iSeite > 1: DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. LEAVE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-START_HTML_DOKUMENT) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE START_HTML_DOKUMENT Procedure PROCEDURE START_HTML_DOKUMENT : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipiAufnr AS INTEGER NO-UNDO. DEFINE VARIABLE cDateiName AS CHARACTER NO-UNDO. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO. DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO. DEFINE VARIABLE oClient AS IHttpClient NO-UNDO. DEFINE VARIABLE oURI AS URI NO-UNDO. DEFINE VARIABLE oCredentials AS Credentials NO-UNDO. DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO. DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO. DEFINE VARIABLE oResponseBody AS String NO-UNDO. DEFINE VARIABLE lcString AS LONGCHAR NO-UNDO INIT ''. DEFINE VARIABLE cString AS LONGCHAR NO-UNDO INIT ''. DEFINE VARIABLE cPath AS CHARACTER NO-UNDO. cDateiName = SUBSTITUTE('&1&2.html', SESSION:TEMP-DIRECTORY, STRING(ipiAufnr,'9999999')). System.Net.ServicePointManager:CertificatePolicy = NEW AllowCertificatePolicy(). oClient = ClientBuilder:Build():Client. oURI = NEW URI('http', cWebHost, INTEGER(cWebPort) ). cPath = '/' + cWebPath + REPLACE(SUBSTITUTE('/ruesten_anpassung.p?Firma=&1£Aufnr=&2', Firma, ipiAufnr ), '£', '&'). oURI:Path = cPath. REPEAT TRANSACTION ON ERROR UNDO, LEAVE: oRequest = RequestBuilder:Build('POST', oURI):ContentType('application/x-www-form-urlencoded'):Request. oResponse = ResponseBuilder:Build():Response. oResponse = ClientBuilder:Build():Client:Execute(oRequest). oResponseBody = CAST(oResponse:Entity, OpenEdge.Core.STRING). lcString = oResponseBody:VALUE. COPY-LOB lcString TO FILE cDateiName NO-CONVERT. /* cDateiName = SEARCH(cDateiName).*/ cString = lcString. IF cString <> '' THEN DO: EMPTY TEMP-TABLE tRuestAuf. CREATE tRuestAuf. FOR EACH rawTable WHERE rawTable.Firma = Firma AND rawTable.Tabelle = 'RUESTAUF': FIND FIRST tRuestAuf. htRuestAuf:RAW-TRANSFER (FALSE, hrawTable:BUFFER-FIELD('rawData')). IF tRuestAuf.Aufnr <> ipiAufnr THEN NEXT. DELETE rawTable. RELEASE rawTable. END. END. LEAVE. END. DELETE OBJECT oUri. EMPTY TEMP-TABLE ttSendMail. CREATE ttSendMail. ASSIGN /* ttSendMail.cFrom = cMailFromRuestAuf*/ ttSendMail.cTo = cMailToRuestAuf ttSendMail.cCC = 'wr@adprime.ch' ttSendMail.cBC = '' ttSendMail.cSubject = SUBSTITUTE('Aenderung in gerüstetem Auftrag &1', ipiAufnr) ttSendMail.cBody = SUBSTITUTE('FILE:&1', cDateiName) ttSendMail.cAttachedName = '' ttSendMail.cAttachedFile = '' ttSendMail.cMailServer = cMailServer ttSendMail.cMailPort = cMailPort ttSendMail.cMailKonto = cMailKonto ttSendMail.cMailPassw = cMailPassw ttSendMail.cDomaine = cMailDomaine ttsendmail.lAuth = lMailAuth ttSendMail.lSSLEnabled = lSSLEnabled. RUN 'sendsmtpmail.p' ( INPUT httSendMail, OUTPUT cMessage, OUTPUT lRetVal ). END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF /* ************************ Function Implementations ***************** */ &IF DEFINED(EXCLUDE-getLogfileName) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogfileName Procedure 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF &IF DEFINED(EXCLUDE-putStream) = 0 &THEN &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION putStream Procedure FUNCTION putStream RETURNS LOGICAL ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ENDIF