From da24468859c9cc82e09f148c275793a0b909dd27 Mon Sep 17 00:00:00 2001 From: Kravtsov Vitaly Date: Thu, 26 Oct 2023 19:09:16 +0300 Subject: [PATCH] [-] Fixed error with printing nonfiscal receipts --- History.txt | 7 ++ .../fiscalprinter/PrinterProtocol_2.java | 11 +- .../fiscalprinter/command/TextGenerator.java | 22 +++- .../jpos/fiscalprinter/DeviceHeader.java | 52 +-------- .../jpos/fiscalprinter/DriverHeader.java | 72 ++++--------- .../jpos/fiscalprinter/DriverHeader2.java | 2 +- .../jpos/fiscalprinter/FiscalPrinterImpl.java | 30 +++--- .../jpos/fiscalprinter/FptrParameters.java | 68 +++++++++--- .../shtrih/jpos/fiscalprinter/NullHeader.java | 42 -------- .../jpos/fiscalprinter/PrinterHeader.java | 15 --- .../jpos/fiscalprinter/ReceiptLines.java | 8 +- .../jpos/fiscalprinter/XmlPropReader.java | 18 ++-- .../jpos/fiscalprinter/XmlPropWriter.java | 6 +- .../directIO/DIOGetDriverParameter.java | 4 +- .../directIO/DirectIOHandler2.java | 4 +- .../fiscalprinter/receipt/CashInReceipt.java | 4 - .../fiscalprinter/receipt/CashOutReceipt.java | 4 - .../fiscalprinter/receipt/CustomReceipt.java | 1 - .../receipt/NonfiscalReceipt.java | 8 +- .../fiscalprinter/receipt/NullReceipt.java | 4 - .../src/com/shtrih/util/ServiceVersion.java | 2 +- .../jpos/fiscalprinter/XmlPropReaderTest.java | 101 +++++++++--------- 22 files changed, 204 insertions(+), 281 deletions(-) diff --git a/History.txt b/History.txt index 9f2cedf7..e1c4a359 100644 --- a/History.txt +++ b/History.txt @@ -5,6 +5,13 @@ Company : SHTRIH-M www.shtrih-m.ru (495) 787-6090 Url : https://github.com/shtrih-m/javapos_shtrih +******************************************************************************** + + 26.10.2023 + deviceServiceVersion = 1013704 + + [-] Fixed error with printing nonfiscal receipts + ******************************************************************************** 13.10.2023 diff --git a/Source/Core/src/com/shtrih/fiscalprinter/PrinterProtocol_2.java b/Source/Core/src/com/shtrih/fiscalprinter/PrinterProtocol_2.java index 624a92c4..5abf0917 100644 --- a/Source/Core/src/com/shtrih/fiscalprinter/PrinterProtocol_2.java +++ b/Source/Core/src/com/shtrih/fiscalprinter/PrinterProtocol_2.java @@ -38,7 +38,16 @@ public void setByteTimeout(int value) { public void connect() throws Exception { - synchronizeFrames(byteTimeout); + for (int i=0;i<10;i++) { + try { + //synchronizeFrames(byteTimeout); + synchronizeFrames(100); + break; + } + catch(Exception e){ + logger.error("Failed to connect", e); + } + } } public void disconnect(){ diff --git a/Source/Core/src/com/shtrih/fiscalprinter/command/TextGenerator.java b/Source/Core/src/com/shtrih/fiscalprinter/command/TextGenerator.java index bd7e2285..9b9d11f8 100644 --- a/Source/Core/src/com/shtrih/fiscalprinter/command/TextGenerator.java +++ b/Source/Core/src/com/shtrih/fiscalprinter/command/TextGenerator.java @@ -5,6 +5,8 @@ */ package com.shtrih.fiscalprinter.command; +import com.shtrih.jpos.fiscalprinter.ReceiptLines; +import com.shtrih.jpos.fiscalprinter.FiscalPrinterImpl; import com.shtrih.jpos.fiscalprinter.receipt.ReceiptVisitor; import com.shtrih.barcode.PrinterBarcode; import com.shtrih.fiscalprinter.FontNumber; @@ -76,6 +78,7 @@ public void visitCashInReceipt(Object element) throws Exception{ if (receipt.getChange() > 0) { add(PrinterConst.SChangeText, summToStr(receipt.getChange())); } + printReceiptTrailer(); } public void visitCashOutReceipt(Object element) throws Exception{ @@ -90,6 +93,7 @@ public void visitCashOutReceipt(Object element) throws Exception{ if (receipt.getChange() > 0) { add(PrinterConst.SChangeText, summToStr(receipt.getChange())); } + printReceiptTrailer(); } public void visitNonfiscalReceipt(Object element) throws Exception{ @@ -103,6 +107,7 @@ public void visitNonfiscalReceipt(Object element) throws Exception{ for (int i = 0; i < receipt.items.size(); i++) { process((Object) receipt.items.get(i)); } + printReceiptTrailer(); } public void visitSalesReceipt(Object element) throws Exception { @@ -137,7 +142,7 @@ public void visitSalesReceipt(Object element) throws Exception { if (receipt.getChange() > 0) { add(PrinterConst.SChangeText, summToStr(receipt.getChange())); } - + printReceiptTrailer(); } public void addFiscalSign() { @@ -177,7 +182,13 @@ private String getOperatorName() throws Exception { return operatorName; } - private void printReceiptHeader() throws Exception { + private void printReceiptHeader() throws Exception + { + ReceiptLines lines = printer.getParams().getHeader(); + for (int i=1;i<=lines.getCount();i++){ + add(lines.getLine(i).getText()); + } + LongPrinterStatus status = printer.readLongStatus(); int documentNumber = status.getDocumentNumber() + 1; // ККМ @@ -192,6 +203,13 @@ private void printReceiptHeader() throws Exception { add(s, getOperatorName()); } + private void printReceiptTrailer()throws Exception { + ReceiptLines lines = printer.getParams().getTrailer(); + for (int i=1;i<=lines.getCount();i++){ + add(lines.getLine(i).getText()); + } + } + private void process(Object item) throws Exception { try { if (item instanceof FSSaleReceiptItem) { diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/DeviceHeader.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/DeviceHeader.java index ffd0574c..133d1578 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/DeviceHeader.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/DeviceHeader.java @@ -16,60 +16,24 @@ public class DeviceHeader implements PrinterHeader { private final SMFiscalPrinter printer; - private final ReceiptLines header; - private final ReceiptLines trailer; private final CompositeLogger logger = CompositeLogger.getLogger(DeviceHeader.class); public DeviceHeader(SMFiscalPrinter printer) throws Exception { this.printer = printer; - header = new ReceiptLines(printer.getNumHeaderLines()); - trailer = new ReceiptLines(printer.getNumTrailerLines()); - } - - @Override - public int getNumHeaderLines() throws Exception { - return printer.getNumHeaderLines(); - } - - @Override - public int getNumTrailerLines() throws Exception { - return printer.getNumTrailerLines(); - } - - // numHeaderLines for device cannot be changed - @Override - public void setNumHeaderLines(int numHeaderLines) throws Exception { - } - - // numTrailerLines for device cannot be changed - @Override - public void setNumTrailerLines(int numTrailerLines) throws Exception { } @Override public void initDevice() throws Exception { logger.debug("initDevice"); - header.setCount(printer.getNumHeaderLines()); - trailer.setCount(printer.getNumTrailerLines()); + printer.getParams().setNumHeaderLines(printer.getNumHeaderLines()); + printer.getParams().setNumTrailerLines(printer.getNumTrailerLines()); printer.updateTableText(); } - @Override - public ReceiptLine getHeaderLine(int number) throws Exception { - return header.getLine(number); - } - - @Override - public ReceiptLine getTrailerLine(int number) throws Exception { - return trailer.getLine(number); - } - @Override public void setHeaderLine(int number, String text, boolean doubleWidth) throws Exception { - header.setLine(number, text, doubleWidth); - int table = printer.getModel().getHeaderTableNumber(); int row = printer.getHeaderTableRow(); printer.writeTable(table, row + number - 1, 1, text); @@ -78,8 +42,6 @@ public void setHeaderLine(int number, String text, boolean doubleWidth) @Override public void setTrailerLine(int number, String text, boolean doubleWidth) throws Exception { - trailer.setLine(number, text, doubleWidth); - int table = printer.getModel().getTrailerTableNumber(); int row = printer.getModel().getTrailerTableRow(); printer.writeTable(table, row + number - 1, 1, text); @@ -104,7 +66,7 @@ void printTrailer(String additionalTrailer) throws Exception { printer.getParams().getFont()); } printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_AFTER_ADDTRAILER); - if (getNumTrailerLines() >= 0) { + if (printer.getParams().getNumTrailerLines() >= 0) { printRecLine(" "); printRecLine(" "); } @@ -137,12 +99,4 @@ public void endFiscal(String additionalTrailer) throws Exception { } - public ReceiptLines getHeaderLines() { - return header; - } - - public ReceiptLines getTrailerLines() { - return trailer; - } - } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader.java index d2f0c431..824aee20 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader.java @@ -26,9 +26,7 @@ public class DriverHeader implements PrinterHeader { private int lineNumber = 0; - private final ReceiptLines header; - private final ReceiptLines trailer; - private final SMFiscalPrinter printer; + protected final SMFiscalPrinter printer; private final CompositeLogger logger = CompositeLogger.getLogger(DriverHeader.class); /** @@ -36,63 +34,26 @@ public class DriverHeader implements PrinterHeader { */ public DriverHeader(SMFiscalPrinter printer) throws Exception { this.printer = printer; - - int numHeaderLines = printer.getParams().numHeaderLines; - header = new ReceiptLines(numHeaderLines); - int numTrailerLines = printer.getParams().numTrailerLines; - trailer = new ReceiptLines(numTrailerLines); } public SMFiscalPrinter getPrinter() { return printer; } - @Override - public ReceiptLine getHeaderLine(int number) throws Exception { - return header.getLine(number); - } - - @Override - public ReceiptLine getTrailerLine(int number) throws Exception { - return trailer.getLine(number); - } - @Override public void initDevice() throws Exception { logger.debug("initDevice"); printer.clearTableText(); } - @Override - public int getNumHeaderLines() throws Exception { - return header.getCount(); - } - - @Override - public int getNumTrailerLines() { - return trailer.getCount(); - } - - @Override - public void setNumHeaderLines(int numHeaderLines) throws Exception { - header.setCount(numHeaderLines); - } - - @Override - public void setNumTrailerLines(int numTrailerLines) throws Exception { - trailer.setCount(numTrailerLines); - } - @Override public void setHeaderLine(int number, String text, boolean doubleWidth) throws Exception { - header.setLine(number, text, doubleWidth); } @Override public void setTrailerLine(int number, String text, boolean doubleWidth) throws Exception { - trailer.setLine(number, text, doubleWidth); } private void printLine(ReceiptLine line) throws Exception { @@ -125,7 +86,7 @@ void printTrailer(String additionalTrailer) throws Exception { printer.getParams().getFont()); } printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_AFTER_ADDTRAILER); - if (getNumTrailerLines() >= 0) { + if (printer.getParams().getNumTrailerLines() >= 0) { printRecLine(" "); printRecLine(" "); } @@ -153,14 +114,14 @@ void printHeaderBeforeCutter() throws Exception { } else { printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_BEFORE_HEADER); lineNumber = (headerHeight - imageHeight) / lineHeight; - printLines(header, 1, lineNumber); + printLines(getHeader(), 1, lineNumber); } printer.waitForPrinting(); } public void printHeaderNoCutter() throws Exception { printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_BEFORE_HEADER); - printLines(header); + printLines(getHeader()); printer.waitForPrinting(); printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_AFTER_HEADER); printer.waitForPrinting(); @@ -183,10 +144,10 @@ public void printHeaderAfterCutter() throws Exception { } else { printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_BEFORE_HEADER); } - printLines(header); + printLines(getHeader()); } else { lineNumber = (headerHeight - imageHeight) / lineHeight; - printLines(header, lineNumber + 1, header.getCount()); + printLines(getHeader(), lineNumber + 1, getHeader().getCount()); } printer.printReceiptImage(SmFptrConst.SMFPTR_LOGO_AFTER_HEADER); printer.waitForPrinting(); @@ -224,8 +185,8 @@ void printSpaceLines(int count) throws Exception { } private void printTrailer() throws Exception { - for (int i = 1; i <= getNumTrailerLines(); i++) { - printLine(getTrailerLine(i)); + for (int i = 1; i <= printer.getParams().getNumTrailerLines(); i++) { + printLine(getParams().getTrailerLine(i)); } } @@ -260,13 +221,16 @@ public void beginDocument(String additionalHeader) throws Exception { logger.debug("beginDocument"); printText(additionalHeader); } - - public ReceiptLines getHeaderLines() { - return header; + + public FptrParameters getParams(){ + return printer.getParams(); } - - public ReceiptLines getTrailerLines() { - return trailer; + + public ReceiptLines getHeader(){ + return getParams().getHeader(); + } + + public ReceiptLines getTrailer(){ + return getParams().getTrailer(); } - } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader2.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader2.java index ee8a08ff..c935baff 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader2.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/DriverHeader2.java @@ -14,7 +14,7 @@ public DriverHeader2(SMFiscalPrinter printer) throws Exception public void endFiscal(String additionalTrailer) throws Exception { printTrailer(additionalTrailer); - printSpaceLines(getNumHeaderLines()); + printSpaceLines(printer.getParams().getNumHeaderLines()); getPrinter().cutPaper(); } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/FiscalPrinterImpl.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/FiscalPrinterImpl.java index 40efa5e2..e9faf0b0 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/FiscalPrinterImpl.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/FiscalPrinterImpl.java @@ -1134,12 +1134,13 @@ public boolean isFirmwareUpdaterServiceRunning() { return firmwareUpdaterService != null; } - public void setNumHeaderLines(int numHeaderLines) throws Exception { - header.setNumHeaderLines(numHeaderLines); + public void setNumHeaderLines(int numHeaderLines) throws Exception + { + printer.getParams().setNumHeaderLines(numHeaderLines); } public void setNumTrailerLines(int numTrailerLines) throws Exception { - header.setNumTrailerLines(numTrailerLines); + printer.getParams().setNumTrailerLines(numTrailerLines); } public LongPrinterStatus readLongStatus() throws Exception { @@ -1646,12 +1647,12 @@ public int getMessageLength() throws Exception { public int getNumHeaderLines() throws Exception { checkEnabled(); - return header.getNumHeaderLines(); + return getParams().getNumHeaderLines(); } public int getNumTrailerLines() throws Exception { checkEnabled(); - return header.getNumTrailerLines(); + return getParams().getNumTrailerLines(); } public int getNumVatRates() throws Exception { @@ -3916,11 +3917,11 @@ public void setDate(String date) throws Exception { } public String getHeaderLine(int index) throws Exception { - return header.getHeaderLine(index + 1).getText(); + return getParams().getHeaderLine(index + 1).getText(); } public String getTrailerLine(int index) throws Exception { - return header.getTrailerLine(index + 1).getText(); + return getParams().getTrailerLine(index + 1).getText(); } public void setHeaderLine(int lineNumber, String text, boolean doubleWidth) throws Exception { @@ -3939,6 +3940,7 @@ public void setHeaderLine(int lineNumber, String text, boolean doubleWidth) thro text = StringUtils.centerLine(text.trim(), getMessageLength()); } text = StringUtils.trimRight(text); + params.setHeaderLine(lineNumber, text, doubleWidth); header.setHeaderLine(lineNumber, text, doubleWidth); saveProperties(); logoPosition = SmFptrConst.SMFPTR_LOGO_PRINT; @@ -3971,6 +3973,7 @@ public void setTrailerLine(int lineNumber, String text, boolean doubleWidth) thr text = StringUtils.centerLine(text.trim(), getMessageLength()); } text = StringUtils.trimRight(text); + params.setTrailerLine(lineNumber, text, doubleWidth); header.setTrailerLine(lineNumber, text, doubleWidth); saveProperties(); logoPosition = SmFptrConst.SMFPTR_LOGO_PRINT; @@ -4611,7 +4614,7 @@ public void saveProperties() { serial); writer.write(getPrinterImages()); writer.write(printer.getReceiptImages()); - writer.writePrinterHeader(header); + writer.writePrinterHeader(params); writer.writeNonFiscalDocNumber(params.nonFiscalDocNumber); writer.writeParameterBool("isTableTextCleared", params.isTableTextCleared); @@ -4634,7 +4637,7 @@ private void loadProperties() throws Exception { reader.read(getPrinterImages()); reader.read(printer.getReceiptImages()); - reader.readPrinterHeader(header); + reader.readPrinterHeader(params); params.nonFiscalDocNumber = reader.readNonFiscalDocNumber(); params.isTableTextCleared = reader.readParameterBool("isTableTextCleared"); logger.debug("loadProperties: OK"); @@ -4937,10 +4940,7 @@ private void readLastDocument() { } } - /* - private final PrinterReceipt printerReceipt = new PrinterReceipt(); - public PrinterReceipt getReceipt() { - return printerReceipt; - } - */ + public PrinterHeader getHeader(){ + return header; + } } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/FptrParameters.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/FptrParameters.java index 74498f72..5a3e7f66 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/FptrParameters.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/FptrParameters.java @@ -59,8 +59,6 @@ public class FptrParameters { public boolean centerImage = true; // center BMP image public String fieldsFileName = ""; public String fieldsFilesPath = ""; - public int numHeaderLines; - public int numTrailerLines; public String[] taxNames = {"А", "Б", "В", "Г"}; public final Vector paymentNames = new Vector(); public int reportDevice = SmFptrConst.SMFPTR_REPORT_DEVICE_EJ; @@ -213,7 +211,10 @@ public class FptrParameters { public boolean portNameSingle = true; public int duplicateReceipt = SmFptrConst.DUPLICATE_RECEIPT_DEVICE; public boolean processTag1256 = false; - + private int numHeaderLines; + private int numTrailerLines; + private final ReceiptLines header = new ReceiptLines(); + private final ReceiptLines trailer = new ReceiptLines(); public FptrParameters() { font = new FontNumber(PrinterConst.FONT_NUMBER_NORMAL); @@ -292,8 +293,8 @@ public void load(JposEntry entry) throws Exception { fieldsFilesPath = reader.readString("fieldsFilesPath", ""); setGraphicsLineDelay(reader.readInteger("graphicsLineDelay", defaultGraphicsLineDelay)); - numHeaderLines = reader.readInteger("numHeaderLines", 5); - numTrailerLines = reader.readInteger("numTrailerLines", 0); + setNumHeaderLines(reader.readInteger("numHeaderLines", 5)); + setNumTrailerLines(reader.readInteger("numTrailerLines", 0)); reportDevice = reader.readInteger("reportDevice", SmFptrConst.SMFPTR_REPORT_DEVICE_EJ); reportType = reader.readInteger("reportType", @@ -373,15 +374,15 @@ public void load(JposEntry entry) throws Exception { barcodeTextPosition = reader.readInteger("barcodeTextPosition", SmFptrConst.SMFPTR_TEXTPOS_BELOW); barcodeTextFont = reader.readInteger("barcodeTextFont", 1); barcodeAspectRatio = reader.readInteger("barcodeAspectRatio", 3); - + fdoMode = SmFptrConst.FDO_MODE_DISABLED; - if (reader.readBoolean("FSServiceEnabled", false)){ + if (reader.readBoolean("FSServiceEnabled", false)) { fdoMode = SmFptrConst.FDO_MODE_ENABLED; } - if (reader.propertyExists("fdoMode")){ + if (reader.propertyExists("fdoMode")) { fdoMode = reader.readInteger("fdoMode", SmFptrConst.FDO_MODE_DISABLED); } - + FSHost = reader.readString("FSHost", "k-server.test-naofd.ru"); FSPort = reader.readInteger("FSPort", 7779); FSConnectTimeout = reader.readInteger("FSConnectTimeout", 3000); @@ -510,8 +511,7 @@ public void loadCommandTimeouts(JposEntry jposEntry) throws Exception { Enumeration props = jposEntry.getPropertyNames(); while (props.hasMoreElements()) { String propertyName = (String) props.nextElement(); - if (propertyName.indexOf(tag) != -1) - { + if (propertyName.indexOf(tag) != -1) { try { String propertyValue = reader.readString(propertyName, ""); String scode = propertyName.substring(tag.length()); @@ -533,7 +533,7 @@ public void loadPayTypes(JposEntry jposEntry) throws Exception { try { payTypes.clear(); JposPropertyReader reader = new JposPropertyReader(jposEntry); - + String payTypeID = ""; String payTypeValue = ""; String propertyName = ""; @@ -683,4 +683,48 @@ public void setReceiptField(String fieldName, String fieldValue) throws Exceptio receiptFields.put(fieldName, fieldValue); } + public int getNumHeaderLines() { + return numHeaderLines; + } + + public int getNumTrailerLines() { + return numTrailerLines; + } + + public void setNumHeaderLines(int numHeaderLines) throws Exception { + this.numHeaderLines = numHeaderLines; + header.setCount(numHeaderLines); + } + + public void setNumTrailerLines(int numTrailerLines) throws Exception + { + this.numTrailerLines = numTrailerLines; + trailer.setCount(numTrailerLines); + } + + public void setHeaderLine(int number, String text, boolean doubleWidth) + throws Exception { + header.setLine(number, text, doubleWidth); + } + + public void setTrailerLine(int number, String text, boolean doubleWidth) + throws Exception { + trailer.setLine(number, text, doubleWidth); + } + + public ReceiptLine getHeaderLine(int number) throws Exception { + return header.getLine(number); + } + + public ReceiptLine getTrailerLine(int number) throws Exception { + return trailer.getLine(number); + } + + public ReceiptLines getHeader() { + return header; + } + + public ReceiptLines getTrailer() { + return trailer; + } } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/NullHeader.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/NullHeader.java index 680ccab7..0fe2692c 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/NullHeader.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/NullHeader.java @@ -18,42 +18,10 @@ public NullHeader(SMFiscalPrinter printer) { this.printer = printer; } - @Override - public int getNumHeaderLines() throws Exception { - return header.getCount(); - } - - @Override - public int getNumTrailerLines() throws Exception { - return trailer.getCount(); - } - - // numHeaderLines for device cannot be changed - @Override - public void setNumHeaderLines(int numHeaderLines) throws Exception { - header.setCount(numHeaderLines); - } - - // numTrailerLines for device cannot be changed - @Override - public void setNumTrailerLines(int numTrailerLines) throws Exception { - trailer.setCount(numTrailerLines); - } - @Override public void initDevice() throws Exception { } - @Override - public ReceiptLine getHeaderLine(int number) throws Exception { - return header.getLine(number); - } - - @Override - public ReceiptLine getTrailerLine(int number) throws Exception { - return trailer.getLine(number); - } - @Override public void setHeaderLine(int number, String text, boolean doubleWidth) throws Exception { @@ -80,14 +48,4 @@ public void endFiscal(String additionalTrailer) public void endNonFiscal(String additionalTrailer) throws Exception { } - - @Override - public ReceiptLines getHeaderLines() { - return header; - } - - @Override - public ReceiptLines getTrailerLines() { - return trailer; - } } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/PrinterHeader.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/PrinterHeader.java index 093003f0..13421ed1 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/PrinterHeader.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/PrinterHeader.java @@ -6,24 +6,12 @@ public interface PrinterHeader { public void initDevice() throws Exception; - public int getNumHeaderLines() throws Exception; - - public int getNumTrailerLines() throws Exception; - - public void setNumHeaderLines(int numHeaderLines) throws Exception; - - public void setNumTrailerLines(int numHeaderLines) throws Exception; - public void setHeaderLine(int number, String text, boolean doubleWidth) throws Exception; public void setTrailerLine(int number, String text, boolean doubleWidth) throws Exception; - public ReceiptLine getHeaderLine(int number) throws Exception; - - public ReceiptLine getTrailerLine(int number) throws Exception; - public void beginDocument(String additionalHeader) throws Exception; @@ -33,7 +21,4 @@ public void endFiscal(String additionalTrailer) public void endNonFiscal(String additionalTrailer) throws Exception; - public ReceiptLines getHeaderLines(); - - public ReceiptLines getTrailerLines(); } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/ReceiptLines.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/ReceiptLines.java index e9e833da..b1de4da1 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/ReceiptLines.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/ReceiptLines.java @@ -22,6 +22,9 @@ public class ReceiptLines { private int count; private final Map lines = new HashMap(); + public ReceiptLines() { + } + public ReceiptLines(int count) { this.count = count; } @@ -30,8 +33,7 @@ public int getCount() { return count; } - public void setCount(int newCount) throws Exception - { + public void setCount(int newCount) throws Exception { this.count = newCount; } @@ -41,7 +43,7 @@ public boolean validNumber(int number) { public ReceiptLine getLine(int number) throws Exception { ReceiptLine result = lines.get(number); - if (result == null){ + if (result == null) { result = new ReceiptLine(); } return result; diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropReader.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropReader.java index cf9b8426..fda259c0 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropReader.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropReader.java @@ -121,13 +121,13 @@ public ReceiptImage readReceiptImage(Node imageNode) return new ReceiptImage(imageIndex, position); } - public void readPrinterHeader(PrinterHeader header) throws Exception { + public void readPrinterHeader(FptrParameters params) throws Exception { try { - for (int i = 1; i <= header.getNumHeaderLines(); i++) { - header.setHeaderLine(i, "", false); + for (int i = 1; i <= params.getNumHeaderLines(); i++) { + params.setHeaderLine(i, "", false); } - for (int i = 1; i <= header.getNumTrailerLines(); i++) { - header.setTrailerLine(i, "", false); + for (int i = 1; i <= params.getNumTrailerLines(); i++) { + params.setTrailerLine(i, "", false); } // header @@ -137,14 +137,14 @@ public void readPrinterHeader(PrinterHeader header) throws Exception { int count = headerNode.getChildNodes().getLength(); for (int i = 0; i < count; i++) { - if (number > header.getNumHeaderLines()) { + if (number > params.getNumHeaderLines()) { break; } Node lineNode = headerNode.getChildNodes().item(i); if (lineNode.getNodeName().equalsIgnoreCase("Line")) { String text = readParameterStr(lineNode, "Text"); boolean doubleWidth = readParameterBool(lineNode, "DoubleWidth"); - header.setHeaderLine(number, text, doubleWidth); + params.setHeaderLine(number, text, doubleWidth); number++; } } @@ -154,14 +154,14 @@ public void readPrinterHeader(PrinterHeader header) throws Exception { count = headerNode.getChildNodes().getLength(); for (int i = 0; i < count; i++) { - if (number > header.getNumTrailerLines()) { + if (number > params.getNumTrailerLines()) { break; } Node lineNode = headerNode.getChildNodes().item(i); if (lineNode.getNodeName().equalsIgnoreCase("Line")) { String text = readParameterStr(lineNode, "Text"); boolean doubleWidth = readParameterBool(lineNode, "DoubleWidth"); - header.setTrailerLine(number, text, doubleWidth); + params.setTrailerLine(number, text, doubleWidth); number++; } } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropWriter.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropWriter.java index 9e678279..810bb9cd 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropWriter.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/XmlPropWriter.java @@ -85,16 +85,16 @@ public void write(ReceiptImage image) throws Exception { addParameter(imageNode, "Position", new Integer(image.getPosition())); } - public void writePrinterHeader(PrinterHeader header) throws Exception { + public void writePrinterHeader(FptrParameters params) throws Exception { node = doc.createElement("Header"); root.appendChild(node); - ReceiptLines lines = header.getHeaderLines(); + ReceiptLines lines = params.getHeader(); for (int i = 1; i <= lines.getCount(); i++) { write(lines.getLine(i)); } node = doc.createElement("Trailer"); root.appendChild(node); - lines = header.getTrailerLines(); + lines = params.getTrailer(); for (int i = 1; i <= lines.getCount(); i++) { write(lines.getLine(i)); } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DIOGetDriverParameter.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DIOGetDriverParameter.java index 7a8262f4..8f6314f7 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DIOGetDriverParameter.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DIOGetDriverParameter.java @@ -32,11 +32,11 @@ public void execute(int[] data, Object object) throws Exception { break; case SmFptrConst.SMFPTR_DIO_PARAM_NUMHEADERLINES: - ((int[]) object)[0] = getParams().numHeaderLines; + ((int[]) object)[0] = getParams().getNumHeaderLines(); break; case SmFptrConst.SMFPTR_DIO_PARAM_NUMTRAILERLINES: - ((int[]) object)[0] = getParams().numTrailerLines; + ((int[]) object)[0] = getParams().getNumTrailerLines(); break; case SmFptrConst.SMFPTR_DIO_PARAM_POLL_ENABLED: diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DirectIOHandler2.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DirectIOHandler2.java index deafe23e..0805c3bc 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DirectIOHandler2.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/directIO/DirectIOHandler2.java @@ -658,11 +658,11 @@ public void dioGetDriverParameter(int[] data, Object object) throws Exception { break; case SmFptrConst.SMFPTR_DIO_PARAM_NUMHEADERLINES: - paramValue = String.valueOf(getParams().numHeaderLines); + paramValue = String.valueOf(getParams().getNumHeaderLines()); break; case SmFptrConst.SMFPTR_DIO_PARAM_NUMTRAILERLINES: - paramValue = String.valueOf(getParams().numTrailerLines); + paramValue = String.valueOf(getParams().getNumTrailerLines()); break; case SmFptrConst.SMFPTR_DIO_PARAM_POLL_ENABLED: diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashInReceipt.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashInReceipt.java index 5ff963a0..d53bbc3b 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashInReceipt.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashInReceipt.java @@ -43,10 +43,6 @@ public boolean isPayed() { return payment >= total; } - public boolean getCapAutoCut() throws Exception { - return getModel().getCapCashInAutoCut(); - } - public long getSubtotal() throws Exception { return total; } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashOutReceipt.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashOutReceipt.java index 95086497..39a10cf7 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashOutReceipt.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CashOutReceipt.java @@ -43,10 +43,6 @@ public boolean isPayed() { return payment >= total; } - public boolean getCapAutoCut() throws Exception { - return getModel().getCapCashOutAutoCut(); - } - public long getSubtotal() throws Exception { return total; } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CustomReceipt.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CustomReceipt.java index 1aa65db0..957b719f 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CustomReceipt.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/CustomReceipt.java @@ -354,5 +354,4 @@ private String formatStrings(String line1, String line2) throws Exception { public void printStrings(String line1, String line2) throws Exception { printText(formatStrings(line1, line2)); } - } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NonfiscalReceipt.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NonfiscalReceipt.java index c65a028f..00a6e958 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NonfiscalReceipt.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NonfiscalReceipt.java @@ -13,7 +13,7 @@ */ public class NonfiscalReceipt extends CustomReceipt implements FiscalReceipt { - public Vector items = new Vector(); + public Vector items = new Vector(); public NonfiscalReceipt(SMFiscalPrinter printer) { super(printer); @@ -25,16 +25,16 @@ private void addTextItem(String text, FontNumber font) throws Exception { public void printRecMessage(int station, FontNumber font, String message) throws Exception { - addTextItem(message, getParams().getFont()); + addTextItem(message, font); + getPrinter().printText(getStation(station), message, font); } public void printNormal(int station, String data) throws Exception { addTextItem(data, getParams().getFont()); + getPrinter().printText(getStation(station), data, getParams().font); } public void accept(ReceiptVisitor visitor) throws Exception{ visitor.visitNonfiscalReceipt(this); } - - } diff --git a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NullReceipt.java b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NullReceipt.java index 35a76fbc..77980af4 100644 --- a/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NullReceipt.java +++ b/Source/Core/src/com/shtrih/jpos/fiscalprinter/receipt/NullReceipt.java @@ -38,10 +38,6 @@ public NullReceipt(SMFiscalPrinter printer) { super(printer); } - public boolean getCapAutoCut() throws Exception { - return false; - } - public boolean isPayed() { return false; } diff --git a/Source/FiscalPrinterService/src/com/shtrih/util/ServiceVersion.java b/Source/FiscalPrinterService/src/com/shtrih/util/ServiceVersion.java index 1dbcbe85..0c804c1f 100644 --- a/Source/FiscalPrinterService/src/com/shtrih/util/ServiceVersion.java +++ b/Source/FiscalPrinterService/src/com/shtrih/util/ServiceVersion.java @@ -1,5 +1,5 @@ package com.shtrih.util; public class ServiceVersion { - public static final String VERSION = "703-1-gca0a9e7"; + public static final String VERSION = "703-2-g00ca0fe4"; } \ No newline at end of file diff --git a/Source/FiscalPrinterService/test/com/shtrih/jpos/fiscalprinter/XmlPropReaderTest.java b/Source/FiscalPrinterService/test/com/shtrih/jpos/fiscalprinter/XmlPropReaderTest.java index 0f09acbc..bd132eb9 100644 --- a/Source/FiscalPrinterService/test/com/shtrih/jpos/fiscalprinter/XmlPropReaderTest.java +++ b/Source/FiscalPrinterService/test/com/shtrih/jpos/fiscalprinter/XmlPropReaderTest.java @@ -51,44 +51,41 @@ public void testSave() throws Exception { ReceiptImage receiptImage = new ReceiptImage(1, 2); receiptImages.add(receiptImage); - SMFiscalPrinterNull printer = new SMFiscalPrinterNull(null, null, new FptrParameters()); - - DriverHeader header = new DriverHeader(printer); - header.setNumHeaderLines(4); - header.setHeaderLine(1, "HeaderLine 1", false); - header.setHeaderLine(2, "HeaderLine 2", true); - header.setHeaderLine(3, "HeaderLine 3", false); - header.setHeaderLine(4, "HeaderLine 4", false); - - assertEquals("HeaderLine 1", header.getHeaderLine(1).getText()); - assertEquals(false, header.getHeaderLine(1).isDoubleWidth()); - assertEquals("HeaderLine 2", header.getHeaderLine(2).getText()); - assertEquals(true, header.getHeaderLine(2).isDoubleWidth()); - assertEquals("HeaderLine 3", header.getHeaderLine(3).getText()); - assertEquals(false, header.getHeaderLine(3).isDoubleWidth()); - assertEquals("HeaderLine 4", header.getHeaderLine(4).getText()); - assertEquals(false, header.getHeaderLine(4).isDoubleWidth()); - - - header.setNumTrailerLines(3); - header.setTrailerLine(1, "TrailerLine 1", false); - header.setTrailerLine(2, "TrailerLine 2", true); - - assertEquals("TrailerLine 1", header.getTrailerLine(1).getText()); - assertEquals(false, header.getTrailerLine(1).isDoubleWidth()); - assertEquals("TrailerLine 2", header.getTrailerLine(2).getText()); - assertEquals(true, header.getTrailerLine(2).isDoubleWidth()); - assertEquals("", header.getTrailerLine(3).getText()); - assertEquals(false, header.getTrailerLine(3).isDoubleWidth()); + FptrParameters params = new FptrParameters(); + + params.setNumHeaderLines(4); + params.setHeaderLine(1, "HeaderLine 1", false); + params.setHeaderLine(2, "HeaderLine 2", true); + params.setHeaderLine(3, "HeaderLine 3", false); + params.setHeaderLine(4, "HeaderLine 4", false); + + assertEquals("HeaderLine 1", params.getHeaderLine(1).getText()); + assertEquals(false, params.getHeaderLine(1).isDoubleWidth()); + assertEquals("HeaderLine 2", params.getHeaderLine(2).getText()); + assertEquals(true, params.getHeaderLine(2).isDoubleWidth()); + assertEquals("HeaderLine 3", params.getHeaderLine(3).getText()); + assertEquals(false, params.getHeaderLine(3).isDoubleWidth()); + assertEquals("HeaderLine 4", params.getHeaderLine(4).getText()); + assertEquals(false, params.getHeaderLine(4).isDoubleWidth()); + + + params.setNumTrailerLines(3); + params.setTrailerLine(1, "TrailerLine 1", false); + params.setTrailerLine(2, "TrailerLine 2", true); + + assertEquals("TrailerLine 1", params.getTrailerLine(1).getText()); + assertEquals(false, params.getTrailerLine(1).isDoubleWidth()); + assertEquals("TrailerLine 2", params.getTrailerLine(2).getText()); + assertEquals(true, params.getTrailerLine(2).isDoubleWidth()); + assertEquals("", params.getTrailerLine(3).getText()); + assertEquals(false, params.getTrailerLine(3).isDoubleWidth()); XmlPropWriter writer = new XmlPropWriter("FiscalPrinter", "Device1"); writer.write(printerImages); writer.write(receiptImages); - writer.writePrinterHeader(header); + writer.writePrinterHeader(params); writer.save(fileName); - header = new DriverHeader(printer); - XmlPropReader reader = new XmlPropReader(); reader.load("FiscalPrinter", "Device1", fileName); reader.read(printerImages); @@ -96,27 +93,25 @@ public void testSave() throws Exception { //header.initDevice(); - header.setNumHeaderLines(4); - header.setNumTrailerLines(3); - reader.readPrinterHeader(header); - - - - assertEquals("HeaderLine 1", header.getHeaderLine(1).getText()); - assertEquals(false, header.getHeaderLine(1).isDoubleWidth()); - assertEquals("HeaderLine 2", header.getHeaderLine(2).getText()); - assertEquals(true, header.getHeaderLine(2).isDoubleWidth()); - assertEquals("HeaderLine 3", header.getHeaderLine(3).getText()); - assertEquals(false, header.getHeaderLine(3).isDoubleWidth()); - assertEquals("HeaderLine 4", header.getHeaderLine(4).getText()); - assertEquals(false, header.getHeaderLine(4).isDoubleWidth()); - - assertEquals("TrailerLine 1", header.getTrailerLine(1).getText()); - assertEquals(false, header.getTrailerLine(1).isDoubleWidth()); - assertEquals("TrailerLine 2", header.getTrailerLine(2).getText()); - assertEquals(true, header.getTrailerLine(2).isDoubleWidth()); - assertEquals("", header.getTrailerLine(3).getText()); - assertEquals(false, header.getTrailerLine(3).isDoubleWidth()); + params.setNumHeaderLines(4); + params.setNumTrailerLines(3); + reader.readPrinterHeader(params); + + assertEquals("HeaderLine 1", params.getHeaderLine(1).getText()); + assertEquals(false, params.getHeaderLine(1).isDoubleWidth()); + assertEquals("HeaderLine 2", params.getHeaderLine(2).getText()); + assertEquals(true, params.getHeaderLine(2).isDoubleWidth()); + assertEquals("HeaderLine 3", params.getHeaderLine(3).getText()); + assertEquals(false, params.getHeaderLine(3).isDoubleWidth()); + assertEquals("HeaderLine 4", params.getHeaderLine(4).getText()); + assertEquals(false, params.getHeaderLine(4).isDoubleWidth()); + + assertEquals("TrailerLine 1", params.getTrailerLine(1).getText()); + assertEquals(false, params.getTrailerLine(1).isDoubleWidth()); + assertEquals("TrailerLine 2", params.getTrailerLine(2).getText()); + assertEquals(true, params.getTrailerLine(2).isDoubleWidth()); + assertEquals("", params.getTrailerLine(3).getText()); + assertEquals(false, params.getTrailerLine(3).isDoubleWidth()); assertEquals(2, printerImages.size()); printerImage = printerImages.get(0);