&ANALYZE-SUSPEND _VERSION-NUMBER AB_v10r12 GUI ADM2 &ANALYZE-RESUME &Scoped-define WINDOW-NAME CURRENT-WINDOW &Scoped-define FRAME-NAME gDruckenRuesten {adecomm/appserv.i} &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS gDruckenRuesten /*------------------------------------------------------------------------ File: Description: from cntnrdlg.w - ADM2 SmartDialog Template Input Parameters: Output Parameters: Author: Created: ------------------------------------------------------------------------*/ /* This .W file was created with the Progress AppBuilder. */ /*----------------------------------------------------------------------*/ /* Create an unnamed pool to store all the widgets created by this procedure. This is a good default which assures that this procedure's triggers and internal procedures will execute in this procedure's storage, and that proper cleanup will occur on deletion of the procedure. */ CREATE WIDGET-POOL. /* *************************** Definitions ************************** */ /* Parameters Definitions --- */ /* Local Variable Definitions --- */ { incl/dlgdefinition.i } { incl/ttdruckparam.i } DEFINE VARIABLE cBenutzerDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE cBenutzer AS CHARACTER NO-UNDO. DEFINE VARIABLE iAufnr AS INTEGER NO-UNDO. DEFINE VARIABLE iRecid AS RECID NO-UNDO. DEFINE VARIABLE iRuestArt AS INTEGER 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 EXTENT 30 NO-UNDO. 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 EXTENT 50 NO-UNDO. DEFINE VARIABLE cRabText AS CHARACTER FORMAT "x(25)" NO-UNDO. DEFINE VARIABLE cZusText AS CHARACTER FORMAT "x(25)" NO-UNDO. DEFINE VARIABLE cEpzText AS CHARACTER FORMAT "x(25)" NO-UNDO. DEFINE VARIABLE cRuester AS CHARACTER NO-UNDO. DEFINE VARIABLE lOpen AS LOG NO-UNDO. DEFINE VARIABLE lWebSpeed AS LOG NO-UNDO. DEFINE VARIABLE cLogName AS CHARACTER NO-UNDO. DEFINE VARIABLE lBatch AS LOG INIT TRUE NO-UNDO. DEFINE STREAM LogStream. DEFINE BUFFER bAufko FOR Aufko . DEFINE BUFFER bAufze FOR Aufze . DEFINE BUFFER bAufGKon FOR AufGKon . DEFINE BUFFER bTabel FOR Tabel . DEFINE BUFFER bSchrift FOR Schrift . DEFINE BUFFER bDrucker FOR Drucker . DEFINE BUFFER bSteuer FOR Steuer . DEFINE BUFFER LDebst FOR Debst . DEFINE BUFFER FDebst FOR Debst . DEFINE BUFFER bAdresse FOR Adresse . 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 btAufze LIKE tAufze. DEFINE TEMP-TABLE zAufze LIKE tAufze. DEFINE TEMP-TABLE tRueck NO-UNDO LIKE tAufze INDEX tRueck-k1 IS PRIMARY Platz Lagort Artnr. 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 WORKFILE WDrucker FIELD Drucker AS CHARACTER FIELD Schrift AS CHARACTER FIELD TotZZ AS INTEGER FIELD BegZZ AS INTEGER FIELD EndZZ AS INTEGER FIELD AnzKop AS INTEGER FIELD SchOri AS INTEGER FIELD SchKop AS INTEGER FIELD Besr AS INTEGER FIELD SchBesr AS INTEGER FIELD iRecid AS RECID. DEFINE TEMP-TABLE tHoReLager LIKE HoReLager FIELD iPrior AS INTEGER FIELD iRecid AS RECID . DEFINE VARIABLE htHoReLager AS HANDLE NO-UNDO. htHoReLager = TEMP-TABLE tHoReLager:DEFAULT-BUFFER-HANDLE. DEFINE TEMP-TABLE tLotLager LIKE LotLager FIELD iRecid AS RECID . DEFINE VARIABLE htLotLager AS HANDLE NO-UNDO. htLotLager = TEMP-TABLE tLotLager:DEFAULT-BUFFER-HANDLE. DEFINE TEMP-TABLE tLagerorte FIELD cArt AS CHARACTER FIELD iRecid AS RECID FIELD iBestand AS INTEGER FIELD cSort AS CHARACTER FIELD Lotnr AS CHARACTER FIELD Verfall AS DATE FIELD lLotnr AS LOGICAL FIELD lVerfall AS LOGICAL FIELD HoReLager_Id AS INTEGER FIELD rHoReLager AS RECID FIELD rLotLager AS RECID FIELD iMenge AS INTEGER INDEX tLagerorte-k1 IS PRIMARY cSort. DEFINE STREAM out_Stream. { src/adm2/widgetprto.i } /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK /* ******************** Preprocessor Definitions ******************** */ &Scoped-define PROCEDURE-TYPE SmartDialog &Scoped-define DB-AWARE no &Scoped-define ADM-CONTAINER DIALOG-BOX &Scoped-define ADM-SUPPORTED-LINKS Data-Target,Data-Source,Page-Target,Update-Source,Update-Target /* Name of designated FRAME-NAME and/or first browse and/or first query */ &Scoped-define FRAME-NAME gDruckenRuesten /* Standard List Definitions */ &Scoped-Define ENABLED-OBJECTS RECT-2 F_Aufnr F_Knr F_Kunde F_Dokument ~ F_Drucker F_Schrift Btn_OK Btn_Cancel &Scoped-Define DISPLAYED-OBJECTS F_Aufnr F_Knr F_Kunde F_Dokument F_Drucker ~ F_Schrift /* Custom List Definitions */ /* List-1,List-2,List-3,List-4,List-5,List-6 */ &Scoped-define List-6 F_Aufnr F_Knr F_Kunde F_Dokument F_Drucker F_Schrift /* _UIB-PREPROCESSOR-BLOCK-END */ &ANALYZE-RESUME /* ************************ Function Prototypes ********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getHoreLager gDruckenRuesten FUNCTION getHoreLager RETURNS INTEGER (iprtAufze AS RECID) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLogName gDruckenRuesten FUNCTION getLogName RETURNS CHARACTER ( /* parameter-definitions */ ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD getLotLager gDruckenRuesten FUNCTION getLotLager RETURNS INTEGER (iprtAufze AS RECID) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD putStream gDruckenRuesten FUNCTION putStream RETURNS LOGICAL ( ipAttrib AS CHARACTER, ipAnzZeilen AS INTEGER, INPUT-OUTPUT ipZeile AS CHARACTER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD writeLogFile gDruckenRuesten FUNCTION writeLogFile RETURNS LOGICAL ( ipMessage AS CHARACTER ) FORWARD. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********************** Control Definitions ********************** */ /* Define a dialog box */ /* Definitions of the field level widgets */ DEFINE BUTTON Btn_Cancel AUTO-END-KEY LABEL "abbrechen" SIZE 15 BY 1. DEFINE BUTTON Btn_OK AUTO-GO LABEL "OK" SIZE 15 BY 1. DEFINE VARIABLE F_Aufnr AS INTEGER FORMAT "zzzzzz9":U INITIAL 0 LABEL "Auftrag" VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Dokument AS CHARACTER FORMAT "X(256)":U LABEL "Dokument" VIEW-AS FILL-IN NATIVE SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Drucker AS CHARACTER FORMAT "X(256)":U LABEL "Drucker" VIEW-AS FILL-IN NATIVE SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Knr AS INTEGER FORMAT "zzzzzz9":U INITIAL 0 LABEL "Kunde" VIEW-AS FILL-IN NATIVE SIZE 12 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Kunde AS CHARACTER FORMAT "X(256)":U LABEL "/" VIEW-AS FILL-IN NATIVE SIZE 80 BY 1 BGCOLOR 15 NO-UNDO. DEFINE VARIABLE F_Schrift AS CHARACTER FORMAT "X(256)":U LABEL "Schrift" VIEW-AS FILL-IN NATIVE SIZE 40 BY 1 BGCOLOR 15 NO-UNDO. DEFINE RECTANGLE RECT-2 EDGE-PIXELS 2 GRAPHIC-EDGE NO-FILL SIZE 115.2 BY 8.1. /* ************************ Frame Definitions *********************** */ DEFINE FRAME gDruckenRuesten F_Aufnr AT ROW 2 COL 14 COLON-ALIGNED WIDGET-ID 4 F_Knr AT ROW 3 COL 14 COLON-ALIGNED WIDGET-ID 6 F_Kunde AT ROW 3 COL 29 COLON-ALIGNED WIDGET-ID 8 NO-TAB-STOP F_Dokument AT ROW 4.52 COL 14 COLON-ALIGNED WIDGET-ID 10 NO-TAB-STOP F_Drucker AT ROW 5.52 COL 14 COLON-ALIGNED WIDGET-ID 12 NO-TAB-STOP F_Schrift AT ROW 6.52 COL 14 COLON-ALIGNED WIDGET-ID 14 NO-TAB-STOP Btn_OK AT ROW 10.91 COL 34.6 Btn_Cancel AT ROW 10.91 COL 55.8 RECT-2 AT ROW 1.48 COL 3 WIDGET-ID 2 SPACE(3.99) SKIP(3.08) WITH VIEW-AS DIALOG-BOX KEEP-TAB-ORDER SIDE-LABELS NO-UNDERLINE THREE-D SCROLLABLE TITLE "Drucken bei Rüstverwaltung" CANCEL-BUTTON Btn_Cancel WIDGET-ID 100. /* *********************** Procedure Settings ************************ */ &ANALYZE-SUSPEND _PROCEDURE-SETTINGS /* Settings for THIS-PROCEDURE Type: SmartDialog Allow: Basic,Browse,DB-Fields,Query,Smart Container Links: Data-Target,Data-Source,Page-Target,Update-Source,Update-Target Design Page: 1 Other Settings: COMPILE APPSERVER */ &ANALYZE-RESUME _END-PROCEDURE-SETTINGS &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB gDruckenRuesten /* ************************* Included-Libraries *********************** */ {src/adm2/containr.i} /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* *********** Runtime Attributes and AppBuilder Settings *********** */ &ANALYZE-SUSPEND _RUN-TIME-ATTRIBUTES /* SETTINGS FOR DIALOG-BOX gDruckenRuesten FRAME-NAME */ ASSIGN FRAME gDruckenRuesten:SCROLLABLE = FALSE FRAME gDruckenRuesten:HIDDEN = TRUE. /* SETTINGS FOR FILL-IN F_Aufnr IN FRAME gDruckenRuesten 6 */ /* SETTINGS FOR FILL-IN F_Dokument IN FRAME gDruckenRuesten 6 */ ASSIGN F_Dokument:READ-ONLY IN FRAME gDruckenRuesten = TRUE. /* SETTINGS FOR FILL-IN F_Drucker IN FRAME gDruckenRuesten 6 */ ASSIGN F_Drucker:READ-ONLY IN FRAME gDruckenRuesten = TRUE. /* SETTINGS FOR FILL-IN F_Knr IN FRAME gDruckenRuesten 6 */ /* SETTINGS FOR FILL-IN F_Kunde IN FRAME gDruckenRuesten 6 */ ASSIGN F_Kunde:READ-ONLY IN FRAME gDruckenRuesten = TRUE. /* SETTINGS FOR FILL-IN F_Schrift IN FRAME gDruckenRuesten 6 */ ASSIGN F_Schrift:READ-ONLY IN FRAME gDruckenRuesten = TRUE. /* _RUN-TIME-ATTRIBUTES-END */ &ANALYZE-RESUME /* Setting information for Queries and Browse Widgets fields */ &ANALYZE-SUSPEND _QUERY-BLOCK DIALOG-BOX gDruckenRuesten /* Query rebuild information for DIALOG-BOX gDruckenRuesten _Options = "SHARE-LOCK" _Query is NOT OPENED */ /* DIALOG-BOX gDruckenRuesten */ &ANALYZE-RESUME /* ************************ Control Triggers ************************ */ &Scoped-define SELF-NAME gDruckenRuesten &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gDruckenRuesten gDruckenRuesten ON END-ERROR OF FRAME gDruckenRuesten /* Drucken bei Rüstverwaltung */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL gDruckenRuesten gDruckenRuesten ON WINDOW-CLOSE OF FRAME gDruckenRuesten /* Drucken bei Rüstverwaltung */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_Cancel &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_Cancel gDruckenRuesten ON CHOOSE OF Btn_Cancel IN FRAME gDruckenRuesten /* abbrechen */ DO: RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &Scoped-define SELF-NAME Btn_OK &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CONTROL Btn_OK gDruckenRuesten ON CHOOSE OF Btn_OK IN FRAME gDruckenRuesten /* OK */ DO: btnOK = TRUE. RUN ENDE. RETURN NO-APPLY. END. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &UNDEFINE SELF-NAME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK gDruckenRuesten /* *************************** Main Block *************************** */ { incl/dlgmainblock.i } IF VALID-HANDLE(ACTIVE-WINDOW) AND FRAME {&FRAME-NAME}:PARENT EQ ? THEN FRAME {&FRAME-NAME}:PARENT = ACTIVE-WINDOW. RUN createObjects. SESSION:IMMEDIATE-DISPLAY = TRUE. /* Now enable the interface and wait for the exit condition. */ /* (NOTE: handle ERROR and END-KEY so cleanup code will always fire. */ MAIN-BLOCK: DO ON ERROR UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK ON END-KEY UNDO MAIN-BLOCK, LEAVE MAIN-BLOCK: SESSION:IMMEDIATE-DISPLAY = TRUE. RUN initializeObject. END. RUN destroyObject. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME /* ********************** Internal Procedures *********************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE adm-create-objects gDruckenRuesten _ADM-CREATE-OBJECTS PROCEDURE adm-create-objects : /*------------------------------------------------------------------------------ Purpose: Create handles for all SmartObjects used in this procedure. After SmartObjects are initialized, then SmartLinks are added. Parameters: ------------------------------------------------------------------------------*/ END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN gDruckenRuesten 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. 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.Platz = iPlatz*/ 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. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. DO WITH FRAME {&FRAME-NAME}: F_Aufnr :SCREEN-VALUE = STRING(bAufko.Aufnr). F_Knr :SCREEN-VALUE = STRING(bAufko.Knr). F_Kunde :SCREEN-VALUE = bAdresse.Anzeig_Br. F_Dokument:SCREEN-VALUE = cDokArt. F_Drucker :SCREEN-VALUE = tSchrift.Schname. F_Schrift :SCREEN-VALUE = tSchrift.Schbild. ASSIGN {&List-6}. DISPLAY {&List-6}. END. 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 LIBILD ( cDokArt ). RUN AUFTRAGSSCHEIN_KOPF. i2 = 0. FOR EACH btAufze NO-LOCK WHERE btAufze.Platz = 0: FIND FIRST zAufze. BUFFER-COPY btAufze 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 BY tAufze.Platz BY tAufze.Lagort BY tAufze.Pos : IF (tSchrift.Schzztot - iZeile - 2) < tSchrift.Schzzend THEN DO: RUN AUFTRAGSSCHEIN_KOPF. END. FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. 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 btAufze NO-LOCK WHERE btAufze.Platz = 99: FIND FIRST zAufze. BUFFER-COPY btAufze 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN_ARTIKELZEILE gDruckenRuesten 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE AUFTRAGSSCHEIN_KOPF gDruckenRuesten 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 LDebst NO-LOCK USE-INDEX Debst-k1 WHERE LDebst.Firma = bAufko.Firma AND LDebst.Knr = bAufko.Knr NO-ERROR. FIND FDebst NO-LOCK USE-INDEX Debst-k1 WHERE FDebst.Firma = bAufko.Firma AND FDebst.Knr = bAufko.Fak_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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE BAR-CODE-39 gDruckenRuesten 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE disable_UI gDruckenRuesten _DEFAULT-DISABLE PROCEDURE disable_UI : /*------------------------------------------------------------------------------ Purpose: DISABLE the User Interface Parameters: Notes: Here we clean-up the user-interface by deleting dynamic widgets we have created and/or hide frames. This procedure is usually called when we are ready to "clean-up" after running. ------------------------------------------------------------------------------*/ /* Hide all frames. */ HIDE FRAME gDruckenRuesten. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE DRUCKAUSGABE gDruckenRuesten 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. DYNAMIC-FUNCTION ('writeLogFile':U, 'Druckausgabe start') NO-ERROR. 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. DYNAMIC-FUNCTION ('writeLogFile':U, SUBSTITUTE('Druckausgabe mit 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 !!! '. DYNAMIC-FUNCTION('writeLogFile':U, 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enableObject gDruckenRuesten PROCEDURE enableObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ { incl/dlgenableobject.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE enable_UI gDruckenRuesten _DEFAULT-ENABLE PROCEDURE enable_UI : /*------------------------------------------------------------------------------ Purpose: ENABLE the User Interface Parameters: Notes: Here we display/view/enable the widgets in the user-interface. In addition, OPEN all queries associated with each FRAME and BROWSE. These statements here are based on the "Other Settings" section of the widget Property Sheets. ------------------------------------------------------------------------------*/ DISPLAY F_Aufnr F_Knr F_Kunde F_Dokument F_Drucker F_Schrift WITH FRAME gDruckenRuesten. ENABLE RECT-2 F_Aufnr F_Knr F_Kunde F_Dokument F_Drucker F_Schrift Btn_OK Btn_Cancel WITH FRAME gDruckenRuesten. VIEW FRAME gDruckenRuesten. {&OPEN-BROWSERS-IN-QUERY-gDruckenRuesten} END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE ENDE gDruckenRuesten PROCEDURE ENDE : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ IF btnOK THEN DO: END. { incl/dlgende.i } END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE FUELLEN_tAufze gDruckenRuesten 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 btAufze. EMPTY TEMP-TABLE tAufze. EMPTY TEMP-TABLE tRueck. 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 btAufze. BUFFER-COPY Aufze TO btAufze ASSIGN btAufze.Platz = 0 btAufze.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 btAufze. BUFFER-COPY Aufze TO btAufze ASSIGN btAufze.Platz = 0 btAufze.LagOrt = ''. END. END. /* Artikelzeilen nach Ruestplatz und Ort */ cLagOrt = ''. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Firma AND Aufze.Aufnr = bAufko.Aufnr AND Aufze.Pos > minPos AND Aufze.Pos < MaxPos BY Aufze.Pos DESCENDING: IF Aufze.Artnr > 0 THEN DO: cLagOrt = DYNAMIC-FUNCTION ('getLagerplatz':U, Aufze.Artnr, Aufze.Inhalt, Aufze.Jahr) NO-ERROR. cLagOrt = ENTRY(1, cLagOrt, ';'). cLagOrt = ENTRY(1, cLagOrt, ','). IF cLagOrt = '' THEN cLagOrt = '99'. END. FIND LAST RuestPlatz NO-LOCK USE-INDEX RuestPlatz-k2 WHERE RuestPlatz.Firma = Aufze.Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.abLagOrt <= cLagOrt NO-ERROR. IF NOT AVAILABLE RuestPlatz THEN DO: FIND LAST RuestPlatz NO-LOCK USE-INDEX RuestPlatz-k1 WHERE RuestPlatz.Firma = Aufze.Firma AND RuestPlatz.RuestArt = iRuestArt. END. IF AVAILABLE RuestPlatz THEN jPlatz = RuestPlatz.Platz. ELSE jPlatz = 1. CREATE tAufze. BUFFER-COPY Aufze TO tAufze ASSIGN tAufze.Platz = jPlatz tAufze.LagOrt = cLagort. IF tAufze.MRuek > 0 THEN DO: CREATE tRueck. BUFFER-COPY tAufze TO tRueck. END. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE GET_DRUCKERDATEN gDruckenRuesten 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. DYNAMIC-FUNCTION ('writeLogFile':U, SUBSTITUTE ('GET_DRUCKERDATEN Platz &1, Drucker &2, Schrift &3', ipPlatz, ipDrucker, ipSchrift)). DO WHILE TRUE: FIND FIRST tDrucker NO-LOCK WHERE tDrucker.Drucker = ipDrucker NO-ERROR. IF AVAILABLE tDrucker THEN LEAVE. IF lBatch THEN DO: lJa = FALSE. LEAVE. END. MESSAGE 'Der gewünschte Drucker "' ipDrucker '" ist nicht verfügbar ' SKIP 'Bitte wählen Sie einen Drucker aus oder brechen Sie den Druck ab ' VIEW-AS ALERT-BOX INFORMATION BUTTONS YES-NO UPDATE lJa. IF NOT lJa THEN LEAVE. SYSTEM-DIALOG PRINTER-SETUP PORTRAIT UPDATE lJa. LEAVE. END. IF NOT lJa THEN RETURN 'Kein Drucker'. 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. IF NOT lBatch THEN DO: MESSAGE 'Es konnte keine Schrift für den gewählten Drucker ermittelt werden' VIEW-AS ALERT-BOX ERROR. END. RETURN 'KEINE SCHRIFT'. 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE initializeObject gDruckenRuesten PROCEDURE initializeObject : /*------------------------------------------------------------------------------ Purpose: Super Override Parameters: Notes: ------------------------------------------------------------------------------*/ 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. EMPTY TEMP-TABLE zAufze . CREATE zAufze. 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. lBatch = SESSION:BATCH. FIND bSteuer NO-LOCK WHERE bSteuer.Firma = Firma. RUN SUPER. cBenutzer = DYNAMIC-FUNCTION('getBenutzer':U) NO-ERROR. cLogName = DYNAMIC-FUNCTION('getLogName':U) NO-ERROR. lBatch = DYNAMIC-FUNCTION('getBatch':U) NO-ERROR. lWebSpeed = FALSE. iCodeI = -1. TABELLE: REPEAT TRANSACTION: FIND FIRST bTabel NO-LOCK WHERE bTabel.Firma = Firma AND bTabel.RecArt = 'AUFDRUCK' AND bTabel.CodeI > iCodeI AND bTabel.Bez1 = '' AND bTabel.Int_2 < 2 NO-ERROR. IF NOT AVAILABLE bTabel THEN LEAVE. tRecid = RECID(bTabel). iCodeI = bTabel.CodeI. FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = tRecid NO-WAIT NO-ERROR. IF 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). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. RELEASE Tabel. NEXT. END. IF NOT AVAILABLE bTabel THEN NEXT. bTabel.Bez1 = 'A'. 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: CASE bTabel.Int_2: WHEN 1 THEN DO: lWebSpeed = TRUE. 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. cMessage = SUBSTITUTE('Auftragsschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. RUN AUFTRAGSSCHEIN. cRetValue = RETURN-VALUE. cMessage = SUBSTITUTE('Auftragsschein &1 mit Return-Value &2 beendet', iAufnr, cRetValue). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. IF cRetValue <> '' THEN LEAVE. cMessage = SUBSTITUTE('Rüstschein &1 in Batch = &3 mit &2 gestartet', iAufnr, cPrinters, lBatch). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. RUN RUESTSCHEIN. cRetValue = RETURN-VALUE. cMessage = SUBSTITUTE('Ruestschein &1 mit Return-Value &2 beendet', iAufnr, cRetValue). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. LEAVE. END. OTHERWISE DO: bTabel.Bez1 = ''. RELEASE bTabel. NEXT TABELLE. END. END CASE. 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. END. REPEAT TRANSACTION: FOR EACH Tabel NO-LOCK WHERE Tabel.Firma = Firma AND Tabel.RecArt = 'AUFDRUCK' AND Tabel.Bez1 = 'F' AND Tabel.Int_2 < 2 : FIND bTabel EXCLUSIVE-LOCK WHERE RECID(bTabel) = RECID(Tabel) NO-WAIT NO-ERROR. IF NOT AVAILABLE bTabel THEN NEXT. ASSIGN bTabel.Bez1 = ''. RELEASE bTabel. END. RELEASE Tabel. RELEASE bTabel. LEAVE. END. lWebSpeed = TRUE. iCodeI = -1. FOR EACH bTabel USE-INDEX Tabel-k2 NO-LOCK WHERE bTabel.Firma = Firma AND bTabel.RecArt BEGINS 'ws': tRecid = RECID(bTabel). FIND bAufko NO-LOCK WHERE bAufko.Firma = bTabel.Firma AND bAufko.Aufnr = bTabel.Int_1 NO-ERROR. IF NOT AVAILABLE bAufko THEN DO: REPEAT TRANSACTION: FIND Tabel EXCLUSIVE-LOCK WHERE RECID(Tabel) = tRecid NO-WAIT NO-ERROR. IF AVAILABLE Tabel THEN DO: DELETE Tabel. RELEASE Tabel. END. LEAVE. END. NEXT. END. kRecid = RECID(bAufko). iAufnr = bAufko.Aufnr . iRecid = RECID(bAufko). iRuestArt = bTabel.Int_3 . iPlatz = INTEGER(bTabel.Dec_1). iAnzahl = INTEGER(bTabel.Dec_2). cRuester = bTabel.Bez2. ERROR-STATUS:ERROR = FALSE. CASE bTabel.Int_2: WHEN 2 THEN DO: RUN FUELLEN_tAufze. FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR. IF AVAILABLE tAufze THEN DO: RUN PALETTENSCHEIN. cRetValue = RETURN-VALUE. END. END. WHEN 3 THEN DO: RUN FUELLEN_tAufze. FIND FIRST tAufze NO-LOCK WHERE tAufze.Artnr > 0 NO-ERROR. IF AVAILABLE tAufze THEN DO: RUN LADEPAPIER. cRetValue = RETURN-VALUE. END. END. WHEN 4 THEN DO: RUN LIEFERSCHEIN. cRetValue = RETURN-VALUE. END. END CASE. IF cRetValue <> '' THEN DO: REPEAT TRANSACTION: FIND dTabel WHERE RECID(dTabel) = tRecid NO-ERROR. dTabel.Bez1 = ''. RELEASE dTabel. LEAVE. END. NEXT. END. REPEAT TRANSACTION: FIND dTabel WHERE RECID(dTabel) = tRecid NO-ERROR. IF AVAILABLE dTabel THEN DELETE dTabel. RELEASE dTabel. LEAVE. END. END. RUN ENDE. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LADEPAPIER gDruckenRuesten PROCEDURE LADEPAPIER : /*------------------------------------------------------------------------------ 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 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 iTime AS INTEGER NO-UNDO. DEFINE VARIABLE cAufnr AS CHARACTER NO-UNDO. DEFINE VARIABLE oBarCode AS CHARACTER NO-UNDO. DEFINE VARIABLE cCodeArt AS CHARACTER INIT 'P0205100' NO-UNDO. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO. DEFINE VARIABLE cDrucker AS CHARACTER NO-UNDO. DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO. cDokArt = 'LADEPAPIER'. iSeite = 0. iZeile = 0. cDrucker = ''. lOpen = FALSE. dDatum = bAufko.Lief_Datum. iTime = TIME. cMessage = SUBSTITUTE('Ladepapier &1 gestartet auf Platz &2', bAufko.Aufnr, iPlatz). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. 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 NO-ERROR. ASSIGN tSchrift.Schzztot = RuestDaten.LA_TotZZ tSchrift.Schzzbeg = RuestDaten.LA_KopfZZ tSchrift.Schzzend = RuestDaten.LA_FussZZ tSchrift.Schacht = RuestDaten.LA_Schacht. END. FIND FIRST tSchrift NO-LOCK NO-ERROR. IF NOT AVAILABLE tSchrift THEN RETURN 'ERROR'. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. 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. DO WITH FRAME {&FRAME-NAME}: F_Aufnr :SCREEN-VALUE = STRING(bAufko.Aufnr). F_Knr :SCREEN-VALUE = STRING(bAufko.Knr). F_Kunde :SCREEN-VALUE = bAdresse.Anzeig_Br. F_Dokument:SCREEN-VALUE = cDokArt. F_Drucker :SCREEN-VALUE = tSchrift.Schname. F_Schrift :SCREEN-VALUE = tSchrift.Schbild. ASSIGN {&List-6}. DISPLAY {&List-6}. END. FOR EACH tAufze NO-LOCK WHERE tAufze.Platz > 0 AND tAufze.Platz < 99 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 LADEPAPIER_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 LEAVE. cAufnr = STRING(bAufko.Aufnr,'9999999') + '.' + TRIM(STRING(tAufze.Platz,'>9')) + ' - ' + (IF iAnz = 0 THEN 'KEINE LIEFERUNG' ELSE TRIM(STRING(RuestAuf.AnzPaletten,'->>>>>>>>>>9'))) + ' / ' + RuestAuf.Ruester. 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LADEPAPIER_KOPF gDruckenRuesten PROCEDURE LADEPAPIER_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. 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 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). 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', 3, 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. /* i2 = 0. FOR EACH btAufze NO-LOCK WHERE btAufze.Platz = 0: RUN RUESTSCHEIN_ARTIKELZEILE ( RECID(btAufze ) ). 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', 2, 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', 3, INPUT-OUTPUT cZeile) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LIBILD gDruckenRuesten 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE LOCK_TEST gDruckenRuesten PROCEDURE LOCK_TEST : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO. DEFINE OUTPUT PARAMETER oplLocked AS LOG NO-UNDO. DEFINE OUTPUT PARAMETER opcDaten AS CHARACTER NO-UNDO. DEFINE VARIABLE xRecid AS RECID NO-UNDO. oplLocked = FALSE. opcDaten = ''. LOCK: REPEAT TRANSACTION: FIND Aufko EXCLUSIVE-LOCK WHERE RECID(Aufko) = ipRecid NO-WAIT NO-ERROR. IF LOCKED Aufko THEN DO: oplLocked = TRUE. opcDaten = 'Aufko'. RELEASE Aufko. LEAVE LOCK. END. FOR EACH Aufze NO-LOCK WHERE Aufze.Firma = Aufko.Firma AND Aufze.Aufnr = Aufko.Aufnr: xRecid = RECID(Aufze). FIND bAufze EXCLUSIVE-LOCK WHERE RECID(bAufze) = xRecid NO-WAIT NO-ERROR. IF LOCKED bAufze THEN DO: oplLocked = TRUE. opcDaten = 'Aufze'. RELEASE bAufze. LEAVE LOCK. END. END. FOR EACH AufGKon NO-LOCK WHERE AufGKon.Firma = Aufko.Firma AND AufGKon.Aufnr = Aufko.Aufnr: xRecid = RECID(AufGKon). FIND bAufGKon EXCLUSIVE-LOCK WHERE RECID(bAufGKon) = xRecid NO-WAIT NO-ERROR. IF LOCKED bAufGKon THEN DO: oplLocked = TRUE. opcDaten = 'AufGKon'. RELEASE bAufGKon. LEAVE LOCK. END. END. RELEASE Aufko . RELEASE Aufze . RELEASE bAufze . RELEASE bAufGKon. RELEASE AufGKon . LEAVE. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE NEUE_SEITE gDruckenRuesten 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PALETTENSCHEIN gDruckenRuesten PROCEDURE PALETTENSCHEIN : /*------------------------------------------------------------------------------ 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 xPlatz AS INTEGER NO-UNDO. DEFINE VARIABLE nTotale AS DECIMAL EXTENT 15 NO-UNDO. DEFINE VARIABLE cRetVal AS CHARACTER NO-UNDO. DEFINE VARIABLE cDrucker AS CHARACTER NO-UNDO. DEFINE VARIABLE cMessage AS CHARACTER 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('Palettenschein &1 Platz &2 gestartet', tAufze.Aufnr, iPlatz). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. cDokArt = 'PALETTEN'. iSeite = 0. iZeile = 0. cDrucker = ''. lOpen = FALSE. cZeile = ''. 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 ). EMPTY TEMP-TABLE tSchrift. FOR EACH RuestDaten NO-LOCK WHERE RuestDaten.Firma = bAufko.Firma AND RuestDaten.RuestArt = iRuestArt AND RuestDaten.Platz > 0 AND Ruestdaten.PA_Doku = TRUE: xPlatz = RuestDaten.Platz. RUN GET_DRUCKERDATEN ( xPlatz, RuestDaten.PA_Drucker, RuestDaten.PA_Schrift ). IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. FIND FIRST tSchrift WHERE tSchrift.iPlatz = xPlatz. ASSIGN tSchrift.Schzztot = RuestDaten.PA_TotZZ tSchrift.Schzzbeg = RuestDaten.PA_KopfZZ tSchrift.Schzzend = RuestDaten.PA_FussZZ tSchrift.Schacht = RuestDaten.PA_Schacht tSchrift.Anzahl = iAnzahl. END. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. DO WITH FRAME {&FRAME-NAME}: F_Aufnr :SCREEN-VALUE = STRING(bAufko.Aufnr). F_Knr :SCREEN-VALUE = STRING(bAufko.Knr). F_Kunde :SCREEN-VALUE = bAdresse.Anzeig_Br. F_Dokument:SCREEN-VALUE = cDokArt. F_Drucker :SCREEN-VALUE = tSchrift.Schname. F_Schrift :SCREEN-VALUE = tSchrift.Schbild. ASSIGN {&List-6}. DISPLAY {&List-6}. END. EMPTY TEMP-TABLE zAufze. CREATE zAufze. FOR EACH tAufze NO-LOCK WHERE tAufze.Platz = iPlatz BREAK BY tAufze.Platz BY tAufze.Lagort BY tAufze.Pos : DO WHILE TRUE WITH FRAME {&FRAME-NAME}: 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. F_Drucker:SCREEN-VALUE = tSchrift.Schname. F_Schrift:SCREEN-VALUE = tSchrift.Schbild. IF NOT lOpen THEN DO: cDrucker = tSchrift.Schname. cDateiName = SESSION:TEMP-DIR + 'PalettPapier' + 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 + 'PalettPapier' + 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 THEN RUN PALETTENSCHEIN_KOPF ( iPlatz ). IF (tSchrift.Schzztot - iZeile - 2) <= tSchrift.Schzzend THEN DO: RUN PALETTENSCHEIN_KOPF ( iPlatz ). END. IF tAufze.MGeli <> 0 THEN DO: FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. RUN PALETTENSCHEIN_ARTIKELZEILE. END. IF NOT LAST-OF ( tAufze.Platz ) THEN NEXT. /* FOR EACH btAufze NO-LOCK WHERE btAufze.Platz = 99: FIND FIRST zAufze. BUFFER-COPY btAufze TO zAufze. RUN PALETTENSCHEIN_ARTIKELZEILE. i2 = i2 + 1. END. */ cZeile = FILL('=', 100). DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. DO WHILE TRUE: FIND FIRST tRueck NO-LOCK WHERE tRueck.Platz = iPlatz NO-ERROR. IF NOT AVAILABLE tRueck THEN LEAVE. IF NOT lOpen THEN DO: cDrucker = tSchrift.Schname. cDateiName = SESSION:TEMP-DIR + 'PalettPapier' + STRING(TIME,'999999') + STRING(RANDOM(1, 999999),'999999') + '.txt'. OUTPUT STREAM out_Stream TO VALUE(cDateiName) NO-MAP NO-CONVERT. lOpen = TRUE. RUN PALETTENSCHEIN_KOPF ( iPlatz ). END. ELSE DO: DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. FOR EACH tRueck NO-LOCK WHERE tRueck.Platz = iPlatz BREAK BY tRueck.Platz BY tRueck.Lagort BY tRueck.Pos : IF (tSchrift.Schzztot - iZeile - 6) <= tSchrift.Schzzend THEN DO: RUN PALETTENSCHEIN_KOPF ( iPlatz ). END. IF FIRST-OF ( tRueck.Platz ) THEN DO: cZeile = FILL('=', 100). SUBSTRING(cZeile,30) = ' Rückstände/Teillieferungen '. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. RUN PALETTENSCHEIN_RUECKSTAND ( RECID(tRueck) ). END. DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. LEAVE. END. IF lOpen THEN DO: SUBSTRING(cZeile,008) = 'Gerüstet durch : ' + cRuester. DYNAMIC-FUNCTION('putStream':U, 'N', 3, INPUT-OUTPUT cZeile) NO-ERROR. END. DO WHILE TRUE: IF NOT lOpen THEN LEAVE. FIND FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = Firma AND RuestAuf.Aufnr = bAufko.Aufnr AND RuestAuf.Platz <> iPlatz NO-ERROR. IF NOT AVAILABLE RuestAuf THEN LEAVE. SUBSTRING(cZeile,10) = 'Weitere Rüstplätze'. DYNAMIC-FUNCTION('putStream':U, 'F', 1, INPUT-OUTPUT cZeile) NO-ERROR. FOR EACH RuestAuf NO-LOCK WHERE RuestAuf.Firma = Firma AND RuestAuf.Aufnr = bAufko.Aufnr AND RuestAuf.Platz <> iPlatz BREAK BY RuestAuf.Platz: IF NOT FIRST-OF ( RuestAuf.Platz ) THEN NEXT. FIND RuestPlatz NO-LOCK WHERE RuestPlatz.Firma = RuestAuf.Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.Platz = RuestAuf.Platz NO-ERROR. IF NOT AVAILABLE RuestPlatz THEN NEXT. SUBSTRING(cZeile,12) = '- ' + RuestPlatz.Bezeichnung. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. LEAVE. END. IF lOpen THEN DO: OUTPUT STREAM out_Stream CLOSE. lOpen = FALSE. RUN DRUCKAUSGABE NO-ERROR. IF ERROR-STATUS:ERROR THEN RETURN 'ERROR'. END. FIND FIRST tAufze NO-LOCK NO-ERROR. cMessage = SUBSTITUTE('Palettenschein &1 Platz &2 beendet', tAufze.Aufnr, iPlatz). DYNAMIC-FUNCTION('writeLogFile':U, cMessage) NO-ERROR. RETURN ''. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PALETTENSCHEIN_ARTIKELZEILE gDruckenRuesten PROCEDURE PALETTENSCHEIN_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', 2, 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. SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)"). IF zAufze.VGeb_Me <> 0 THEN DO: SUBSTRING(cZeile,012) = STRING(zAufze.VGeb_Me,'->>>') + 'x ' + VGebinde.KBez. END. SUBSTRING(cZeile,028) = STRING(zAufze.MGeli ,"->>>>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"). SUBSTRING(cZeile,089) = STRING(zAufze.LagOrt,'x(08)'). cZeile = bDrucker.Drufettb + SUBSTRING(cZeile,001,027) + bDrucker.Drufette + SUBSTRING(cZeile,028,061) + bDrucker.Drufettb + SUBSTRING(cZeile,089,008) + bDrucker.Drufette + SUBSTRING(cZeile,097). 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. DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PALETTENSCHEIN_KOPF gDruckenRuesten PROCEDURE PALETTENSCHEIN_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. DEFINE VARIABLE cFahrer 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). 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. 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: 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. FIND FIRST RuestPlatz NO-LOCK WHERE RuestPlatz.Firma = bAufko.Firma AND RuestPlatz.RuestArt = iRuestArt AND RuestPlatz.Platz = ipPlatz. 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE PALETTENSCHEIN_RUECKSTAND gDruckenRuesten PROCEDURE PALETTENSCHEIN_RUECKSTAND : /*------------------------------------------------------------------------------ Purpose: Parameters: Notes: ------------------------------------------------------------------------------*/ DEFINE INPUT PARAMETER ipRecid AS RECID NO-UNDO. 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 tRueck WHERE RECID(tRueck) = ipRecid NO-LOCK. PUT STREAM Out_Stream CONTROL bDrucker.Dru15cpi. DO WHILE tRueck.Artnr = 0: SUBSTRING(cZeile,036) = STRING(tRueck.Bez1,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. IF tRueck.Bez2 <> '' THEN DO: SUBSTRING(cZeile,036) = STRING(tRueck.Bez2,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. END. RETURN. END. FIND Artst NO-LOCK OF tRueck. FIND VGebinde NO-LOCK WHERE VGebinde.Firma = tRueck.Firma AND VGebinde.Geb_Cd = tRueck.VGeb_Cd NO-ERROR. FIND KGebinde NO-LOCK WHERE KGebinde.Firma = tRueck.Firma AND KGebinde.Geb_Cd = tRueck.KGeb_Cd NO-ERROR. SUBSTRING(cZeile,001) = STRING(KGebinde.KBez,"x(10)"). IF tRueck.VGeb_Ru <> 0 AND tRueck.VGeb_Me <> tRueck.VGeb_Be THEN DO: SUBSTRING(cZeile,012) = STRING(tRueck.VGeb_Ru,'->>>') + 'x ' + VGebinde.KBez. END. SUBSTRING(cZeile,028) = STRING(tRueck.MRuek ,"->>>>9"). SUBSTRING(cZeile,036) = STRING(tRueck.Bez1 ,"x(30)"). IF tRueck.Alk_Gehalt <> 0 THEN SUBSTRING(cZeile,068) = STRING(tRueck.Alk_Gehalt,"zz9.9%"). IF tRueck.Jahr > 9 THEN SUBSTRING(cZeile,075) = STRING(tRueck.Jahr,"9999"). SUBSTRING(cZeile,081) = STRING(tRueck.Artnr ,"999999"). SUBSTRING(cZeile,089) = STRING(tRueck.LagOrt,'x(08)'). cZeile = bDrucker.Drufettb + SUBSTRING(cZeile,001,027) + bDrucker.Drufette + SUBSTRING(cZeile,028,061) + bDrucker.Drufettb + SUBSTRING(cZeile,089,008) + bDrucker.Drufette + SUBSTRING(cZeile,097). DYNAMIC-FUNCTION('putStream':U, 'N', 1, INPUT-OUTPUT cZeile) NO-ERROR. IF tRueck.Bez2 <> '' THEN DO: SUBSTRING(cZeile,036) = STRING(tRueck.Bez2,"x(30)"). DYNAMIC-FUNCTION('putStream':U, 'N', 2, INPUT-OUTPUT cZeile) NO-ERROR. END. END PROCEDURE. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN gDruckenRuesten 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 iTime AS INTEGER NO-UNDO. DEFINE VARIABLE iMenge AS INTEGER NO-UNDO. DEFINE VARIABLE cLagOrt AS CHARACTER NO-UNDO. DEFINE VARIABLE cSort AS CHARACTER NO-UNDO. DEFINE VARIABLE iGeli AS INTEGER NO-UNDO. DEFINE VARIABLE iSubPos AS INTEGER NO-UNDO. DEFINE VARIABLE rLotLager AS INTEGER NO-UNDO. DEFINE VARIABLE rHoReLager AS RECID NO-UNDO. DEFINE VARIABLE rArtLager AS RECID NO-UNDO. DEFINE VARIABLE cRecid AS CHARACTER NO-UNDO. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO. DEFINE VARIABLE lNeu AS LOGICAL NO-UNDO INIT FALSE. DEFINE VARIABLE lMut AS LOGICAL NO-UNDO INIT FALSE. DEFINE VARIABLE cDrucker AS CHARACTER NO-UNDO. cDokArt = 'RUEST'. iSeite = 0. iZeile = 0. cDrucker = ''. lOpen = FALSE. cZeile = ''. dDatum = bAufko.Lief_Datum. iTime = TIME. 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.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. FIND bAdresse NO-LOCK USE-INDEX Adresse-k1 WHERE bAdresse.Firma = AdFirma AND bAdresse.Knr = bAufko.Knr NO-ERROR. FIND FIRST tSchrift. DO WITH FRAME {&FRAME-NAME}: F_Aufnr :SCREEN-VALUE = STRING(bAufko.Aufnr). F_Knr :SCREEN-VALUE = STRING(bAufko.Knr). F_Kunde :SCREEN-VALUE = bAdresse.Anzeig_Br. F_Dokument:SCREEN-VALUE = cDokArt. F_Drucker :SCREEN-VALUE = tSchrift.Schname. F_Schrift :SCREEN-VALUE = tSchrift.Schbild. ASSIGN {&List-6}. DISPLAY {&List-6}. END. FOR EACH RuestAuf WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr BREAK BY RuestAuf.Firma BY RuestAuf.Aufnr BY RuestAuf.Pos : IF NOT FIRST-OF ( RuestAuf.Pos ) THEN NEXT. FIND FIRST tAufze NO-LOCK WHERE tAufze.Firma = RuestAuf.Firma AND tAufze.Aufnr = RuestAuf.Aufnr AND tAufze.Pos = RuestAuf.Pos AND tAufze.Artnr = RuestAuf.Artnr AND tAufze.Inhalt = RuestAuf.Inhalt AND tAufze.Jahr = RuestAuf.Jahr NO-ERROR. IF NOT AVAILABLE tAufze THEN DELETE RuestAuf. RELEASE RuestAuf. END. 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 : EMPTY TEMP-TABLE tHoReLager. EMPTY TEMP-TABLE tLotLager . EMPTY TEMP-TABLE tLagerorte. /* ------------------------------------------------------ */ /* Ist die Rüstposition bereits vorhanden ? */ /* Wenn Ja ? (lNeu = FALSE) */ /* sind die Mengen noch gleich ? (lMut = FALSE) */ /* ------------------------------------------------------ */ FIND FIRST RuestAuf NO-LOCK WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr AND RuestAuf.Pos = tAufze.Pos NO-ERROR. lNeu = (IF AVAILABLE RuestAuf THEN FALSE ELSE TRUE). IF NOT lNeu THEN lMut = (IF RuestAuf.MBest = tAufze.MBest THEN FALSE ELSE TRUE). /* ------------------------------------------------------ */ IF lMut THEN DO: FOR EACH RuestAuf WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr AND RuestAuf.Pos = tAufze.Pos : ASSIGN RuestAuf.iMenge = tAufze.MBest - RuestAuf.MBest RuestAuf.MBest = tAufze.MBest. IF RuestAuf.lGeruestet THEN DO: ASSIGN RuestAuf.lGeruestet = FALSE RuestAuf.lPAGedruckt = FALSE RuestAuf.lGeladen = FALSE RuestAuf.lLAGedruckt = FALSE. END. END. END. DO WHILE TRUE: IF NOT lNeu AND NOT lMut THEN LEAVE. iAnz = DYNAMIC-FUNCTION ('getHoReLager':U IN THIS-PROCEDURE, RECID(tAufze) ). IF iAnz = 0 THEN DO: FIND ArtLager NO-LOCK OF tAufze. CREATE tLagerOrte. ASSIGN tLagerOrte.cSort = '.KeinLager' tLagerOrte.iBestand = ArtLager.Bestand tLagerOrte.rLotLager = 0 tLagerOrte.rHoReLager = 0 tLagerorte.HoReLager_Id = 0 tLagerOrte.Lotnr = '' tLagerOrte.Verfall = ? tLagerOrte.lLotnr = tAufze.lLotnr tLagerOrte.lVerfall = tAufze.lVerfall tLagerorte.cArt = 'A' tLagerOrte.iMenge = ArtLager.Bestand . LEAVE. END. IF tAufze.lVerfall OR tAufze.lLotnr THEN DO: iAnz = DYNAMIC-FUNCTION ('getLotLager':U IN THIS-PROCEDURE, RECID(tAufze) ). IF iAnz > 0 THEN LEAVE. END. iMenge = tAufze.MBest. FOR EACH tHoReLager NO-LOCK WHERE tHoReLager.Firma = tAufze.Firma AND tHoReLager.Lager = tAufze.Lager AND tHoReLager.Artnr = tAufze.Artnr AND tHoReLager.Inhalt = tAufze.Inhalt /* AND tHoReLager.Jahr = tAufze.Jahr*/ BY tHoReLager.iPrior BY tHoReLager.Bestand : CREATE tLagerOrte. ASSIGN tLagerOrte.cSort = tHoReLager.cSort tLagerOrte.iBestand = tHoReLager.Bestand tLagerOrte.rLotLager = 0 tLagerOrte.rHoReLager = tHoReLager.iRecid tLagerorte.HoReLager_Id = tHoReLager.HoReLager_Id tLagerOrte.Lotnr = '' tLagerOrte.Verfall = ? tLagerOrte.lLotnr = tAufze.lLotnr tLagerOrte.lVerfall = tAufze.lVerfall tLagerorte.cArt = 'H' tLagerOrte.iMenge = (IF tHoReLager.Bestand >= iMenge THEN iMenge ELSE tHoReLager.Bestand) . iAnz = iAnz + 1. IF tLagerOrte.iBestand >= iMenge THEN LEAVE. iMenge = iMenge - tLagerOrte.iBestand. IF iMenge <= 0 THEN DO: iMenge = 0. LEAVE. END. END. IF iMenge > 0 THEN DO: FIND FIRST tLagerOrte WHERE tLagerOrte.iMenge = 0 NO-ERROR. IF AVAILABLE tLagerOrte THEN tLagerOrte.iMenge = iMenge. ELSE DO: FIND FIRST tLagerOrte NO-ERROR. IF AVAILABLE tLagerOrte THEN tLagerOrte.iMenge = iMenge. END. END. LEAVE. END. /* ------------------------------------------------------ */ /* Schreiben RuestAuf für die Rüstapplikation */ /* Aufgeteilt nach Rüstplatz */ /* ------------------------------------------------------ */ FOR EACH tLagerOrte BY tLagerOrte.Verfall BY tLagerOrte.cSort : IF tLagerOrte.iMenge < 0 THEN tLagerOrte.iMenge = 0. FIND LAST RuestAuf WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr AND RuestAuf.Pos = tAufze.Pos NO-ERROR. iSubPos = (IF AVAILABLE RuestAuf THEN RuestAuf.SubPos + 5 ELSE 0). FIND FIRST RuestAuf WHERE RuestAuf.Firma = tAufze.Firma AND RuestAuf.Aufnr = tAufze.Aufnr AND RuestAuf.Pos = tAufze.Pos AND RuestAuf.Verfall = tLagerOrte.Verfall AND RuestAuf.Lotnr = tLagerOrte.Lotnr NO-ERROR. IF NOT AVAILABLE RuestAuf THEN DO: CREATE RuestAuf. ASSIGN RuestAuf.Firma = tAufze.Firma RuestAuf.Aufnr = tAufze.Aufnr RuestAuf.Platz = tAufze.Platz RuestAuf.Pos = tAufze.Pos RuestAuf.SubPos = iSubPos RuestAuf.Artnr = tAufze.Artnr RuestAuf.Inhalt = tAufze.Inhalt RuestAuf.Jahr = tAufze.Jahr RuestAuf.MBest = tAufze.MBest RuestAuf.MGeli = 0 RuestAuf.GGeb_Best = tAufze.GGeb_Be RuestAuf.GGeb_Geli = 0 RuestAuf.VGeb_Best = tAufze.VGeb_Be RuestAuf.VGeb_Geli = 0 RuestAuf.KGeb_Best = tAufze.KGeb_Be RuestAuf.KGeb_Geli = 0 RuestAuf.lRSGedruckt = TRUE RuestAuf.lGeruestet = FALSE RuestAuf.lPAGedruckt = FALSE RuestAuf.lLAGedruckt = FALSE RuestAuf.lGeladen = FALSE RuestAuf.lLSGedruckt = FALSE RuestAuf.Lotnr = tLagerorte.Lotnr RuestAuf.Verfall = tLagerorte.Verfall RuestAuf.RecidHoReLager = tLagerOrte.rHoReLager RuestAuf.RecidLotLager = tLagerOrte.rLotLager . END. RuestAuf.iMenge = tLagerOrte.iMenge. IF RuestAuf.MBest <> tAufze.MBest THEN DO: ASSIGN RuestAuf.MBest = tAufze.MBest RuestAuf.GGeb_Best = tAufze.GGeb_Be RuestAuf.VGeb_Best = tAufze.VGeb_Be RuestAuf.KGeb_Best = tAufze.KGeb_Be RuestAuf.lGeruestet = FALSE RuestAuf.lPAGedruckt = FALSE. IF RuestAuf.MBest < RuestAuf.MGeli THEN RuestAuf.MGeli = RuestAuf.MBest. IF RuestAuf.GGeb_Best < RuestAuf.GGeb_Geli THEN RuestAuf.GGeb_Geli = RuestAuf.GGeb_Best. IF RuestAuf.VGeb_Best < RuestAuf.VGeb_Geli THEN RuestAuf.VGeb_Geli = RuestAuf.VGeb_Best. IF RuestAuf.KGeb_Best < RuestAuf.KGeb_Geli THEN RuestAuf.KGeb_Geli = RuestAuf.KGeb_Best. END. ASSIGN RuestAuf.lRSGedruckt = TRUE RuestAuf.Lagerort = tLagerOrte.cSort RuestAuf.Platz = tAufze.Platz. iSubPos = iSubPos + 5. END. /* ------------------------------------------------------ */ DO WHILE TRUE WITH FRAME {&FRAME-NAME}: IF NOT FIRST-OF ( tAufze.Platz ) THEN LEAVE. ASSIGN iSeite = 0 iZeile = 0 iTime = iTime + 1 iPlatz = tAufze.Platz. FIND FIRST tSchrift NO-LOCK WHERE tSchrift.iPlatz = iPlatz. FIND bDrucker NO-LOCK WHERE bDrucker.Drucker = tSchrift.SchDru. F_Drucker:SCREEN-VALUE = tSchrift.Schname. F_Schrift:SCREEN-VALUE = tSchrift.Schbild. 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 ). END. FIND FIRST zAufze. BUFFER-COPY tAufze TO zAufze. 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. 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN_ARTIKELZEILE gDruckenRuesten 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 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 = ''. /* 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"). SUBSTRING(cZeile,089) = STRING(ENTRY(1, zAufze.LagOrt, ','),'x(14)'). 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 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE RUESTSCHEIN_KOPF gDruckenRuesten 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). SUBSTRING(cZeile,066) = TRIM(SUBSTRING(FormText[07],01,20)) + " " + STRING(dDatum,"99.99.9999"). cZeile = bDrucker.Drufettb + SUBSTRING(cZeile,001,30) + bDrucker.Drufette + SUBSTRING(cZeile,031). 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 /* ************************ Function Implementations ***************** */ &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getHoreLager gDruckenRuesten FUNCTION getHoReLager RETURNS INTEGER ( iprtAufze AS RECID ): /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE iAnz AS INTEGER NO-UNDO. DEFINE BUFFER btAufze FOR tAufze. FIND btAufze WHERE RECID(btAufze) = iprtAufze. DO WHILE TRUE: /* ------------------------------------------------------ */ /* Artikel genau (inkl. Jahrgang) und Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Jahr = tAufze.Jahr AND HoReLager.Bestand > 0 : CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 1. iAnz = iAnz + 1. END. /* ------------------------------------------------------ */ /* Artikel ohne Jahrgang aber mit Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Bestand > 0 : FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN DO: tHoReLager.Bestand = tHoReLager.Bestand + HoReLager.Bestand. NEXT. END. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 2. iAnz = iAnz + 1. END. /* ------------------------------------------------------ */ /* Artikel genau (inkl. Jahrgang) ohne Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Jahr = tAufze.Jahr AND HoReLager.Bestand = 0 : FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN NEXT. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 3. iAnz = iAnz + 1. END. /* ------------------------------------------------------ */ /* Artikel ohne Jahrgang und ohne Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 1 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Bestand = 0 : FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN NEXT. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 4. iAnz = iAnz + 1. END. IF iAnz > 0 THEN RETURN iAnz. /* ------------------------------------------------------ */ /* NACHFUELLLAGER */ /* ------------------------------------------------------ */ /* Artikel genau (inkl. Jahrgang) und Bestand */ /* ------------------------------------------------------ */ /* FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 2 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Jahr = tAufze.Jahr AND HoReLager.Bestand > 0 : FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN DO: tHoReLager.Bestand = tHoReLager.Bestand + HoReLager.Bestand. NEXT. END. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 5. iAnz = iAnz + 1. END. /* ------------------------------------------------------ */ /* Artikel ohne Jahrgang aber mit Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 2 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Bestand > 0 : FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN DO: tHoReLager.Bestand = tHoReLager.Bestand + HoReLager.Bestand. NEXT. END. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 6. iAnz = iAnz + 1. END. /* ------------------------------------------------------ */ /* Artikel genau (inkl. Jahrgang) ohne Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 2 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Jahr = tAufze.Jahr AND HoReLager.Bestand = 0 : FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN NEXT. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 7. iAnz = iAnz + 1. END. /* ------------------------------------------------------ */ /* Artikel ohne Jahrgang und ohne Bestand */ /* ------------------------------------------------------ */ FOR EACH HoReLager NO-LOCK WHERE HoReLager.Firma = Firma AND HoReLager.Art = 2 AND HoReLager.Lager = tAufze.Lager AND HoReLager.Artnr = tAufze.Artnr AND HoReLager.Inhalt = tAufze.Inhalt AND HoReLager.Bestand = 0: FIND FIRST tHoReLager NO-LOCK WHERE tHoReLager.cSort = HoReLager.cSort NO-ERROR. IF AVAILABLE tHoReLager THEN NEXT. CREATE tHoReLager. BUFFER-COPY HoReLager TO tHoReLager ASSIGN tHoReLager.iRecid = RECID(HoReLager) tHoReLager.iPrior = 8. iAnz = iAnz + 1. END. */ LEAVE. END. RETURN iAnz. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLogName gDruckenRuesten FUNCTION getLogName RETURNS CHARACTER ( /* parameter-definitions */ ) : /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE cPath AS CHARACTER NO-UNDO. GET-KEY-VALUE SECTION 'GrundEinstellungen' KEY 'Ge_MIS_TEMP' VALUE cPath. IF cPath = '' OR cPath = ? THEN cPath = SESSION:TEMP-DIRECTORY. IF SUBSTRING(cPath, LENGTH(cPath), 01) <> '/' AND SUBSTRING(cPath, LENGTH(cPath), 01) <> '\' THEN cPath = cPath + '\'. cPath = cPath + Progname + REPLACE(STRING(TODAY,'99.99.9999'), '.', '') + '.Log'. RETURN cPath. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION getLotLager gDruckenRuesten FUNCTION getLotLager RETURNS INTEGER ( iprtAufze AS RECID ): /*------------------------------------------------------------------------------*/ /* Purpose: */ /* Parameters: */ /* Notes: */ /*------------------------------------------------------------------------------*/ DEFINE VARIABLE iMenge AS INTEGER NO-UNDO. DEFINE VARIABLE iAnz AS INTEGER NO-UNDO. DEFINE BUFFER btAufze FOR tAufze. DEFINE BUFFER bLotLager FOR LotLager. FIND btAufze WHERE RECID(btAufze) = iprtAufze. iMenge = btAufze.MBest. iAnz = 0. FOR EACH bLotLager NO-LOCK USE-INDEX LotLager-k3 WHERE bLotLager.Firma = btAufze.Firma AND bLotLager.Lager = btAufze.Lager AND bLotLager.Artnr = btAufze.Artnr AND bLotLager.Inhalt = btAufze.Inhalt AND bLotLager.Jahr = btAufze.Jahr AND bLotLager.Bestand > 0 , FIRST tHoReLager WHERE tHoReLager.HoReLager_Id = bLotLager.HoReLager_Id: CREATE tLagerOrte. ASSIGN tLagerOrte.cSort = tHoReLager.cSort tLagerOrte.iBestand = bLotLager.Bestand tLagerOrte.rLotLager = RECID(bLotLager) tLagerOrte.rHoReLager = tHoReLager.iRecid tLagerorte.HoReLager_Id = tHoReLager.HoReLager_Id tLagerOrte.Lotnr = bLotLager.Lotnummer tLagerOrte.Verfall = bLotLager.Verfall tLagerOrte.lLotnr = btAufze.lLotnr tLagerOrte.lVerfall = btAufze.lVerfall tLagerorte.cArt = 'L' tLagerOrte.iMenge = (IF bLotLager.Bestand >= iMenge THEN iMenge ELSE bLotLager.Bestand) . iAnz = iAnz + 1. IF bLotLager.Bestand >= iMenge THEN RETURN iAnz. iMenge = iMenge - bLotLager.Bestand. END. FOR EACH bLotLager NO-LOCK USE-INDEX LotLager-k3 WHERE bLotLager.Firma = btAufze.Firma AND bLotLager.Lager = btAufze.Lager AND bLotLager.Artnr = btAufze.Artnr AND bLotLager.Inhalt = btAufze.Inhalt AND bLotLager.Jahr = btAufze.Jahr AND bLotLager.Bestand = 0, FIRST tHoReLager WHERE tHoReLager.HoReLager_Id = bLotLager.HoReLager_Id: CREATE tLagerOrte. ASSIGN tLagerOrte.cSort = tHoReLager.cSort tLagerOrte.iBestand = bLotLager.Bestand tLagerOrte.rLotLager = RECID(bLotLager) tLagerOrte.rHoReLager = tHoReLager.iRecid tLagerorte.HoReLager_Id = tHoReLager.HoReLager_Id tLagerOrte.Lotnr = bLotLager.Lotnummer tLagerOrte.Verfall = bLotLager.Verfall tLagerOrte.lLotnr = btAufze.lLotnr tLagerOrte.lVerfall = btAufze.lVerfall tLagerorte.cArt = 'L' tLagerOrte.iMenge = iMenge. . iMenge = 0. iAnz = iAnz + 1. LEAVE. END. RETURN iAnz. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION putStream gDruckenRuesten 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. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION writeLogFile gDruckenRuesten FUNCTION writeLogFile RETURNS LOGICAL ( ipMessage AS CHARACTER ) : /*------------------------------------------------------------------------------ Purpose: Notes: ------------------------------------------------------------------------------*/ DEFINE VARIABLE cString AS CHARACTER NO-UNDO. cString = SUBSTITUTE('&1 &2 -> &3', STRING(TODAY,'99.99.9999'), STRING(TIME,'HH:MM:SS'), ipMessage). OUTPUT STREAM LogStream TO VALUE(cLogName) APPEND. PUT STREAM LogStream CONTROL cString CHR(10). OUTPUT STREAM LogStream CLOSE. RETURN TRUE. END FUNCTION. /* _UIB-CODE-BLOCK-END */ &ANALYZE-RESUME