From 88b39820cacf5e219b6e0bc720e71717f62953c6 Mon Sep 17 00:00:00 2001 From: localhorst Date: Thu, 6 Dec 2018 23:15:06 +0100 Subject: [PATCH] bill splitted --- .../com/jFxKasse/application/PrintJob.java | 24 +++- .../controller/PrinterController.java | 2 +- .../java/com/jFxKasse/datatypes/Category.java | 38 +++++ .../com/jFxKasse/datatypes/PrintData.java | 21 ++- .../jFxKasse/datatypes/PrintDataSimple.java | 10 +- .../jFxKasse/datatypes/PrintDataSplitted.java | 134 ++++++++++++++---- 6 files changed, 181 insertions(+), 48 deletions(-) create mode 100644 src/main/java/com/jFxKasse/datatypes/Category.java diff --git a/src/main/java/com/jFxKasse/application/PrintJob.java b/src/main/java/com/jFxKasse/application/PrintJob.java index 499188e..48b8cea 100644 --- a/src/main/java/com/jFxKasse/application/PrintJob.java +++ b/src/main/java/com/jFxKasse/application/PrintJob.java @@ -1,10 +1,13 @@ package com.jFxKasse.application; +import java.util.ArrayList; + import com.jFxKasse.controller.DBController; import com.jFxKasse.controller.PrinterController; import com.jFxKasse.controller.XMLController; import com.jFxKasse.datatypes.PrintDataSimple; +import com.jFxKasse.datatypes.PrintDataSplitted; import javafx.geometry.Insets; import javafx.scene.control.ButtonType; @@ -53,9 +56,26 @@ public class PrintJob pc.selectPrinter(xmlc.getPrintername()); if (xmlc.getCategorySplitted()) { // split the bills + + PrintDataSplitted pdsplitted = new PrintDataSplitted(xmlc.getLinebreak(), + xmlc.getOffsetHeader(), xmlc.getOffsetFooter(), + timedate.getSystemTime() + " " + timedate.getSystemDate(), + xmlc.getHeader(), xmlc.getFooter()); - // TODO - + pdsplitted.setData(Integer.toString(jobID), dbc.getTime_Job(jobID), + dbc.getQuantity_Job(jobID), dbc.getName_Job(jobID), + dbc.getValue_Job(jobID), dbc.getCategory_Job(jobID), + dbc.getJobValue_Job(jobID)); + + + System.out.println("Printing job ..."); + + ArrayList printString = pdsplitted.getPrintStrings(); + + for(int i = 0; i < printString.size(); i++) { + pc.printString(printString.get(i)); + } + } else { // one single bills PrintDataSimple pds = new PrintDataSimple(xmlc.getLinebreak(), diff --git a/src/main/java/com/jFxKasse/controller/PrinterController.java b/src/main/java/com/jFxKasse/controller/PrinterController.java index 7f872d2..e416870 100644 --- a/src/main/java/com/jFxKasse/controller/PrinterController.java +++ b/src/main/java/com/jFxKasse/controller/PrinterController.java @@ -83,13 +83,13 @@ public class PrinterController implements Printable } } - /** * * @param input data as String */ public void printString(String text) { + PrintService service = selectedPrinter; DocPrintJob job = service.createPrintJob(); diff --git a/src/main/java/com/jFxKasse/datatypes/Category.java b/src/main/java/com/jFxKasse/datatypes/Category.java new file mode 100644 index 0000000..89e2b0f --- /dev/null +++ b/src/main/java/com/jFxKasse/datatypes/Category.java @@ -0,0 +1,38 @@ +package com.jFxKasse.datatypes; + +public class Category +{ + + private String categoryName; + + private String positionsString = "\n"; + + public Category(String categoryName) + { + this.categoryName = categoryName; + } + +// public void setCategoryName(String categoryName) { +// this.categoryName = categoryName; +// } + + public String getCategoryName() + { + return categoryName; + } + + public void addPosition(int quantity, String name, String value, PrintData pd) + { + //positionenString = pd.setRight(pd.breakLines(name), value + " €") + "\n"; + + for (int i = 0; i < quantity; i++) { + positionsString = positionsString + + pd.setRight(pd.breakLines(name), value + " €") + "\n"; + } + } + + public String getPositionsString() { + return positionsString; + } + +} diff --git a/src/main/java/com/jFxKasse/datatypes/PrintData.java b/src/main/java/com/jFxKasse/datatypes/PrintData.java index 350e4e2..4aa8b87 100644 --- a/src/main/java/com/jFxKasse/datatypes/PrintData.java +++ b/src/main/java/com/jFxKasse/datatypes/PrintData.java @@ -13,13 +13,13 @@ public abstract class PrintData protected String footer; - protected String positionenQuantity; + protected String positionsQuantity; - protected String positionenName; + protected String positionsName; - protected String positionenValue; + protected String positionsValue; - protected String positionenCategory; + protected String positionsCategory; protected String jobID; @@ -60,17 +60,16 @@ public abstract class PrintData * @param jobValue */ public void setData(String jobID, String timeAndDateOrder, - String positionenQuantity, String positionenName, - String positionenValue, String positionenCategory, String jobValue) + String positionsQuantity, String positionsName, + String positionsValue, String positionsCategory, String jobValue) { this.jobID = jobID; this.timeAndDateOrder = timeAndDateOrder; - this.positionenQuantity = positionenQuantity; - this.positionenName = positionenName; - this.positionenValue = positionenValue; - this.positionenCategory = positionenCategory; + this.positionsQuantity = positionsQuantity; + this.positionsName = positionsName; + this.positionsValue = positionsValue; + this.positionsCategory = positionsCategory; this.jobValue = jobValue; - } /** diff --git a/src/main/java/com/jFxKasse/datatypes/PrintDataSimple.java b/src/main/java/com/jFxKasse/datatypes/PrintDataSimple.java index b1301d8..d3f8fe4 100644 --- a/src/main/java/com/jFxKasse/datatypes/PrintDataSimple.java +++ b/src/main/java/com/jFxKasse/datatypes/PrintDataSimple.java @@ -53,14 +53,14 @@ public class PrintDataSimple extends PrintData String positionen = "\n"; - int posCount = positionenQuantity.length() - - positionenQuantity.replace(";", "").length() + 1; + int posCount = positionsQuantity.length() + - positionsQuantity.replace(";", "").length() + 1; - String[] positionQuantity = positionenQuantity.split(";"); + String[] positionQuantity = positionsQuantity.split(";"); - String[] positionName = positionenName.split(";"); + String[] positionName = positionsName.split(";"); - String[] positionValue = positionenValue.split(";"); + String[] positionValue = positionsValue.split(";"); for (int i = 0; i < posCount; i++) { //All different posNames int quantity = Integer.parseInt(positionQuantity[i]); diff --git a/src/main/java/com/jFxKasse/datatypes/PrintDataSplitted.java b/src/main/java/com/jFxKasse/datatypes/PrintDataSplitted.java index aec4e04..4450ec6 100644 --- a/src/main/java/com/jFxKasse/datatypes/PrintDataSplitted.java +++ b/src/main/java/com/jFxKasse/datatypes/PrintDataSplitted.java @@ -1,12 +1,17 @@ package com.jFxKasse.datatypes; +import java.util.ArrayList; + public class PrintDataSplitted extends PrintData { + private ArrayList printString = new ArrayList(); - private String printString; + private ArrayList categories = new ArrayList(); + + private int categoryCount = 0; /** - * Constructor with all data that is not in the DB + * Constructor with all data that is not in the DB * @param lineBreak * @param headerSpace * @param footerSpace @@ -23,17 +28,20 @@ public class PrintDataSplitted extends PrintData /** * Generates the String - * @return the final Print String + * @return the final Array with the Print Strings */ - public String getPrintString() + public ArrayList getPrintStrings() { generatePrintString(); - return this.printString; + return printString; } @Override protected void generatePrintString() { + + String firstBill; + /* Header */ String header = "\n"; for (int i = 1; i < headerSpace; i++) { @@ -49,26 +57,7 @@ public class PrintDataSplitted extends PrintData + setRight("Druck: ", timeAndDatePrint) + "\n" + setRight("Bestellnummer: ", jobID); - /* Positionen */ - - String positionen = "\n"; - - int posCount = positionenQuantity.length() - - positionenQuantity.replace(";", "").length() + 1; - - String[] positionQuantity = positionenQuantity.split(";"); - - String[] positionName = positionenName.split(";"); - - String[] positionValue = positionenValue.split(";"); - - for (int i = 0; i < posCount; i++) { //All different posNames - int quantity = Integer.parseInt(positionQuantity[i]); - for (int j = 0; j < quantity; j++) { //quantities - positionen = positionen + setRight(breakLines(positionName[i]), - positionValue[i] + " €") + "\n"; - } - } + /* Splitted Bills */ /* Price */ @@ -83,11 +72,98 @@ public class PrintDataSplitted extends PrintData } footer = footer + "_"; - /* Build final Print String */ + /* Build first Print String */ + + firstBill = header + "\n" + getSeparator() + "\n" + info + "\n" + + getSeparator() + "\n" + setCenter("Bon wurde aufgeteilt") + "\n" + + getSeparator() + "\n" + price + "\n" + getSeparator() + "\n" + + footer; + + printString.add(firstBill); + + /* first bill ends here */ + + /* Categories in extra bills*/ + + String positions = null; + + int posCount = positionsQuantity.length() + - positionsQuantity.replace(";", "").length() + 1; + + String[] positionQuantity = positionsQuantity.split(";"); + String[] positionName = positionsName.split(";"); + String[] positionValue = positionsValue.split(";"); + String[] positionCategory = positionsCategory.split(";"); + + for (int i = 0; i < posCount; i++) { // All different posNames + int quantity = Integer.parseInt(positionQuantity[i]); + insertToCategory(quantity, positionName[i], positionValue[i], + positionCategory[i]); + } + + // loops through all categories + for (int i = 0; i < categories.size(); i++) { + + String thisBill; + + /* Header */ + header = "\n"; + for (int o = 1; o < headerSpace; o++) { + header = header + "\n"; + } + + // This is the final header + header = header + setCenter(this.header); + + /* Info */ + + info = setRight("Bestellung: ", timeAndDateOrder) + "\n" + + setRight("Druck: ", timeAndDatePrint) + "\n" + + setRight("Bestellnummer: ", jobID); + + /* Positions */ + + positions = categories.get(i).getPositionsString(); + + /* Footer */ + + footer = setCenter(this.footer); + + for (int o = 1; o < footerSpace; o++) { + footer = footer + "\n"; + } + footer = footer + "_"; + + thisBill = header + "\n" + getSeparator() + "\n" + info + "\n" + + getSeparator() + "\n" + + setCenter(categories.get(i).getCategoryName()) + "\n" + + getSeparator() + + positions + "\n" + getSeparator(); + + printString.add(thisBill); + + } + + } + + private void insertToCategory(int quantity, String name, String value, + String category) + { + boolean createNewCategorie = true; + for (int i = 0; i < categoryCount; i++) { + if (category.equals(categories.get(i).getCategoryName())) { + categories.get(i).addPosition(quantity, name, value, this); + createNewCategorie = false; + } + } + + if (createNewCategorie) { + // position has a new category + categories.add(new Category(category)); + categories.get(categoryCount).addPosition(quantity, name, value, this); + categoryCount++; + } - printString = header + "\n" + getSeparator() + "\n" + info + "\n" - + getSeparator() + "\n" + positionen + "\n" + getSeparator() + "\n" - + price + "\n" + getSeparator() + "\n" + footer; } }