/* ** Druck-, Vorschau, Sichern der Inventurliste ** $VER: XXInventurliste.storexx V1.00 (17.01.99) */ PARSE ARG ARexxPort; ADDRESS VALUE ARexxPort; OPTIONS RESULTS; /*********************************************************************/ /* Druckerunabhängige Standard-ANSI-Escape-Sequenzen und ASCII-Zeich.*/ /* Siehe auch Workbench-Handbuch (bei OS3.1: Kapitel 9.6.1) */ /*********************************************************************/ CR = '0d'x; /* Wagenrücklauf */ LF = '0a'x; /* Zeilenvorschub */ FF = '0c'x; /* Seitenvorschub */ TAB = '09'x; /* Tabulator */ ESC = '1b'x; /* ESC */ aRIS = ESC || "c"; /* Drucker zurücksetzen */ aRIN = ESC || "#1"; /* Drucker initialisieren */ aIND = ESC || "D"; /* Zeilenvorschub */ aNEL = ESC || "E"; /* Wagenruecklauf + */ aRI = ESC || "M"; /* umgekehrter Zeilenvors. */ aSGR0 = ESC || "[0m"; /* Normaler Zeichensatz */ aSGR3 = ESC || "[3m"; /* Kursivdruck EIN */ aSGR23 = ESC || "[23m"; /* Kursivdruck AUS */ aSGR4 = ESC || "[4m"; /* Unterstreichung EIN */ aSGR24 = ESC || "[24m"; /* Unterstreichung AUS */ aSGR1 = ESC || "[1m"; /* Fettdruck EIN */ aSGR22 = ESC || "[22m"; /* Fettdruck AUS */ aSFC_0 = ESC || "[30m"; /* Farbe Schrift: Schwarz */ aSFC_1 = ESC || "[31m"; /* Farbe Schrift: Rot */ aSFC_2 = ESC || "[32m"; /* Farbe Schrift: Grün */ aSFC_3 = ESC || "[33m"; /* Farbe Schrift: Gelb */ aSFC_4 = ESC || "[34m"; /* Farbe Schrift: Violett */ aSFC_5 = ESC || "[35m"; /* Farbe Schrift: Magenta */ aSFC_6 = ESC || "[36m"; /* Farbe Schrift: Zyan */ aSFC_7 = ESC || "[37m"; /* Farbe Schrift: Schwarz */ aSFC_8 = ESC || "[38m"; /* Farbe Schrift: Schwarz */ aSFC_9 = ESC || "[39m"; /* Farbe Schrift: Schwarz */ aSBC_0 = ESC || "[40m"; /* Farbe Hinterg: Weiß */ aSBC_1 = ESC || "[41m"; /* Farbe Hinterg: Rot */ aSBC_2 = ESC || "[42m"; /* Farbe Hinterg: Grün */ aSBC_3 = ESC || "[43m"; /* Farbe Hinterg: Gelb */ aSBC_4 = ESC || "[44m"; /* Farbe Hinterg: Violett */ aSBC_5 = ESC || "[45m"; /* Farbe Hinterg: Magenta */ aSBC_6 = ESC || "[46m"; /* Farbe Hinterg: Zyan */ aSBC_7 = ESC || "[47m"; /* Farbe Hinterg: Schwarz */ aSBC_8 = ESC || "[48m"; /* Farbe Hinterg: Schwarz */ aSBC_9 = ESC || "[49m"; /* Farbe Hinterg: Schwarz */ aSHORP0 = ESC || "[0w"; /* Normale Zeichendichte */ aSHORP = ESC || "[2w"; /* Zeichend. "Elite" EIN */ aSHORP1 = ESC || "[1w"; /* Zeichend. "Elite" AUS */ aSHORP4 = ESC || "[4w"; /* Engschrift EIN */ aSHORP3 = ESC || "[3w"; /* Engschrift AUS */ aSHORP6 = ESC || "[6w"; /* Breitdruck EIN */ aSHORP5 = ESC || "[5w"; /* Breitdruck AUS */ aDEN6 = ESC || "[6"||'22'x||"z"; /* Schattendruck EIN */ aDEN5 = ESC || "[5"||'22'x||"z"; /* Schattendruck AUS */ aDEN4 = ESC || "[4"||'22'x||"z"; /* Doppeldruck EIN */ aDEN3 = ESC || "[3"||'22'x||"z"; /* Doppeldruck AUS */ aDEN2 = ESC || "[2"||'22'x||"z"; /* NLQ/LQ EIN */ aDEN1 = ESC || "[1"||'22'x||"z"; /* NLQ/LQ AUS */ aSUS2 = ESC || "[2v"; /* Hochstellung EIN */ aSUS1 = ESC || "[1v"; /* Hochstellung AUS */ aSUS4 = ESC || "[4v"; /* Tiefstellung EIN */ aSUS3 = ESC || "[3v"; /* Tiefstellung AUS */ aSUS0 = ESC || "[0v"; /* Zeile Zurück zu Normal */ aPLU = ESC || "1"; /* Textzeile nach oben */ aPLD = ESC || "K"; /* Textzeile nach unten */ aFNT0 = ESC || "(B"; /* Zeichensatz US */ aFNT1 = ESC || "(R"; /* Zeichensatz Französisch */ aFNT2 = ESC || "(K"; /* Zeichensatz Deutsch */ aFNT3 = ESC || "(A"; /* Zeichensatz GB */ aFNT4 = ESC || "(E"; /* Zeichensatz Dänisch I */ aFNT5 = ESC || "(H"; /* Zeichensatz Schwedisch */ aFNT6 = ESC || "(Y"; /* Zeichensatz Italienisch */ aFNT7 = ESC || "(Z"; /* Zeichensatz Spanisch */ aFNT8 = ESC || "(J"; /* Zeichensatz Japanisch */ aFNT9 = ESC || "(6"; /* Zeichensatz Norwegisch */ aFNT10 = ESC || "(C"; /* Zeichensatz Dänisch II */ aPROP2 = ESC || "[2p"; /* Proportionaldruck EIN */ aPROP1 = ESC || "[1p"; /* Proportionaldruck AUS */ aPROP0 = ESC || "[0p"; /* Proportionaldruck lösch.*/ aTSS = ESC; /* Rand Proport.d. setzen */ /* z.B. Rand5: aTSS || "5E"*/ aJFY5 = ESC || "[5 F"; /* Automat. linksbündig */ aJFY7 = ESC || "[7 F"; /* Automat. rechtsbünbünd. */ aJFY6 = ESC || "[6 F"; /* Automat. Randausgleich */ aJFY0 = ESC || "[0 F"; /* Automat. Formatier. AUS */ aJFY3 = ESC || "[3 F"; /* Zeichenabstand (format.)*/ aJFY1 = ESC || "[1 F"; /* Automat. Zentrieren */ aVERP0 = ESC || "[0z"; /* Zeilenabstand 1/8 Zoll */ aVERP1 = ESC || "[1z"; /* Zeilenabstand 1/6 Zoll */ aSLPP = ESC || "["; /* Seitenlänge, z.B. 66 Z. */ /* aSLPP || "66t" */ aPERF = ESC || "["; /* Perforation überspring. */ /* z.B. aPERF || "5q" */ aPERF0 = ESC || "[0q"; /* Perforation übespr. AUS */ aLMS = ESC || "#9"; /* Linken Rand setzen */ aRMS = ESC || "#0"; /* Rechten Rand setzen */ aTMS = ESC || "#8"; /* Oberen Rand setzen */ aBMS = ESC || "#2"; /* Unteren Rand setzen */ aSTBM = ESC || "["; /* Oberen und unteren Rand */ /* z.B. aSTBM || "5;66r" */ aSLRM = ESC || "["; /* Linken und rechten Rand */ /* z.B. aSLRM || "5;75s" */ aCAM = ESC || "#3"; /* Ränder löschen */ aHTS = ESC || "H"; /* Horizontaltabulator setz*/ aVTS = ESC || "J"; /* Vertikaltabulator setzen*/ aTBC0 = ESC || "[0g"; /* Horizontaltab. löschen */ aTBC3 = ESC || "[3g"; /* alle Horizontaltab. lös.*/ aTBC1 = ESC || "[1g"; /* Vertikaltab. löschen */ aTBC4 = ESC || "[4g"; /* alle Vertikaltab. lösch.*/ aTBCALL = ESC || "#4"; /* alle Tabulatoren löschen*/ aTBSALL = ESC || "#5"; /* Standardtab. setzen */ aEXTEND_1 = ESC || "[1"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_2 = ESC || "[2"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_3 = ESC || "[3"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_4 = ESC || "[4"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_5 = ESC || "[5"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_6 = ESC || "[6"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_7 = ESC || "[7"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_8 = ESC || "[8"||'22'x||"x"; /* Erweiterte Befehle */ aEXTEND_9 = ESC || "[9"||'22'x||"x"; /* Erweiterte Befehle */ aRAW_1 = ESC || "[1"||'22'x||"r"; /* Direkte Befehle */ aRAW_2 = ESC || "[2"||'22'x||"r"; /* Direkte Befehle */ aRAW_3 = ESC || "[3"||'22'x||"r"; /* Direkte Befehle */ aRAW_4 = ESC || "[4"||'22'x||"r"; /* Direkte Befehle */ aRAW_5 = ESC || "[5"||'22'x||"r"; /* Direkte Befehle */ aRAW_6 = ESC || "[6"||'22'x||"r"; /* Direkte Befehle */ aRAW_7 = ESC || "[7"||'22'x||"r"; /* Direkte Befehle */ aRAW_8 = ESC || "[8"||'22'x||"r"; /* Direkte Befehle */ aRAW_9 = ESC || "[9"||'22'x||"r"; /* Direkte Befehle */ Seite = 0; ZZ_Max = 63; ZZ = 0; ZZ_Start = 6; NeueSeite = aSGR1 || aSHORP3 || aSHORP1 || aSHORP6 || " Inventurliste" || LF || LF || aSHORP5 || aSHORP4 || aSGR3; NeueSeite = NeueSeite || " " || aSGR4 || "ArtikelNr. Bezeichnung Bestand System Inventurbestand Inventurwert" || LF; NeueSeite = NeueSeite || aSGR24 || aSGR23 || aSGR22 || LF; StartString = aRIS || aVERP1; /* Oberfläche sperren */ LOCKGUI; /* Art ermitteln: 0 = Drucken, 1 = Vorschau, 2 = Speichern */ PRINTSTATE; Druckart = MTR_RESULT; Ende_Kennzeichen = 'N'; /* Vorbereitungen */ SELECT; WHEN Druckart = 0 THEN CALL DruckRoutineStart; WHEN Druckart = 1 THEN CALL VorschauRoutineStart; WHEN Druckart = 2 THEN CALL SpeichernRoutineStart; OTHERWISE DO; ES_TITLE = "Warnung"; ES_TEXTFORMAT = "Druckart wird nicht unterstützt!"; ES_GADGETFORMAT = "Ok"; EASY_REQUEST; Ende_Kennzeichen = 'J'; END; END; /* Eigentliche Verarbeitung */ IF Ende_Kennzeichen = 'N' THEN DO; WRITECH( Dru_Dat, (StartString || NeueSeite) ); ZZ = ZZ_Start; GET_PREFS; /* Suchen der zu druckenden Daten */ PRINTFIND; DO WHILE( MTR_RESULT > 0 & Ende_Kennzeichen = 'N'); CALL DatenAufbereiten; PRINTFIND; END; END; IF Ende_Kennzeichen = 'N' THEN DO; WRITECH( Dru_Dat, aSHORP3 || FF ); CLOSE(Dru_Dat); IF Druckart = 1 THEN DO; PUBSCREEN; PubScreenName = MTR_RESULT; ADDRESS COMMAND "sys:Utilities/MultiView t:MTR_Vorschau pubscreen=" || PubScreenName; END; END; /* Oberfläche wieder entsperren */ FREEGUI; EXIT; /* Routine, die die Druckdatei öffnet */ DruckRoutineStart: IF OPEN(Dru_Dat, "prt:", "write") THEN NOP; ELSE Ende_Kennzeichen = 'J'; RETURN; /* Routine, die die Druckvorschau realisiert */ VorschauRoutineStart: IF OPEN(Dru_Dat, "t:MTR_Vorschau", "write") THEN NOP; ELSE Ende_Kennzeichen = 'J'; RETURN; /* Routine, die die Druckvorschau realisiert */ SpeichernRoutineStart: ASLFR_TITLETEXT = "Dateiname des zu druckenden Dokuments"; ASLFR_INITIALDRAWER = "ram:"; ASLFR_INITIALPATTERN = "#?"; ASLFR_INITIALFILE = "MTRSaveDok"; ASL_FILE_REQUEST; IF MTR_RESULT = "" THEN Ende_Kennzeichen = 'J'; ELSE DO; IF OPEN(Dru_Dat, MTR_RESULT, "write") THEN NOP; ELSE Ende_Kennzeichen = 'J'; END; RETURN; DatenAufbereiten: w = ST.CURRENCY_USED; DO i = 0 TO (ST.ARTICLE_COUNT - 1); IF ZZ >= ZZ_Max THEN DO; WRITECH( Dru_Dat, (FF || NeueSeite) ); ZZ = ZZ_Start; END; GET_ARTICLE ST.ARTICLE_NUMBER.i; SELECT; WHEN PREFS.OUTBILL_ART = 0 THEN DO; IF PREFS.NUMBER_DIGITS > 0 THEN ZW_Nummer = RIGHT( (Copies("0",PREFS.NUMBER_DIGITS) || ST.ARTICLE_NUMBER.i), PREFS.NUMBER_DIGITS ); ELSE ZW_Nummer = ST.ARTICLE_NUMBER.i; END; WHEN PREFS.OUTBILL_ART = 1 THEN DO; ZW_Nummer = ARTICLE.EAN; END; OTHERWISE DO; ZW_Nummer = ARTICLE.NUMBER2; END; END; FORMAT_NUMBER ST.ARTICLE_STOCK_SYSTEM.i PREFS.FRAC_DIGITS; ZW_Bestand = RIGHT((Copies(" ", 17) || MTR_RESULT), 17); FORMAT_NUMBER ST.ARTICLE_STOCK_TAKING.i PREFS.FRAC_DIGITS; ZW_Bestand2 = RIGHT((Copies(" ", 17) || MTR_RESULT), 17); IF w > 1 THEN FORMAT_MONEY2 ST.ARTICLE_STOCK_TAKING_MONEY.i.w; ELSE FORMAT_MONEY1 ST.ARTICLE_STOCK_TAKING_MONEY.i.w; ZW_Wert = RIGHT((Copies(" ", 17) || MTR_RESULT), 17); Zeile1 = " " LEFT(ZW_Nummer,19) LEFT(ARTICLE.DESCRIPTION,35) ZW_Bestand ZW_Bestand2 ZW_Wert || LF; WRITECH( Dru_Dat, Zeile1 ); ZZ = ZZ + 1; END; IF w > 1 THEN FORMAT_MONEY2 ST.SUMM.w; ELSE FORMAT_MONEY1 ST.SUMM.w; ZW_Summe = RIGHT((Copies(" ", 83) || MTR_RESULT), 83); Zeile1 = " Gesamtwert Inventurliste:" ZW_Summe || LF; WRITECH( Dru_Dat, Zeile1 ); RETURN;