15 Commits

Author SHA1 Message Date
ed648a2740 add clear all positions in order draft 2026-03-07 20:33:13 +01:00
6330d7fd51 fix missing xml config 2026-03-01 19:10:07 +01:00
c241964a8b Configure auto Print or manual Print 2026-03-01 18:52:19 +01:00
f3e0da2689 fix ArrayIndexOutOfBoundsException 2026-02-25 22:02:46 +01:00
4421075bec update version 2026-02-25 21:43:52 +01:00
71c79575c8 update dependencies 2026-02-25 21:41:14 +01:00
1866782111 update java.math.RoundingMode 2026-02-25 21:18:04 +01:00
a7e76e00d3 remove dead code 2026-02-25 21:13:21 +01:00
1cadfe5bfc code formatter 2026-02-21 18:32:20 +01:00
c40be1c203 fix first start 2026-02-21 18:22:25 +01:00
02026633ed update to new versions and build system 2026-02-17 19:04:16 +01:00
c4297a4be2 fixed spelling mistakes 2019-01-10 21:54:46 +01:00
fd52d3df6d added yt link for Kurzanleitung 2019-01-09 22:53:07 +01:00
c320ef615d added yt link and fixed some spelling errors 2019-01-09 18:39:47 +01:00
2a20ea7bdb spelling errors fixed 2019-01-06 17:44:25 +01:00
27 changed files with 2812 additions and 2796 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
target/
dependency-reduced-pom.xml

26
.vscode/eclipse-formatter.xml vendored Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="21">
<profile kind="CodeFormatterProfile" name="jFxKasse" version="21">
<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="tab"/>
<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
<setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
</profile>
</profiles>

7
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"recommendations": [
"vscjava.vscode-java-pack",
"vscjava.vscode-maven",
"redhat.java"
]
}

20
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,20 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Run jFxKasse",
"request": "launch",
"mainClass": "com.jFxKasse.application.JavaFX11Main",
"projectName": "jFxKasse",
"vmArgs": "--module-path ${env:PATH_TO_FX} --add-modules javafx.controls,javafx.fxml --add-opens javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED"
},
{
"type": "java",
"name": "Run jFxKasse (Maven)",
"request": "launch",
"mainClass": "com.jFxKasse.application.JavaFX11Main",
"projectName": "jFxKasse"
}
]
}

18
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,18 @@
{
"java.project.sourcePaths": [
"src/main/java"
],
"java.project.outputPath": "target/classes",
"java.project.referencedLibraries": [],
"java.configuration.updateBuildConfiguration": "automatic",
"java.compile.nullAnalysis.mode": "automatic",
"editor.formatOnSave": true,
"files.encoding": "utf8",
// Java formatter: point to workspace-local Eclipse formatter profile
"java.format.settings.url": ".vscode/eclipse-formatter.xml",
"java.format.settings.profile": "jFxKasse",
"[java]": {
"editor.defaultFormatter": "redhat.java"
}
}

51
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,51 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "mvn compile",
"type": "shell",
"command": "mvn compile",
"group": "build",
"problemMatcher": [
"$javac"
]
},
{
"label": "mvn package",
"type": "shell",
"command": "mvn package -DskipTests",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$javac"
]
},
{
"label": "mvn clean",
"type": "shell",
"command": "mvn clean",
"group": "build",
"problemMatcher": []
},
{
"label": "mvn javafx:run",
"type": "shell",
"command": "mvn javafx:run",
"group": "build",
"problemMatcher": [
"$javac"
]
},
{
"label": "mvn test",
"type": "shell",
"command": "mvn test",
"group": "test",
"problemMatcher": [
"$javac"
]
}
]
}

View File

@ -1,33 +1,60 @@
# jFxKasse # jFxKasse
easy payment system for small to middel sized events with a sales slip printer
Simples Kassensystem für kleine bis mittlere Veranstalltungen bit Bon-Drucker Simple POS (Point of Sale) system for small to medium-sized events with receipt printer support.
## Requirements
- Java JDK 21+
- Maven 3.9+
- Display >= 1366x768
## Video Tutorials (German | Deutsch)
[YouTube Video: jFxKasse - Kassensystem - Kurzanleitung](https://www.youtube.com/watch?v=DV9DDESw40I)
[YouTube Video: jFxKasse - Kassensystem - Installieren](https://www.youtube.com/watch?v=IY1bqRjwh0Q)
## Setup (VSCode on openSUSE Tumbleweed)
### 1. Install dependencies
```bash
sudo zypper install java-21-openjdk java-21-openjdk-devel maven
```
### 2. Install VSCode extensions
Open the project in VSCode. You will be prompted to install the recommended extensions:
- **Extension Pack for Java** (`vscjava.vscode-java-pack`)
- **Maven for Java** (`vscjava.vscode-maven`)
- **Language Support for Java** (`redhat.java`)
### 3. Build & Run
```bash
# Compile
mvn compile
# Run via Maven
mvn javafx:run
# Package as fat JAR
mvn package
java -jar target/jFxKasse-shaded.jar
```
Or use the preconfigured VSCode tasks (`Ctrl+Shift+B`) and launch configurations (`F5`).
## Screenshots ## Screenshots
### Main View | Hauptansicht | Main View | Jobs | Positions | Settings |
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/newjob) |-----------|------|-----------|----------|
| ![](screenshots/newjob) | ![](screenshots/jobs) | ![](screenshots/positions) | ![](screenshots/settings) |
### Jobs | Auftäge ## Hardware
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/jobs)
### Positions | Positionen Tested with: [Epson TM T20II](https://www.epson.de/products/sd/pos-printer/epson-tm-t20ii). Other receipt printers should work as well.
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/positions)
### Settings | Einstellungen ## License
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/settings)
GPL-3.0
## Requirements | Anforderungen
### Software
* Java JRE 11
* Display/Bildschirm > 1366px X 768px
* Windoofs, Mac, GNU/Linux (openSuse tested)
### Hardware
I used this prtiner: [Epson TM T20II](https://www.epson.de/products/sd/pos-printer/epson-tm-t20ii)
Other sales slip printer are possible.

51
pom.xml
View File

@ -1,42 +1,49 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com</groupId> <groupId>com</groupId>
<artifactId>jFxKasse</artifactId> <artifactId>jFxKasse</artifactId>
<version>0.3.2</version> <version>0.4.0</version>
<name>jFxKasse</name> <name>jFxKasse</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<maven.compiler.release>21</maven.compiler.release>
<javafx.version>23.0.1</javafx.version>
</properties>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit</artifactId> <artifactId>junit-jupiter</artifactId>
<version>4.12</version> <version>6.0.3</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.openjfx</groupId> <groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId> <artifactId>javafx-controls</artifactId>
<version>11</version> <version>${javafx.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.openjfx</groupId> <groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId> <artifactId>javafx-fxml</artifactId>
<version>11</version> <version>${javafx.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.jfoenix</groupId> <groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId> <artifactId>jfoenix</artifactId>
<version>9.0.8</version> <version>9.0.10</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.xerial</groupId> <groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId> <artifactId>sqlite-jdbc</artifactId>
<version>3.23.1</version> <version>3.51.2.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
@ -46,11 +53,11 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version> <version>3.15.0</version>
<configuration> <configuration>
<source>11</source> <source>21</source>
<target>11</target> <target>21</target>
<!--<release>11</release> --> <release>21</release>
<showWarnings>true</showWarnings> <showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation> <showDeprecation>true</showDeprecation>
</configuration> </configuration>
@ -59,7 +66,7 @@
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId> <artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version> <version>3.6.3</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>
@ -75,13 +82,12 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId> <artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version> <version>3.6.1</version>
<configuration> <configuration>
<finalName>jFxKasse</finalName> <finalName>jFxKasse</finalName>
<shadedArtifactAttached>true</shadedArtifactAttached> <shadedArtifactAttached>true</shadedArtifactAttached>
<transformers> <transformers>
<transformer <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.jFxKasse.application.JavaFX11Main</mainClass> <mainClass>com.jFxKasse.application.JavaFX11Main</mainClass>
</transformer> </transformer>
</transformers> </transformers>
@ -96,6 +102,15 @@
</executions> </executions>
</plugin> </plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>com.jFxKasse.application.JavaFX11Main</mainClass>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@ -1,12 +1,8 @@
package com.jFxKasse.application; package com.jFxKasse.application;
import com.jFxKasse.application.Main; public class JavaFX11Main {
public class JavaFX11Main public static void main(String[] args) {
{
public static void main(String[] args)
{
Main.main(args); Main.main(args);
} }
} }

View File

@ -1,8 +1,12 @@
package com.jFxKasse.application; package com.jFxKasse.application;
import javafx.application.Application; import com.jFxKasse.controller.MainWindowController;
import javafx.event.EventHandler; import com.jFxKasse.controller.PrinterController;
import com.jFxKasse.controller.XMLController;
import com.jFxKasse.controller.DBController;
import com.jFxKasse.controller.KeyController;
import javafx.application.Application;
import java.io.File; import java.io.File;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
@ -10,19 +14,11 @@ import javafx.animation.Timeline;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.util.Duration; import javafx.util.Duration;
import com.jFxKasse.controller.MainWindowController;
import com.jFxKasse.controller.PrinterController;
import com.jFxKasse.controller.XMLController;
import com.jFxKasse.controller.DBController;
import com.jFxKasse.controller.KeyController;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
public class Main extends Application public class Main extends Application {
{ // Path to config.xml and the database
// path to config.xml and the database
public static String filepath; public static String filepath;
private static String osName = System.getProperty("os.name"); private static String osName = System.getProperty("os.name");
@ -31,9 +27,10 @@ public class Main extends Application
private MainWindowController mwc; private MainWindowController mwc;
private XMLController xmlc = new XMLController(filepath); // Initialized in start() after filepath is set by main()
private XMLController xmlc;
private DBController dbc = new DBController(filepath); private DBController dbc;
private PrinterController pc = new PrinterController(); private PrinterController pc = new PrinterController();
@ -42,88 +39,115 @@ public class Main extends Application
private Stage primaryStage; private Stage primaryStage;
@Override @Override
public void start(Stage primaryStage) public void start(Stage primaryStage) {
{
this.primaryStage = primaryStage; this.primaryStage = primaryStage;
// filepath is set by main() before launch(); initialize controllers here
xmlc = new XMLController(filepath);
dbc = new DBController(filepath);
System.out.println("\nstarting jFxKasse\n"); System.out.println("\nstarting jFxKasse\n");
mainWindow(); mainWindow();
} }
private void mainWindow() private void mainWindow() {
{
try { try {
FXMLLoader loader = new FXMLLoader( FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/MainWindow.fxml"));
getClass().getResource("/fxml/MainWindow.fxml"));
AnchorPane pane = loader.load(); AnchorPane pane = loader.load();
primaryStage.setTitle("jFxKasse"); // Title of window primaryStage.setTitle("jFxKasse"); // Window title
mwc = loader.getController(); // set the mwc as the JavaFx mwc = loader.getController(); // Set the MainWindowController
// MainWindowController pc.searchPrinters(); // Search for available printers
pc.searchPrinters(); // search for available printers mwc.setMain(this, dbc, xmlc, pc); // Pass instances to the controller
mwc.setMain(this, dbc, xmlc, pc); // set the created instances to the
// mwc
firstStart(); // test if this is the first run firstStart(); // Check if this is the first run
Scene scene = new Scene(pane); Scene scene = new Scene(pane);
scene.getStylesheets().add( scene.getStylesheets().add(Main.class.getResource("/css/application.css").toExternalForm());
Main.class.getResource("/css/application.css").toExternalForm());
primaryStage.setScene(scene); primaryStage.setScene(scene);
primaryStage.show(); // shows the stage primaryStage.show(); // Show the stage
//attach the KeyController // Attach the KeyController
kc = new KeyController(scene, mwc); kc = new KeyController(scene, mwc);
Timeline timeline = new Timeline( Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(1), ev -> {
new KeyFrame(Duration.seconds(1), ev -> { mwc.updateTimeLabel(); // Update time label on UI
mwc.updateTimeLabel(); // update time label on UI
})); }));
timeline.setCycleCount(Animation.INDEFINITE); timeline.setCycleCount(Animation.INDEFINITE);
timeline.play(); timeline.play();
} catch (Exception e) { }
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static void main(String[] args) public static void main(String[] args) {
{
if (osName.contains("Windows")) { if (osName.contains("Windows")) {
System.out.println("FCK Windows"); System.out.println("FCK Windows");
filepath = userHome + "/Documents/jFxKasse/"; filepath = userHome + "/Documents/jFxKasse/";
} else { }
else {
filepath = userHome + "/jFxKasse/"; filepath = userHome + "/jFxKasse/";
} }
launch(args); launch(args);
} }
/** /**
* Checks if the config.xml is preset. * Checks if the config.xml is present and initializes accordingly.
*/ */
private void firstStart() throws Exception private void firstStart() throws Exception {
{
if (xmlc.loadSettings()) { if (xmlc.loadSettings()) {
// config.xml found, app starting normal // config.xml found, app starting normally
System.out.println("XML found!"); System.out.println("XML found!");
mwc.initUI(); // Starting the UI elements mwc.initUI(); // Initialize the UI elements
mwc.setDBLabel(); // Set database labels mwc.setDBLabel(); // Set database labels
dbc.setDbname(xmlc.getDatabaseName()); // handover database name dbc.setDbname(xmlc.getDatabaseName()); // Pass database name
dbc.connectDatabase(); // estabishing DB conection try {
mwc.fillTablePositionen(); // fill TreeTable 'Positionen' dbc.connectDatabase(); // Establish DB connection
}
catch (Exception e) {
e.printStackTrace();
showErrorDialog("Datenbankfehler", "Die Datenbank konnte nicht geöffnet werden.",
"Datei: " + xmlc.getDatabaseName() + ".db\n\n"
+ "Bitte prüfen Sie, ob die Datei vorhanden und nicht beschädigt ist.\n"
+ "Fehlermeldung: " + e.getMessage());
return;
}
mwc.fillTablePositionen(); // Fill TreeTable 'Positions'
mwc.fillCategory(); mwc.fillCategory();
mwc.fillPrinterSettings(); mwc.fillPrinterSettings();
mwc.fillTableJobs(); mwc.fillTableJobs();
mwc.loadGridButtons(); mwc.loadGridButtons();
mwc.getSelectedCat(); // Load DB entries in Chois Box mwc.getSelectedCat(); // Load DB entries in ChoiceBox
mwc.createNewJob(); mwc.createNewJob();
} else { }
// config.xml NOT found, first start of app else {
// config.xml NOT found — first start of app
System.out.println("no XML found!"); System.out.println("no XML found!");
xmlc.initXML(); // set default values xmlc.initXML(); // Set default values in memory
mwc.blockUI(true); // disable UI elements that need DB
mwc.blockUnlock();
File dir = new File(filepath); File dir = new File(filepath);
dir.mkdir(); // Create new Subfolder dir.mkdir(); // Create config directory
try {
xmlc.saveSettings(); // Persist defaults immediately so next start is normal
System.out.println("Default config.xml written.");
}
catch (Exception e) {
e.printStackTrace();
showErrorDialog("Konfigurationsfehler", "Die Konfigurationsdatei konnte nicht geschrieben werden.",
"Pfad: " + filepath + "config.xml\n\n" + "Bitte prüfen Sie die Schreibrechte.\n"
+ "Fehlermeldung: " + e.getMessage());
}
mwc.blockUI(true); // Disable UI elements that need a DB
mwc.blockUnlock(); // Show first-start hint, disable lock button
} }
} }
/** Shows a modal error alert dialog on the JavaFX thread. */
private void showErrorDialog(String title, String header, String content) {
javafx.scene.control.Alert alert = new javafx.scene.control.Alert(javafx.scene.control.Alert.AlertType.ERROR);
alert.setTitle(title);
alert.setHeaderText(header);
alert.setContentText(content);
alert.setResizable(true);
alert.showAndWait();
}
} }

View File

@ -16,25 +16,20 @@ import javafx.scene.control.Label;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.util.Pair; import javafx.util.Pair;
public class PrintJob public class PrintJob {
{
private TimeDate timedate = new TimeDate(); private TimeDate timedate = new TimeDate();
public void printJob(int jobID, XMLController xmlc, DBController dbc, public void printJob(int jobID, XMLController xmlc, DBController dbc, PrinterController pc) {
PrinterController pc)
{
if ((xmlc.getPrintername().equals("Drucker auswählen") if ((xmlc.getPrintername().equals("Drucker auswählen") || xmlc.getPrintername() == null)) {
|| xmlc.getPrintername() == null)) { // No printer selected
// no printer selected System.out.println("No printer configured!");
System.out.println("Kein Drucker eingestellt!!!");
// creates a dialog // creates a dialog
Dialog<Pair<String, String>> dialog = new Dialog<>(); Dialog<Pair<String, String>> dialog = new Dialog<>();
dialog.setTitle("Kein Drucker"); dialog.setTitle("Kein Drucker");
dialog.setHeaderText("Es ist kein Drucker einestellt.\n" dialog.setHeaderText("Es ist kein Drucker einestellt.\n" + "In den Einstellungen einen Drucker auswählen.");
+ "In den Einstellungen einen Drucker auswählen.");
dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK); dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK);
@ -43,30 +38,29 @@ public class PrintJob
grid.setVgap(10); grid.setVgap(10);
grid.setPadding(new Insets(20, 150, 10, 10)); grid.setPadding(new Insets(20, 150, 10, 10));
grid.add(new Label("Tipp:\n" grid.add(
+ "Es kann ein virtueller Drucker installiert werden: \n\n" new Label(
+ "www.cups-pdf.de"), 0, 0); "Tipp:\n" + "Es kann ein virtueller Drucker installiert werden: \n\n" + "www.cups-pdf.de"),
0, 0);
dialog.getDialogPane().setContent(grid); dialog.getDialogPane().setContent(grid);
dialog.setResizable(true); dialog.setResizable(true);
dialog.showAndWait(); dialog.showAndWait();
} else { }
// printer selected else {
// Printer selected
pc.selectPrinter(xmlc.getPrintername()); pc.selectPrinter(xmlc.getPrintername());
/* Single bill or splitted */ /* Single bill or split by category */
if (xmlc.getCategorySplitted()) { if (xmlc.getCategorySplitted()) {
// split the bills // Split the bills
PrintDataSplitted pdsplitted = new PrintDataSplitted( PrintDataSplitted pdsplitted = new PrintDataSplitted(xmlc.getLinebreak(), xmlc.getOffsetHeader(),
xmlc.getLinebreak(), xmlc.getOffsetHeader(), xmlc.getOffsetFooter(), timedate.getSystemTime() + " " + timedate.getSystemDate(),
xmlc.getOffsetFooter(),
timedate.getSystemTime() + " " + timedate.getSystemDate(),
xmlc.getHeader(), xmlc.getFooter()); xmlc.getHeader(), xmlc.getFooter());
pdsplitted.setData(Integer.toString(jobID), dbc.getTime_Job(jobID), pdsplitted.setData(Integer.toString(jobID), dbc.getTime_Job(jobID), dbc.getQuantity_Job(jobID),
dbc.getQuantity_Job(jobID), dbc.getName_Job(jobID), dbc.getName_Job(jobID), dbc.getValue_Job(jobID), dbc.getCategory_Job(jobID),
dbc.getValue_Job(jobID), dbc.getCategory_Job(jobID),
dbc.getJobValue_Job(jobID)); dbc.getJobValue_Job(jobID));
System.out.println("Printing job ..."); System.out.println("Printing job ...");
@ -77,16 +71,15 @@ public class PrintJob
pc.printString(printString.get(i)); pc.printString(printString.get(i));
} }
} else { }
// one single bills else {
PrintDataSimple pds = new PrintDataSimple(xmlc.getLinebreak(), // Single bill
xmlc.getOffsetHeader(), xmlc.getOffsetFooter(), PrintDataSimple pds = new PrintDataSimple(xmlc.getLinebreak(), xmlc.getOffsetHeader(),
timedate.getSystemTime() + " " + timedate.getSystemDate(), xmlc.getOffsetFooter(), timedate.getSystemTime() + " " + timedate.getSystemDate(),
xmlc.getHeader(), xmlc.getFooter()); xmlc.getHeader(), xmlc.getFooter());
pds.setData(Integer.toString(jobID), dbc.getTime_Job(jobID), pds.setData(Integer.toString(jobID), dbc.getTime_Job(jobID), dbc.getQuantity_Job(jobID),
dbc.getQuantity_Job(jobID), dbc.getName_Job(jobID), dbc.getName_Job(jobID), dbc.getValue_Job(jobID), dbc.getCategory_Job(jobID),
dbc.getValue_Job(jobID), dbc.getCategory_Job(jobID),
dbc.getJobValue_Job(jobID)); dbc.getJobValue_Job(jobID));
System.out.println("Printing job ..."); System.out.println("Printing job ...");
pc.printString(pds.getPrintString()); pc.printString(pds.getPrintString());

View File

@ -4,18 +4,15 @@ import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
public class TimeDate public class TimeDate {
{ public String getSystemTime() {
public String getSystemTime()
{
DateFormat dateFormat = new SimpleDateFormat("HH:mm"); DateFormat dateFormat = new SimpleDateFormat("HH:mm");
Date date = new Date(); Date date = new Date();
String time = dateFormat.format(date); String time = dateFormat.format(date);
return time; return time;
} }
public String getSystemDate() public String getSystemDate() {
{
DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
Date date = new Date(); Date date = new Date();
String dateStr = dateFormat.format(date); String dateStr = dateFormat.format(date);

View File

@ -11,83 +11,77 @@ import com.jFxKasse.datatypes.tableDataJob;
import com.jFxKasse.datatypes.tableDataPositionen; import com.jFxKasse.datatypes.tableDataPositionen;
import java.io.File; import java.io.File;
public class DBController public class DBController {
{
private Connection connection; private Connection connection;
private String DB_PATH; private String DB_PATH;
private String dbname; private String dbname;
public void main() public void main() {
{
try { try {
connection = DriverManager connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH + dbname + ".db");
.getConnection("jdbc:sqlite:" + DB_PATH + dbname + ".db"); }
} catch (SQLException e) { catch (SQLException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
public DBController(String path) public DBController(String path) {
{
this.DB_PATH = path; this.DB_PATH = path;
} }
public void setDbname(String dbname) public void setDbname(String dbname) {
{
this.dbname = dbname; this.dbname = dbname;
} }
public void connectDatabase() public void connectDatabase() { // Connect to database
{ // connect to database
System.out.println("Connecting... DB name: " + dbname); System.out.println("Connecting... DB name: " + dbname);
try { try {
if (connection != null) if (connection != null)
return; return;
connection = DriverManager connection = DriverManager.getConnection("jdbc:sqlite:" + DB_PATH + dbname + ".db");
.getConnection("jdbc:sqlite:" + DB_PATH + dbname + ".db");
if (!connection.isClosed()) if (!connection.isClosed())
System.out.println("DB connection established"); System.out.println("DB connection established");
} catch (SQLException e) { }
catch (SQLException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
Runtime.getRuntime().addShutdownHook(new Thread() { Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() public void run() {
{
try { try {
if (!connection.isClosed() && connection != null) { if (!connection.isClosed() && connection != null) {
connection.close(); connection.close();
if (connection.isClosed()) if (connection.isClosed())
System.out.println(); System.out.println();
} }
} catch (SQLException e) { }
catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
}); });
} }
public boolean existDB(String pPfad) public boolean existDB(String pPfad) { // Check if the DB exists
{ // does the DB exists?
File varTmpDir = new File(pPfad); File varTmpDir = new File(pPfad);
if (!varTmpDir.exists()) { if (!varTmpDir.exists()) {
return false; return false;
} else { }
else {
return true; return true;
} }
} }
public String getCategoryNameFromPositionen(int pID) public String getCategoryNameFromPositionen(int pID) {
{
int catInPos = 0; int catInPos = 0;
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT posid, cat FROM positionen " ResultSet rs = stmt.executeQuery("SELECT posid, cat FROM positionen " + "WHERE posid = " + pID + ";");
+ "WHERE posid = " + pID + ";");
catInPos = rs.getInt("cat"); catInPos = rs.getInt("cat");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
@ -97,10 +91,11 @@ public class DBController
} }
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT catid, catname FROM category " ResultSet rs = stmt
+ "WHERE catid = " + catInPos + ";"); .executeQuery("SELECT catid, catname FROM category " + "WHERE catid = " + catInPos + ";");
return rs.getString("catname"); return rs.getString("catname");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "keine Kategorie"; return "keine Kategorie";
@ -108,34 +103,31 @@ public class DBController
} }
// table Position section // // Table 'Positionen' section //
public void createTablePositionen() public void createTablePositionen() { // Create table 'positionen'
{ // create table position
System.out.println("Creating table Positionen"); System.out.println("Creating table Positionen");
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS positionen;"); stmt.executeUpdate("DROP TABLE IF EXISTS positionen;");
stmt.executeUpdate( stmt.executeUpdate("CREATE TABLE positionen (posid, name, value, cat, color);");
"CREATE TABLE positionen (posid, name, value, cat, color);"); }
} catch (SQLException e) { catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
// create 25 demo/default data entries // Create 25 demo/default data entries
for (int i = 0; i < 25; i++) { for (int i = 0; i < 25; i++) {
fillPositionen_Positionen(i + 1, "Noch frei", (float) 0.00, 6, fillPositionen_Positionen(i + 1, "Noch frei", (float) 0.00, 6, "#ad0000");
"#ad0000");
} }
} }
public void fillPositionen_Positionen(int pID, String pName, float pValue, public void fillPositionen_Positionen(int pID, String pName, float pValue, int pCat, String pColor) { // Create new
int pCat, String pColor) // entry in
{ // create new data in table // table
System.out.println("Creating new positionen entry"); System.out.println("Creating new positionen entry");
try { try {
PreparedStatement ps = connection.prepareStatement( PreparedStatement ps = connection.prepareStatement("INSERT INTO positionen VALUES (?, ?, ?, ?, ?);");
"INSERT INTO positionen VALUES (?, ?, ?, ?, ?);");
ps.setInt(1, pID); // primary ps.setInt(1, pID); // primary
ps.setString(2, pName); ps.setString(2, pName);
ps.setFloat(3, pValue); ps.setFloat(3, pValue);
@ -146,144 +138,134 @@ public class DBController
connection.setAutoCommit(false); connection.setAutoCommit(false);
ps.executeBatch(); // SQL execution ps.executeBatch(); // SQL execution
connection.setAutoCommit(true); connection.setAutoCommit(true);
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public String getName_Positionen(int pID) public String getName_Positionen(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT posid, name FROM positionen WHERE posid = " + pID + ";");
"SELECT posid, name FROM positionen WHERE posid = " + pID + ";");
return rs.getString("name"); return rs.getString("name");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "Error 404"; return "Error 404";
} }
} }
public String getValue_Positionen(int pID) public String getValue_Positionen(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT posid, value FROM positionen WHERE posid = " + pID + ";");
"SELECT posid, value FROM positionen WHERE posid = " + pID
+ ";");
return rs.getString("value"); return rs.getString("value");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "Error 404"; return "Error 404";
} }
} }
public int getCat_Positionen(int pID) public int getCat_Positionen(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT catid, cat FROM positionen WHERE catid = " + pID + ";");
"SELECT catid, cat FROM positionen WHERE catid = " + pID + ";");
System.out.println("getCarTet: " + rs.getInt("cat")); System.out.println("getCarTet: " + rs.getInt("cat"));
return rs.getInt("cat"); return rs.getInt("cat");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return 0; return 0;
} }
} }
public String getColor_Positionen(int pID) public String getColor_Positionen(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT posid, color FROM positionen WHERE posid = " + pID + ";");
"SELECT posid, color FROM positionen WHERE posid = " + pID
+ ";");
return rs.getString("color"); return rs.getString("color");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "Error 404"; return "Error 404";
} }
} }
public void setName_Positionen(int pID, String pName) public void setName_Positionen(int pID, String pName) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET name = '" + pName stmt.executeUpdate("UPDATE positionen SET name = '" + pName + "'WHERE posid =" + pID + ";");
+ "'WHERE posid =" + pID + ";"); }
} catch (SQLException e) { catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public void setValue_Positionen(int pID, String pValue) public void setValue_Positionen(int pID, String pValue) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET value = '" + pValue stmt.executeUpdate("UPDATE positionen SET value = '" + pValue + "'WHERE posid =" + pID + ";");
+ "'WHERE posid =" + pID + ";"); }
} catch (SQLException e) { catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public void setCat_Positionen(int pID, int pCat) public void setCat_Positionen(int pID, int pCat) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET cat = '" + pCat stmt.executeUpdate("UPDATE positionen SET cat = '" + pCat + "'WHERE posid =" + pID + ";");
+ "'WHERE posid =" + pID + ";"); }
} catch (SQLException e) { catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public void setColor_Positionen(int pID, String pColor) public void setColor_Positionen(int pID, String pColor) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET color = '" + pColor stmt.executeUpdate("UPDATE positionen SET color = '" + pColor + "'WHERE posid =" + pID + ";");
+ "'WHERE posid =" + pID + ";"); }
} catch (SQLException e) { catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public ArrayList<tableDataPositionen> ladeTabellePositionen() public ArrayList<tableDataPositionen> ladeTabellePositionen() {
{
ArrayList<tableDataPositionen> daten = new ArrayList<>(); ArrayList<tableDataPositionen> daten = new ArrayList<>();
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM positionen;"); ResultSet rs = stmt.executeQuery("SELECT * FROM positionen;");
while (rs.next()) { while (rs.next()) {
try { try {
daten.add(new tableDataPositionen(rs.getInt("posid"), daten.add(new tableDataPositionen(rs.getInt("posid"), rs.getString("name"), rs.getString("value"),
rs.getString("name"), rs.getString("value"),
rs.getString("cat"), rs.getString("color"))); rs.getString("cat"), rs.getString("color")));
} catch (Exception e) { }
catch (Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
return daten; return daten;
} }
public void ausgebenSysoPositionen() public void ausgebenSysoPositionen() {
{
System.out.println("Print positionen"); System.out.println("Print positionen");
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
@ -296,21 +278,22 @@ public class DBController
System.out.println(" "); System.out.println(" ");
} }
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
// table Category section // // Table 'Category' section //
public void createTableCategory() public void createTableCategory() { // Create table 'category'
{ // create table position System.out.println("Creating table Category");
System.out.println("Erstelle Tabelle Kategorie");
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS category;"); stmt.executeUpdate("DROP TABLE IF EXISTS category;");
stmt.executeUpdate("CREATE TABLE category (catid, catname);"); stmt.executeUpdate("CREATE TABLE category (catid, catname);");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
@ -323,76 +306,71 @@ public class DBController
} }
public void setName_Category(int pID, String pName) public void setName_Category(int pID, String pName) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE category SET catname = '" + pName stmt.executeUpdate("UPDATE category SET catname = '" + pName + "'WHERE catid =" + pID + ";");
+ "'WHERE catid =" + pID + ";"); }
} catch (SQLException e) { catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public void fillCategory_Category(int pID, String pName) public void fillCategory_Category(int pID, String pName) {
{
System.out.println("Erstelle neuen Kategorie Eintrag"); System.out.println("Creating new category entry");
try { try {
PreparedStatement ps = connection PreparedStatement ps = connection.prepareStatement("INSERT INTO category VALUES (?, ?);");
.prepareStatement("INSERT INTO category VALUES (?, ?);");
ps.setInt(1, pID); // primary ps.setInt(1, pID); // primary
ps.setString(2, pName); ps.setString(2, pName);
ps.addBatch(); ps.addBatch();
connection.setAutoCommit(false); connection.setAutoCommit(false);
ps.executeBatch(); // SQL execution ps.executeBatch(); // SQL execution
connection.setAutoCommit(true); connection.setAutoCommit(true);
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public String getName_Category(int pID) public String getName_Category(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT catid, catname FROM category WHERE catid = " + pID + ";");
"SELECT catid, catname FROM category WHERE catid = " + pID
+ ";");
return rs.getString("catname"); return rs.getString("catname");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "Error 404"; return "Error 404";
} }
} }
// table Jobs section // // Table 'Jobs' section //
public void erstelleTabelleJobs() public void erstelleTabelleJobs() { // Create table 'jobs'
{ // create table jobs
System.out.println("Creating table Jobs"); System.out.println("Creating table Jobs");
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS jobs;"); stmt.executeUpdate("DROP TABLE IF EXISTS jobs;");
stmt.executeUpdate( stmt.executeUpdate(
"CREATE TABLE jobs (jobid, time, positionen_quantity, positionen_name, positionen_value, positionen_cat, state, jobvalue);"); "CREATE TABLE jobs (jobid, time, positionen_quantity, positionen_name, positionen_value, positionen_cat, state, jobvalue);");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public int getLatestJobNumber_Job() public int getLatestJobNumber_Job() {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid from jobs ORDER BY jobid DESC LIMIT 1;");
"SELECT jobid from jobs ORDER BY jobid DESC LIMIT 1;");
return rs.getInt("jobid"); return rs.getInt("jobid");
} catch (SQLException e) { }
catch (SQLException e) {
// System.err.println("Couldn't handle DB-Query"); // System.err.println("Couldn't handle DB-Query");
// e.printStackTrace(); // e.printStackTrace();
@ -400,152 +378,138 @@ public class DBController
return 0; return 0;
} }
public String getTime_Job(int pID) public String getTime_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, time FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, time FROM jobs WHERE jobid = " + pID + ";");
return rs.getString("time"); return rs.getString("time");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getQuantity_Job(int pID) public String getQuantity_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, positionen_quantity FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, positionen_quantity FROM jobs WHERE jobid = "
+ pID + ";");
return rs.getString("positionen_quantity"); return rs.getString("positionen_quantity");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getName_Job(int pID) public String getName_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, positionen_name FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, positionen_name FROM jobs WHERE jobid = " + pID
+ ";");
return rs.getString("positionen_name"); return rs.getString("positionen_name");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getValue_Job(int pID) public String getValue_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, positionen_value FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, positionen_value FROM jobs WHERE jobid = " + pID
+ ";");
return rs.getString("positionen_value"); return rs.getString("positionen_value");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getCategory_Job(int pID) public String getCategory_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, positionen_cat FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, positionen_cat FROM jobs WHERE jobid = " + pID
+ ";");
return rs.getString("positionen_cat"); return rs.getString("positionen_cat");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getState_Job(int pID) public String getState_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, state FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, state FROM jobs WHERE jobid = " + pID + ";");
return rs.getString("state"); return rs.getString("state");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getJobValue_Job(int pID) public String getJobValue_Job(int pID) {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt.executeQuery("SELECT jobid, jobvalue FROM jobs WHERE jobid = " + pID + ";");
"SELECT jobid, jobvalue FROM jobs WHERE jobid = " + pID + ";");
return rs.getString("jobvalue"); return rs.getString("jobvalue");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "404"; return "404";
} }
} }
public String getAllJobValue_Job() public String getAllJobValue_Job() {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( ResultSet rs = stmt
"SELECT state, jobvalue, SUM(jobvalue) AS ALLVALUE FROM jobs WHERE state = " .executeQuery("SELECT state, jobvalue, SUM(jobvalue) AS ALLVALUE FROM jobs WHERE state = " + '"'
+ '"' + "verbucht" + '"' + ";");
return rs.getString("ALLVALUE");
} catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "0";
}
}
public String getJobCount()
{
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT count(*) AS JOBCOUNT FROM jobs WHERE state = " + '"'
+ "verbucht" + '"' + ";"); + "verbucht" + '"' + ";");
return rs.getString("JOBCOUNT"); return rs.getString("ALLVALUE");
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
return "0"; return "0";
} }
} }
public void setStatus_Jobs(int pID, String pStatus) public String getJobCount() {
{
try { try {
Statement stmt = connection.createStatement(); Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE jobs SET state = '" + pStatus ResultSet rs = stmt.executeQuery(
+ "'WHERE jobid =" + pID + ";"); "SELECT count(*) AS JOBCOUNT FROM jobs WHERE state = " + '"' + "verbucht" + '"' + ";");
} catch (SQLException e) { return rs.getString("JOBCOUNT");
}
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query");
e.printStackTrace();
return "0";
}
}
public void setStatus_Jobs(int pID, String pStatus) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE jobs SET state = '" + pStatus + "'WHERE jobid =" + pID + ";");
}
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
public ArrayList<tableDataJob> loadTableJobs_Job() public ArrayList<tableDataJob> loadTableJobs_Job() {
{
ArrayList<tableDataJob> tmp = new ArrayList<tableDataJob>(); ArrayList<tableDataJob> tmp = new ArrayList<tableDataJob>();
try { try {
@ -557,31 +521,29 @@ public class DBController
String tablePosition = rs.getString("positionen_name"); String tablePosition = rs.getString("positionen_name");
tableDataJob data = new tableDataJob(rs.getInt("jobid"), tableDataJob data = new tableDataJob(rs.getInt("jobid"), rs.getString("time"), tablePosition,
rs.getString("time"), tablePosition, rs.getString("state"), rs.getString("state"), rs.getString("jobvalue"));
rs.getString("jobvalue"));
tmp.add(data); tmp.add(data);
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
} }
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }
return tmp; return tmp;
} }
public void fillJobs_Jobs(int pID, String pTime, String pPositionen_quantity, public void fillJobs_Jobs(int pID, String pTime, String pPositionen_quantity, String pPositionen_name,
String pPositionen_name, String pPositionen_value, String pPositionen_value, String pPositionen_cat, String pState, String pJobvalue) {
String pPositionen_cat, String pState, String pJobvalue) System.out.println("Creating new job entry");
{
System.out.println("Create new Job Entry");
try { try {
PreparedStatement ps = connection.prepareStatement( PreparedStatement ps = connection.prepareStatement("INSERT INTO jobs VALUES (?, ?, ?, ?, ?, ?, ?, ?);");
"INSERT INTO jobs VALUES (?, ?, ?, ?, ?, ?, ?, ?);");
ps.setInt(1, pID); // primary ps.setInt(1, pID); // primary
ps.setString(2, pTime); ps.setString(2, pTime);
ps.setString(3, pPositionen_quantity); ps.setString(3, pPositionen_quantity);
@ -594,7 +556,8 @@ public class DBController
connection.setAutoCommit(false); connection.setAutoCommit(false);
ps.executeBatch(); // SQL execution ps.executeBatch(); // SQL execution
connection.setAutoCommit(true); connection.setAutoCommit(true);
} catch (SQLException e) { }
catch (SQLException e) {
System.err.println("Couldn't handle DB-Query"); System.err.println("Couldn't handle DB-Query");
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -5,18 +5,15 @@ import javafx.scene.Scene;
import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent; import javafx.scene.input.KeyEvent;
public class KeyController public class KeyController {
{
private MainWindowController mwc; private MainWindowController mwc;
public KeyController(Scene scene, MainWindowController mwc) public KeyController(Scene scene, MainWindowController mwc) {
{
this.mwc = mwc; this.mwc = mwc;
scene.setOnKeyPressed(new EventHandler<KeyEvent>() { scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override @Override
public void handle(KeyEvent keyEvent) public void handle(KeyEvent keyEvent) {
{
switch (mwc.getActiveTab()) { switch (mwc.getActiveTab()) {
case 0: case 0:
handleTabNewJob(keyEvent); handleTabNewJob(keyEvent);
@ -42,10 +39,8 @@ public class KeyController
} }
private void handleTabNewJob(KeyEvent key) private void handleTabNewJob(KeyEvent key) {
{ if ((key.getCode() == KeyCode.ENTER) && (!mwc.btnPrintBill.isDisabled())) {
if ((key.getCode() == KeyCode.ENTER)
&& (!mwc.btnPrintBill.isDisabled())) {
mwc.btnPrintBillAction(null); mwc.btnPrintBillAction(null);
} }
@ -53,8 +48,7 @@ public class KeyController
mwc.btnLockAction(null); mwc.btnLockAction(null);
} }
if ((key.getCode() == KeyCode.DELETE) if ((key.getCode() == KeyCode.DELETE) && (!mwc.btnDeleteSelectedPosition.isDisabled())) {
&& (!mwc.btnDeleteSelectedPosition.isDisabled())) {
mwc.btnDeleteSelectedPositionAction(null); mwc.btnDeleteSelectedPositionAction(null);
} }
@ -62,15 +56,12 @@ public class KeyController
} }
private void handleTabJobs(KeyEvent key) private void handleTabJobs(KeyEvent key) {
{ if ((key.getCode() == KeyCode.ENTER) && (!mwc.btnReprintJob.isDisabled())) {
if ((key.getCode() == KeyCode.ENTER)
&& (!mwc.btnReprintJob.isDisabled())) {
mwc.btnReprintJobAction(null); mwc.btnReprintJobAction(null);
} }
if ((key.getCode() == KeyCode.DELETE) if ((key.getCode() == KeyCode.DELETE) && (!mwc.btnCancelJob.isDisabled())) {
&& (!mwc.btnCancelJob.isDisabled())) {
mwc.btnCancelJobAction(null); mwc.btnCancelJobAction(null);
} }
@ -79,23 +70,18 @@ public class KeyController
} }
} }
private void handleTabPosEdit(KeyEvent key) private void handleTabPosEdit(KeyEvent key) {
{ if ((key.getCode() == KeyCode.ENTER) && (!mwc.btnSaveEntry.isDisabled())) {
if ((key.getCode() == KeyCode.ENTER)
&& (!mwc.btnSaveEntry.isDisabled())) {
mwc.btnSaveEntryAction(null); mwc.btnSaveEntryAction(null);
} }
if ((key.getCode() == KeyCode.DELETE) if ((key.getCode() == KeyCode.DELETE) && (!mwc.btnClearEntry.isDisabled())) {
&& (!mwc.btnClearEntry.isDisabled())) {
mwc.btnClearEntryAction(null); mwc.btnClearEntryAction(null);
} }
} }
private void handleTabSettings(KeyEvent key) private void handleTabSettings(KeyEvent key) {
{ if ((key.getCode() == KeyCode.ENTER) && (!mwc.btnSavePrinter.isDisabled())) {
if ((key.getCode() == KeyCode.ENTER)
&& (!mwc.btnSavePrinter.isDisabled())) {
mwc.btnSavePrinterAction(null); mwc.btnSavePrinterAction(null);
} }
@ -103,18 +89,17 @@ public class KeyController
mwc.btnSaveCatAction(null); mwc.btnSaveCatAction(null);
} }
if ((key.getCode() == KeyCode.ENTER) if ((key.getCode() == KeyCode.ENTER) && (!mwc.btnCreateNewDatabase.isDisabled())) {
&& (!mwc.btnCreateNewDatabase.isDisabled())) {
try { try {
mwc.btnCreateNewDatabaseAction(null); mwc.btnCreateNewDatabaseAction(null);
} catch (Exception e) { }
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
void handelGridButtons(KeyEvent key) void handelGridButtons(KeyEvent key) {
{
switch (key.getCode()) { switch (key.getCode()) {
case Q: case Q:

View File

@ -1,5 +1,5 @@
/** /**
* some parts are from http://www.mets-blog.com/java-pos-thermal-printer-example/ * Some parts are from http://www.mets-blog.com/java-pos-thermal-printer-example/
*/ */
package com.jFxKasse.controller; package com.jFxKasse.controller;
@ -21,26 +21,23 @@ import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet;
public class PrinterController implements Printable public class PrinterController implements Printable {
{ // All available printers on this system
// All available Printers on this system
private PrintService[] printService; private PrintService[] printService;
// selected printer // Selected printer
private PrintService selectedPrinter; private PrintService selectedPrinter;
private DocFlavor flavor; private DocFlavor flavor;
public PrinterController() public PrinterController() {
{
flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE; flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
} }
/** /**
* @return A String array with all available printers * @return A String array with all available printers
*/ */
public String[] getAvailablePrinters() public String[] getAvailablePrinters() {
{
int printerSize = PrinterJob.lookupPrintServices().length; int printerSize = PrinterJob.lookupPrintServices().length;
String printers[] = new String[printerSize]; String printers[] = new String[printerSize];
@ -51,10 +48,9 @@ public class PrinterController implements Printable
} }
/** /**
* searchs connected printers on the system * Searches for connected printers on the system
*/ */
public void searchPrinters() public void searchPrinters() {
{
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
this.printService = PrintServiceLookup.lookupPrintServices(flavor, pras); this.printService = PrintServiceLookup.lookupPrintServices(flavor, pras);
String printers[] = getAvailablePrinters(); String printers[] = getAvailablePrinters();
@ -67,11 +63,11 @@ public class PrinterController implements Printable
} }
/** /**
* Selects the printer via its name * Selects the printer by its name
*
* @param printerName * @param printerName
*/ */
public void selectPrinter(String printerName) public void selectPrinter(String printerName) {
{
String printers[] = getAvailablePrinters(); String printers[] = getAvailablePrinters();
for (int i = 0; i < printers.length; i++) { for (int i = 0; i < printers.length; i++) {
@ -84,11 +80,11 @@ public class PrinterController implements Printable
} }
/** /**
* Prints a string to the selected printer
* *
* @param input data as String * @param text data as String
*/ */
public void printString(String text) public void printString(String text) {
{
PrintService service = selectedPrinter; PrintService service = selectedPrinter;
DocPrintJob job = service.createPrintJob(); DocPrintJob job = service.createPrintJob();
@ -97,21 +93,21 @@ public class PrinterController implements Printable
bytes = text.getBytes(StandardCharsets.UTF_8); bytes = text.getBytes(StandardCharsets.UTF_8);
Doc doc = new SimpleDoc(bytes, flavor, null); Doc doc = new SimpleDoc(bytes, flavor, null);
job.print(doc, null); job.print(doc, null);
} catch (Exception e) { }
catch (Exception e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
} }
public int print(Graphics g, PageFormat pf, int page) throws PrinterException public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
{
if (page > 0) { /* We have only one page, and 'page' is zero-based */ if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE; return NO_SUCH_PAGE;
} }
/* /*
* User (0,0) is typically outside the imageable area, so we must * User (0,0) is typically outside the imageable area, so we must translate by
* translate by the X and Y values in the PageFormat to avoid clipping * the X and Y values in the PageFormat to avoid clipping
*/ */
Graphics2D g2d = (Graphics2D) g; Graphics2D g2d = (Graphics2D) g;
g2d.translate(pf.getImageableX(), pf.getImageableY()); g2d.translate(pf.getImageableX(), pf.getImageableY());
@ -119,21 +115,20 @@ public class PrinterController implements Printable
return PAGE_EXISTS; return PAGE_EXISTS;
} }
public void printBytes(byte[] bytes) public void printBytes(byte[] bytes) {
{
PrintService service = selectedPrinter; PrintService service = selectedPrinter;
DocPrintJob job = service.createPrintJob(); DocPrintJob job = service.createPrintJob();
try { try {
Doc doc = new SimpleDoc(bytes, flavor, null); Doc doc = new SimpleDoc(bytes, flavor, null);
job.print(doc, null); job.print(doc, null);
} catch (Exception e) { }
catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public void cutPaper() public void cutPaper() {
{
byte[] cutP = new byte[] { 0x1d, 'V', 1 }; byte[] cutP = new byte[] { 0x1d, 'V', 1 };
printBytes(cutP); printBytes(cutP);
} }

View File

@ -7,8 +7,7 @@ import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.Properties; import java.util.Properties;
public class XMLController public class XMLController {
{
private String databaseName = null; private String databaseName = null;
private String printername = null; private String printername = null;
@ -25,18 +24,18 @@ public class XMLController
private boolean categorySplitted; private boolean categorySplitted;
private boolean autoPrintBill;
private String filePath = null; private String filePath = null;
private Properties props = null; private Properties props = null;
public XMLController(String filePath) public XMLController(String filePath) {
{
this.filePath = filePath + "config.xml"; this.filePath = filePath + "config.xml";
props = new Properties(); props = new Properties();
} }
public void saveSettings() throws Exception public void saveSettings() throws Exception { // Save settings to config.xml
{ // Save settings to config.xml
System.out.println("Saving XML"); System.out.println("Saving XML");
@ -50,10 +49,20 @@ public class XMLController
if (this.categorySplitted) { if (this.categorySplitted) {
categorySplitted = "true"; categorySplitted = "true";
} else { }
else {
categorySplitted = "false"; categorySplitted = "false";
} }
String autoPrintBill = null;
if (this.autoPrintBill) {
autoPrintBill = "true";
}
else {
autoPrintBill = "false";
}
try { try {
props.setProperty("databasename", this.databaseName); props.setProperty("databasename", this.databaseName);
props.setProperty("printername", this.printername); props.setProperty("printername", this.printername);
@ -63,16 +72,17 @@ public class XMLController
props.setProperty("header", this.header); props.setProperty("header", this.header);
props.setProperty("footer", this.footer); props.setProperty("footer", this.footer);
props.setProperty("categorySplitted", categorySplitted); props.setProperty("categorySplitted", categorySplitted);
props.setProperty("autoPrintBill", autoPrintBill);
outputStream = new FileOutputStream(filePath); outputStream = new FileOutputStream(filePath);
props.storeToXML(outputStream, "jFxKasse settings"); props.storeToXML(outputStream, "jFxKasse settings");
outputStream.close(); outputStream.close();
} catch (IOException e) { }
catch (IOException e) {
} }
} }
public boolean loadSettings() throws Exception public boolean loadSettings() throws Exception { // Read settings from config.xml
{ // reads the settings from config.xml
InputStream inputStream; InputStream inputStream;
try { try {
inputStream = new FileInputStream(filePath); inputStream = new FileInputStream(filePath);
@ -82,21 +92,22 @@ public class XMLController
try { try {
this.linebreak = Integer.valueOf(props.getProperty("linebreak")); this.linebreak = Integer.valueOf(props.getProperty("linebreak"));
} catch (Exception e) { }
catch (Exception e) {
this.linebreak = 28; this.linebreak = 28;
} }
try { try {
this.offsetHeader = Integer this.offsetHeader = Integer.valueOf(props.getProperty("offsetHeader"));
.valueOf(props.getProperty("offsetHeader")); }
} catch (Exception e) { catch (Exception e) {
this.offsetHeader = 1; this.offsetHeader = 1;
} }
try { try {
this.offsetFooter = Integer this.offsetFooter = Integer.valueOf(props.getProperty("offsetFooter"));
.valueOf(props.getProperty("offsetFooter")); }
} catch (Exception e) { catch (Exception e) {
this.offsetFooter = 2; this.offsetFooter = 2;
} }
@ -106,23 +117,37 @@ public class XMLController
try { try {
if (props.getProperty("categorySplitted").equals("true")) { if (props.getProperty("categorySplitted").equals("true")) {
this.categorySplitted = true; this.categorySplitted = true;
} else { }
else {
this.categorySplitted = false; this.categorySplitted = false;
} }
} catch (Exception e) { }
catch (Exception e) {
this.categorySplitted = false; this.categorySplitted = false;
} }
try {
if (props.getProperty("autoPrintBill").equals("true")) {
this.autoPrintBill = true;
}
else {
this.autoPrintBill = false;
}
}
catch (Exception e) {
this.autoPrintBill = false;
}
inputStream.close(); inputStream.close();
return true; return true;
} catch (IOException e) { }
catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
return false; return false;
} }
} }
public void initXML() public void initXML() {
{
this.printername = "Drucker auswählen"; this.printername = "Drucker auswählen";
this.offsetHeader = 1; this.offsetHeader = 1;
@ -132,88 +157,82 @@ public class XMLController
this.categorySplitted = false; this.categorySplitted = false;
this.autoPrintBill = false;
this.header = "XYZ GmbH"; this.header = "XYZ GmbH";
this.footer = "Vielen Dank für den Einkauf"; this.footer = "Vielen Dank für den Einkauf";
} }
public String getDatabaseName() public String getDatabaseName() {
{
return databaseName; return databaseName;
} }
public void setDatabaseName(String databaseName) public void setDatabaseName(String databaseName) {
{
this.databaseName = databaseName; this.databaseName = databaseName;
} }
public String getPrintername() public String getPrintername() {
{
return printername; return printername;
} }
public void setPrintername(String printername) public void setPrintername(String printername) {
{
this.printername = printername; this.printername = printername;
} }
public int getLinebreak() public int getLinebreak() {
{
return linebreak; return linebreak;
} }
public void setLinebreak(int linebreak) public void setLinebreak(int linebreak) {
{
this.linebreak = linebreak; this.linebreak = linebreak;
} }
public int getOffsetHeader() public int getOffsetHeader() {
{
return offsetHeader; return offsetHeader;
} }
public void setOffsetHeader(int offsetHeader) public void setOffsetHeader(int offsetHeader) {
{
this.offsetHeader = offsetHeader; this.offsetHeader = offsetHeader;
} }
public int getOffsetFooter() public int getOffsetFooter() {
{
return offsetFooter; return offsetFooter;
} }
public void setOffsetFooter(int offsetFooter) public void setOffsetFooter(int offsetFooter) {
{
this.offsetFooter = offsetFooter; this.offsetFooter = offsetFooter;
} }
public String getHeader() public String getHeader() {
{
return header; return header;
} }
public void setHeader(String header) public void setHeader(String header) {
{
this.header = header; this.header = header;
} }
public String getFooter() public String getFooter() {
{
return footer; return footer;
} }
public void setFooter(String footer) public void setFooter(String footer) {
{
this.footer = footer; this.footer = footer;
} }
public boolean getCategorySplitted() public boolean getCategorySplitted() {
{
return categorySplitted; return categorySplitted;
} }
public void setCategorySplitted(boolean categorySplitted) public void setCategorySplitted(boolean categorySplitted) {
{
this.categorySplitted = categorySplitted; this.categorySplitted = categorySplitted;
} }
public boolean getAutoPrintBill() {
return autoPrintBill;
}
public void setAutoPrintBill(boolean autoPrintBill) {
this.autoPrintBill = autoPrintBill;
}
} }

View File

@ -1,32 +1,25 @@
package com.jFxKasse.datatypes; package com.jFxKasse.datatypes;
public class Category public class Category {
{
private String categoryName; private String categoryName;
private String positionsString = "\n"; private String positionsString = "\n";
public Category(String categoryName) public Category(String categoryName) {
{
this.categoryName = categoryName; this.categoryName = categoryName;
} }
public String getCategoryName() public String getCategoryName() {
{
return categoryName; return categoryName;
} }
public void addPosition(int quantity, String name, String value, public void addPosition(int quantity, String name, String value, PrintData pd) {
PrintData pd)
{
for (int i = 0; i < quantity; i++) { for (int i = 0; i < quantity; i++) {
positionsString = positionsString positionsString = positionsString + pd.setRight(pd.breakLines(name), value + "") + "\n";
+ pd.setRight(pd.breakLines(name), value + "") + "\n";
} }
} }
public String getPositionsString() public String getPositionsString() {
{
return positionsString; return positionsString;
} }
} }

View File

@ -1,10 +1,10 @@
package com.jFxKasse.datatypes; package com.jFxKasse.datatypes;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
public class Job public class Job {
{
private int jobnumber; private int jobnumber;
private float jobvalue; private float jobvalue;
@ -19,8 +19,7 @@ public class Job
private ArrayList<String> positionenCat; private ArrayList<String> positionenCat;
public Job(int pJobnumber) public Job(int pJobnumber) {
{
this.jobnumber = pJobnumber; this.jobnumber = pJobnumber;
positionenQuantity = new ArrayList<Integer>(); positionenQuantity = new ArrayList<Integer>();
positionenName = new ArrayList<String>(); positionenName = new ArrayList<String>();
@ -29,32 +28,26 @@ public class Job
} }
public void setJobtime(String jobtime) public void setJobtime(String jobtime) {
{
this.jobtime = jobtime; this.jobtime = jobtime;
} }
public int getJobnumber() public int getJobnumber() {
{
return this.jobnumber; return this.jobnumber;
} }
public String getJobtime() public String getJobtime() {
{
return this.jobtime; return this.jobtime;
} }
public float getJobValue() public float getJobValue() {
{
calcJobValue(); calcJobValue();
return this.jobvalue; return this.jobvalue;
} }
public void addPosition(String pPositionenName, float pPositionenValue, public void addPosition(String pPositionenName, float pPositionenValue, String pPositionenCat) {
String pPositionenCat)
{
for (int i = 0; i < positionenName.size(); i++) { for (int i = 0; i < positionenName.size(); i++) {
if (positionenName.get(i).equals(pPositionenName)) { if (positionenName.get(i).equals(pPositionenName)) {
// Item is already in list, increase quantity // Item is already in list, increase quantity
@ -71,51 +64,44 @@ public class Job
calcJobValue(); calcJobValue();
} }
public void printJobOnConsole() public void printJobOnConsole() {
{
System.out.println("---------------------------------------------"); System.out.println("---------------------------------------------");
System.out.println("JobNummer: " + jobnumber); System.out.println("JobNummer: " + jobnumber);
System.out.println("---------------------------------------------"); System.out.println("---------------------------------------------");
for (int i = 0; i < positionenName.size(); i++) { for (int i = 0; i < positionenName.size(); i++) {
System.out.println( System.out.println(positionenQuantity.get(i) + " " + positionenName.get(i) + " " + positionenValue.get(i)
positionenQuantity.get(i) + " " + positionenName.get(i) + " " + " " + positionenCat.get(i));
+ positionenValue.get(i) + " " + positionenCat.get(i));
} }
System.out.println("---------------------------------------------"); System.out.println("---------------------------------------------");
} }
public ArrayList<tableDataCurrentOrder> getCurrentJobPositionen() public ArrayList<tableDataCurrentOrder> getCurrentJobPositionen() {
{
ArrayList<tableDataCurrentOrder> jobitems = new ArrayList<tableDataCurrentOrder>(); ArrayList<tableDataCurrentOrder> jobitems = new ArrayList<tableDataCurrentOrder>();
for (int i = 0; i < positionenName.size(); i++) { for (int i = 0; i < positionenName.size(); i++) {
tableDataCurrentOrder tmp = new tableDataCurrentOrder( tableDataCurrentOrder tmp = new tableDataCurrentOrder(positionenName.get(i), positionenQuantity.get(i));
positionenName.get(i), positionenQuantity.get(i));
jobitems.add(tmp); jobitems.add(tmp);
} }
return jobitems; return jobitems;
} }
private void calcJobValue() private void calcJobValue() {
{
jobvalue = 0; jobvalue = 0;
for (int i = 0; i < positionenValue.size(); i++) { for (int i = 0; i < positionenValue.size(); i++) {
jobvalue = jobvalue jobvalue = jobvalue + (positionenQuantity.get(i) * positionenValue.get(i));
+ (positionenQuantity.get(i) * positionenValue.get(i));
} }
//Round to two decimals // Round to two decimal places
jobvalue = BigDecimal.valueOf(jobvalue).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue(); jobvalue = BigDecimal.valueOf(jobvalue).setScale(2, RoundingMode.HALF_UP).floatValue();
} }
public String createPosQuantityDBString() public String createPosQuantityDBString() {
{
String tmp = String.valueOf(positionenQuantity.get(0)); String tmp = String.valueOf(positionenQuantity.get(0));
for (int i = 1; i < positionenName.size(); i++) { for (int i = 1; i < positionenName.size(); i++) {
@ -124,8 +110,7 @@ public class Job
return tmp; return tmp;
} }
public String createPosNameDBString() public String createPosNameDBString() {
{
String tmp = positionenName.get(0); String tmp = positionenName.get(0);
for (int i = 1; i < positionenName.size(); i++) { for (int i = 1; i < positionenName.size(); i++) {
@ -134,8 +119,7 @@ public class Job
return tmp; return tmp;
} }
public String createPosValueDBString() public String createPosValueDBString() {
{
String tmp = String.valueOf(positionenValue.get(0)); String tmp = String.valueOf(positionenValue.get(0));
for (int i = 1; i < positionenName.size(); i++) { for (int i = 1; i < positionenName.size(); i++) {
@ -144,8 +128,7 @@ public class Job
return tmp; return tmp;
} }
public String createPosCatDBString() public String createPosCatDBString() {
{
String tmp = positionenCat.get(0); String tmp = positionenCat.get(0);
for (int i = 1; i < positionenName.size(); i++) { for (int i = 1; i < positionenName.size(); i++) {
@ -154,8 +137,7 @@ public class Job
return tmp; return tmp;
} }
public void deletePosName(String pPosName) public void deletePosName(String pPosName) {
{
for (int i = 0; i < positionenName.size(); i++) { for (int i = 0; i < positionenName.size(); i++) {
@ -163,7 +145,8 @@ public class Job
if (positionenQuantity.get(i) > 1) { if (positionenQuantity.get(i) > 1) {
positionenQuantity.set(i, positionenQuantity.get(i) - 1); positionenQuantity.set(i, positionenQuantity.get(i) - 1);
} else { }
else {
positionenQuantity.remove(i); positionenQuantity.remove(i);
positionenName.remove(i); positionenName.remove(i);
@ -178,8 +161,15 @@ public class Job
} }
public boolean existsPosName(String pPosName) public void clearAllPositions() {
{ positionenQuantity.clear();
positionenName.clear();
positionenValue.clear();
positionenCat.clear();
jobvalue = 0;
}
public boolean existsPosName(String pPosName) {
for (int i = 0; i < positionenName.size(); i++) { for (int i = 0; i < positionenName.size(); i++) {
if (positionenName.get(i).equals(pPosName)) { if (positionenName.get(i).equals(pPosName)) {
return true; return true;

View File

@ -1,7 +1,6 @@
package com.jFxKasse.datatypes; package com.jFxKasse.datatypes;
public abstract class PrintData public abstract class PrintData {
{
protected int headerSpace; protected int headerSpace;
@ -30,7 +29,8 @@ public abstract class PrintData
protected String jobValue; protected String jobValue;
/** /**
* Constructor with all data that is not in the DB * Constructor with all data that is not stored in the DB
*
* @param lineBreak * @param lineBreak
* @param headerSpace * @param headerSpace
* @param footerSpace * @param footerSpace
@ -38,9 +38,8 @@ public abstract class PrintData
* @param header * @param header
* @param footer * @param footer
*/ */
public PrintData(int lineBreak, int headerSpace, int footerSpace, public PrintData(int lineBreak, int headerSpace, int footerSpace, String timeAndDatePrint, String header,
String timeAndDatePrint, String header, String footer) String footer) {
{
this.lineBreak = lineBreak; this.lineBreak = lineBreak;
this.headerSpace = headerSpace; this.headerSpace = headerSpace;
this.footerSpace = footerSpace; this.footerSpace = footerSpace;
@ -50,7 +49,8 @@ public abstract class PrintData
} }
/** /**
* set all Data that is in the DB * Set all data that is stored in the DB
*
* @param jobID * @param jobID
* @param timeAndDateOrder * @param timeAndDateOrder
* @param positionenQuantity * @param positionenQuantity
@ -59,10 +59,8 @@ public abstract class PrintData
* @param positionenCategory * @param positionenCategory
* @param jobValue * @param jobValue
*/ */
public void setData(String jobID, String timeAndDateOrder, public void setData(String jobID, String timeAndDateOrder, String positionsQuantity, String positionsName,
String positionsQuantity, String positionsName, String positionsValue, String positionsCategory, String jobValue) {
String positionsValue, String positionsCategory, String jobValue)
{
this.jobID = jobID; this.jobID = jobID;
this.timeAndDateOrder = timeAndDateOrder; this.timeAndDateOrder = timeAndDateOrder;
this.positionsQuantity = positionsQuantity; this.positionsQuantity = positionsQuantity;
@ -73,25 +71,26 @@ public abstract class PrintData
} }
/** /**
* Breaks a string with newlines after the max line length
* *
* @param data String * @param data String
* @return same String splitted with \n after the max. line lenght * @return the same String split with \n after max line length
*/ */
protected String breakLines(String data) protected String breakLines(String data) {
{
boolean next = false; boolean next = false;
int count = lineBreak; int count = lineBreak;
if (data.length() > lineBreak) { if (data.length() > lineBreak) {
// Needs to be splitted // Needs to be split
next = true; next = true;
} else { }
// No need to be splitted else {
// No need to split
return data; return data;
} }
// first part // First part
String tmp = data.substring(0, lineBreak); String tmp = data.substring(0, lineBreak);
while (next) { while (next) {
@ -99,21 +98,22 @@ public abstract class PrintData
try { try {
tmp = tmp + "\n" + data.substring(count, lineBreak + count); tmp = tmp + "\n" + data.substring(count, lineBreak + count);
count = count + lineBreak; count = count + lineBreak;
} catch (Exception e) { }
// data string not long enough catch (Exception e) {
// Data string not long enough
next = false; next = false;
} }
} }
// add the last part // Add the last part
return tmp + "\n" + data.substring(count); return tmp + "\n" + data.substring(count);
} }
/** /**
* prints a line of '--------' * Prints a line of dashes '--------'
* @return *
* @return separator line
*/ */
protected String getSeparator() protected String getSeparator() {
{
String tmp = "-"; String tmp = "-";
for (int i = 1; i < lineBreak; i++) { for (int i = 1; i < lineBreak; i++) {
@ -123,12 +123,12 @@ public abstract class PrintData
} }
/** /**
* sets a String into the center * Centers a string within the line width
*
* @param data * @param data
* @return the centered String * @return the centered string
*/ */
protected String setCenter(String data) protected String setCenter(String data) {
{
int dataLenght = data.length(); int dataLenght = data.length();
int prefix = ((lineBreak - dataLenght) / 2); int prefix = ((lineBreak - dataLenght) / 2);
String tmp = " "; String tmp = " ";
@ -142,13 +142,13 @@ public abstract class PrintData
} }
/** /**
* sets a String right-justified after an prefix * Right-justifies a string after a prefix
*
* @param prefix * @param prefix
* @param data * @param data
* @return the right-justified String * @return the right-justified string
*/ */
protected String setRight(String prefix, String data) protected String setRight(String prefix, String data) {
{
int prefixLenght = prefix.length(); int prefixLenght = prefix.length();
@ -173,7 +173,7 @@ public abstract class PrintData
} }
/** /**
* How the print String or Strings are made * Defines how the print string(s) are generated
*/ */
abstract protected void generatePrintString(); abstract protected void generatePrintString();

View File

@ -1,12 +1,12 @@
package com.jFxKasse.datatypes; package com.jFxKasse.datatypes;
public class PrintDataSimple extends PrintData public class PrintDataSimple extends PrintData {
{
private String printString; private String printString;
/** /**
* Constructor with all data that is not in the DB * Constructor with all data that is not stored in the DB
*
* @param lineBreak * @param lineBreak
* @param headerSpace * @param headerSpace
* @param footerSpace * @param footerSpace
@ -14,26 +14,23 @@ public class PrintDataSimple extends PrintData
* @param header * @param header
* @param footer * @param footer
*/ */
public PrintDataSimple(int lineBreak, int headerSpace, int footerSpace, public PrintDataSimple(int lineBreak, int headerSpace, int footerSpace, String timeAndDatePrint, String header,
String timeAndDatePrint, String header, String footer) String footer) {
{ super(lineBreak, headerSpace, footerSpace, timeAndDatePrint, header, footer);
super(lineBreak, headerSpace, footerSpace, timeAndDatePrint, header,
footer);
} }
/** /**
* Generates the String * Generates the print string
* @return the final Print String *
* @return the final print string
*/ */
public String getPrintString() public String getPrintString() {
{
generatePrintString(); generatePrintString();
return this.printString; return this.printString;
} }
@Override @Override
protected void generatePrintString() protected void generatePrintString() {
{
/* Header */ /* Header */
String header = " "; String header = " ";
for (int i = 1; i < headerSpace; i++) { for (int i = 1; i < headerSpace; i++) {
@ -45,16 +42,14 @@ public class PrintDataSimple extends PrintData
/* Info */ /* Info */
String info = setRight("Bestellung: ", timeAndDateOrder) + "\n" String info = setRight("Bestellung: ", timeAndDateOrder) + "\n" + setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Bestellnummer: ", jobID); + setRight("Bestellnummer: ", jobID);
/* Positionen */ /* Positionen */
String positionen = "\n"; String positionen = "\n";
int posCount = positionsQuantity.length() int posCount = positionsQuantity.length() - positionsQuantity.replace(";", "").length() + 1;
- positionsQuantity.replace(";", "").length() + 1;
String[] positionQuantity = positionsQuantity.split(";"); String[] positionQuantity = positionsQuantity.split(";");
@ -65,8 +60,7 @@ public class PrintDataSimple extends PrintData
for (int i = 0; i < posCount; i++) { // All different posNames for (int i = 0; i < posCount; i++) { // All different posNames
int quantity = Integer.parseInt(positionQuantity[i]); int quantity = Integer.parseInt(positionQuantity[i]);
for (int j = 0; j < quantity; j++) { // quantities for (int j = 0; j < quantity; j++) { // quantities
positionen = positionen + setRight(breakLines(positionName[i]), positionen = positionen + setRight(breakLines(positionName[i]), positionValue[i] + "") + "\n";
positionValue[i] + "") + "\n";
} }
} }
@ -85,9 +79,8 @@ public class PrintDataSimple extends PrintData
/* Build final Print String */ /* Build final Print String */
printString = header + "\n" + getSeparator() + "\n" + info + "\n" printString = header + "\n" + getSeparator() + "\n" + info + "\n" + getSeparator() + "\n" + positionen + "\n"
+ getSeparator() + "\n" + positionen + "\n" + getSeparator() + "\n" + getSeparator() + "\n" + price + "\n" + getSeparator() + "\n" + footer;
+ price + "\n" + getSeparator() + "\n" + footer;
} }
} }

View File

@ -2,8 +2,7 @@ package com.jFxKasse.datatypes;
import java.util.ArrayList; import java.util.ArrayList;
public class PrintDataSplitted extends PrintData public class PrintDataSplitted extends PrintData {
{
private ArrayList<String> printString = new ArrayList<String>(); private ArrayList<String> printString = new ArrayList<String>();
private ArrayList<Category> categories = new ArrayList<Category>(); private ArrayList<Category> categories = new ArrayList<Category>();
@ -11,7 +10,8 @@ public class PrintDataSplitted extends PrintData
private int categoryCount = 0; private int categoryCount = 0;
/** /**
* Constructor with all data that is not in the DB * Constructor with all data that is not stored in the DB
*
* @param lineBreak * @param lineBreak
* @param headerSpace * @param headerSpace
* @param footerSpace * @param footerSpace
@ -19,26 +19,23 @@ public class PrintDataSplitted extends PrintData
* @param header * @param header
* @param footer * @param footer
*/ */
public PrintDataSplitted(int lineBreak, int headerSpace, int footerSpace, public PrintDataSplitted(int lineBreak, int headerSpace, int footerSpace, String timeAndDatePrint, String header,
String timeAndDatePrint, String header, String footer) String footer) {
{ super(lineBreak, headerSpace, footerSpace, timeAndDatePrint, header, footer);
super(lineBreak, headerSpace, footerSpace, timeAndDatePrint, header,
footer);
} }
/** /**
* Generates the String * Generates the print strings
* @return the final Array with the Print Strings *
* @return the final array of print strings
*/ */
public ArrayList<String> getPrintStrings() public ArrayList<String> getPrintStrings() {
{
generatePrintString(); generatePrintString();
return printString; return printString;
} }
@Override @Override
protected void generatePrintString() protected void generatePrintString() {
{
String firstBill; String firstBill;
@ -53,11 +50,10 @@ public class PrintDataSplitted extends PrintData
/* Info */ /* Info */
String info = setRight("Bestellung: ", timeAndDateOrder) + "\n" String info = setRight("Bestellung: ", timeAndDateOrder) + "\n" + setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Bestellnummer: ", jobID); + setRight("Bestellnummer: ", jobID);
/* Splitted Bills */ /* Splitted Bills by Category */
/* Price */ /* Price */
@ -74,21 +70,19 @@ public class PrintDataSplitted extends PrintData
/* Build first Print String */ /* Build first Print String */
firstBill = header + "\n" + getSeparator() + "\n" + info + "\n" firstBill = header + "\n" + getSeparator() + "\n" + info + "\n" + getSeparator() + "\n"
+ getSeparator() + "\n" + setCenter("Bon wurde aufgeteilt") + "\n" + setCenter("Bon wurde aufgeteilt") + "\n" + getSeparator() + "\n" + price + "\n" + getSeparator()
+ getSeparator() + "\n" + price + "\n" + getSeparator() + "\n" + "\n" + footer;
+ footer;
printString.add(firstBill); printString.add(firstBill);
/* first bill ends here */ /* First bill ends here */
/* Categories in extra bills */ /* Category-specific extra bills */
String positions = null; String positions = null;
int posCount = positionsQuantity.length() int posCount = positionsQuantity.length() - positionsQuantity.replace(";", "").length() + 1;
- positionsQuantity.replace(";", "").length() + 1;
String[] positionQuantity = positionsQuantity.split(";"); String[] positionQuantity = positionsQuantity.split(";");
String[] positionName = positionsName.split(";"); String[] positionName = positionsName.split(";");
@ -97,11 +91,10 @@ public class PrintDataSplitted extends PrintData
for (int i = 0; i < posCount; i++) { // All different posNames for (int i = 0; i < posCount; i++) { // All different posNames
int quantity = Integer.parseInt(positionQuantity[i]); int quantity = Integer.parseInt(positionQuantity[i]);
insertToCategory(quantity, positionName[i], positionValue[i], insertToCategory(quantity, positionName[i], positionValue[i], positionCategory[i]);
positionCategory[i]);
} }
// loops through all categories // Loops through all categories
for (int i = 0; i < categories.size(); i++) { for (int i = 0; i < categories.size(); i++) {
String thisBill; String thisBill;
@ -117,8 +110,7 @@ public class PrintDataSplitted extends PrintData
/* Info */ /* Info */
info = setRight("Bestellung: ", timeAndDateOrder) + "\n" info = setRight("Bestellung: ", timeAndDateOrder) + "\n" + setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Bestellnummer: ", jobID); + setRight("Bestellnummer: ", jobID);
/* Positions */ /* Positions */
@ -134,11 +126,9 @@ public class PrintDataSplitted extends PrintData
} }
footer = footer + "_"; footer = footer + "_";
thisBill = header + "\n" + getSeparator() + "\n" + info + "\n" thisBill = header + "\n" + getSeparator() + "\n" + info + "\n" + getSeparator() + "\n"
+ getSeparator() + "\n" + setCenter(categories.get(i).getCategoryName()) + "\n" + getSeparator() + positions + "\n"
+ setCenter(categories.get(i).getCategoryName()) + "\n" + getSeparator() + "\n" + footer;
+ getSeparator() + positions + "\n" + getSeparator() + "\n"
+ footer;
printString.add(thisBill); printString.add(thisBill);
@ -146,9 +136,7 @@ public class PrintDataSplitted extends PrintData
} }
private void insertToCategory(int quantity, String name, String value, private void insertToCategory(int quantity, String name, String value, String category) {
String category)
{
boolean createNewCategorie = true; boolean createNewCategorie = true;
for (int i = 0; i < categoryCount; i++) { for (int i = 0; i < categoryCount; i++) {
if (category.equals(categories.get(i).getCategoryName())) { if (category.equals(categories.get(i).getCategoryName())) {
@ -158,7 +146,7 @@ public class PrintDataSplitted extends PrintData
} }
if (createNewCategorie) { if (createNewCategorie) {
// position has a new category // Position has a new category
categories.add(new Category(category)); categories.add(new Category(category));
categories.get(categoryCount).addPosition(quantity, name, value, this); categories.get(categoryCount).addPosition(quantity, name, value, this);
categoryCount++; categoryCount++;

View File

@ -5,46 +5,38 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
public class tableDataCurrentOrder public class tableDataCurrentOrder {
{
private final StringProperty position = new SimpleStringProperty(); private final StringProperty position = new SimpleStringProperty();
private final IntegerProperty quantity = new SimpleIntegerProperty(); private final IntegerProperty quantity = new SimpleIntegerProperty();
public tableDataCurrentOrder(final String pPosition, final Integer pQuantity) public tableDataCurrentOrder(final String pPosition, final Integer pQuantity) {
{
this.position.set(pPosition); this.position.set(pPosition);
this.quantity.set(pQuantity); this.quantity.set(pQuantity);
} }
public StringProperty positionProperty() public StringProperty positionProperty() {
{
return position; return position;
} }
public IntegerProperty quantityProperty() public IntegerProperty quantityProperty() {
{
return quantity; return quantity;
} }
public String getPosition() public String getPosition() {
{
return positionProperty().get(); return positionProperty().get();
} }
public Integer getQuantity() public Integer getQuantity() {
{
return quantityProperty().get(); return quantityProperty().get();
} }
public final void setPosition(String pPosition) public final void setPosition(String pPosition) {
{
positionProperty().set(pPosition); positionProperty().set(pPosition);
} }
public final void setQuantity(int pQuantity) public final void setQuantity(int pQuantity) {
{
quantityProperty().set(pQuantity); quantityProperty().set(pQuantity);
} }
} }

View File

@ -5,8 +5,7 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
public class tableDataJob public class tableDataJob {
{
private final IntegerProperty number = new SimpleIntegerProperty(); private final IntegerProperty number = new SimpleIntegerProperty();
@ -18,9 +17,8 @@ public class tableDataJob
private final StringProperty value = new SimpleStringProperty(); private final StringProperty value = new SimpleStringProperty();
public tableDataJob(final Integer pNumber, final String pTime, public tableDataJob(final Integer pNumber, final String pTime, final String pPositionen, final String pStatus,
final String pPositionen, final String pStatus, final String pValue) final String pValue) {
{
this.number.set(pNumber); this.number.set(pNumber);
this.time.set(pTime); this.time.set(pTime);
this.positionen.set(pPositionen); this.positionen.set(pPositionen);
@ -29,78 +27,63 @@ public class tableDataJob
} }
public IntegerProperty numberProperty() public IntegerProperty numberProperty() {
{
return number; return number;
} }
public StringProperty timeProperty() public StringProperty timeProperty() {
{
return time; return time;
} }
public StringProperty positionProperty() public StringProperty positionProperty() {
{
return positionen; return positionen;
} }
public StringProperty statusProperty() public StringProperty statusProperty() {
{
return status; return status;
} }
public StringProperty valueProperty() public StringProperty valueProperty() {
{
return value; return value;
} }
public Integer getNumber() public Integer getNumber() {
{
return numberProperty().get(); return numberProperty().get();
} }
public String getTime() public String getTime() {
{
return timeProperty().get(); return timeProperty().get();
} }
public String getPosition() public String getPosition() {
{
return positionProperty().get(); return positionProperty().get();
} }
public String getStatus() public String getStatus() {
{
return statusProperty().get(); return statusProperty().get();
} }
public String getValue() public String getValue() {
{
return valueProperty().get(); return valueProperty().get();
} }
public final void setNumber(int pNumber) public final void setNumber(int pNumber) {
{
numberProperty().set(pNumber); numberProperty().set(pNumber);
} }
public final void setTime(String pTime) public final void setTime(String pTime) {
{
timeProperty().set(pTime); timeProperty().set(pTime);
} }
public final void setPosition(String pPosition) public final void setPosition(String pPosition) {
{
positionProperty().set(pPosition); positionProperty().set(pPosition);
} }
public final void setStatus(String pStatus) public final void setStatus(String pStatus) {
{
statusProperty().set(pStatus); statusProperty().set(pStatus);
} }
public final void setValue(String pValue) public final void setValue(String pValue) {
{
valueProperty().set(pValue); valueProperty().set(pValue);
} }

View File

@ -5,8 +5,7 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
public class tableDataPositionen public class tableDataPositionen { // Data object with id, name, value, color
{ // data-object with id, name, value, color
private final IntegerProperty id = new SimpleIntegerProperty(); private final IntegerProperty id = new SimpleIntegerProperty();
@ -18,8 +17,8 @@ public class tableDataPositionen
private final StringProperty color = new SimpleStringProperty(); private final StringProperty color = new SimpleStringProperty();
public tableDataPositionen(final int id, final String name, final String value, final String cat, final String color) public tableDataPositionen(final int id, final String name, final String value, final String cat,
{ final String color) {
this.id.set(id); this.id.set(id);
this.name.set(name); this.name.set(name);
this.value.set(value); this.value.set(value);
@ -27,18 +26,15 @@ public class tableDataPositionen
this.color.set(color); this.color.set(color);
} }
public IntegerProperty idProperty() public IntegerProperty idProperty() {
{
return id; return id;
} }
public StringProperty nameProperty() public StringProperty nameProperty() {
{
return name; return name;
} }
public StringProperty valueProperty() public StringProperty valueProperty() {
{
return value; return value;
} }
@ -46,23 +42,19 @@ public class tableDataPositionen
return cat; return cat;
} }
public StringProperty colorProperty() public StringProperty colorProperty() {
{
return color; return color;
} }
public int getID() public int getID() {
{
return idProperty().get(); return idProperty().get();
} }
public String getName() public String getName() {
{
return nameProperty().get(); return nameProperty().get();
} }
public String getValue() public String getValue() {
{
return valueProperty().get(); return valueProperty().get();
} }
@ -70,23 +62,19 @@ public class tableDataPositionen
return catProperty().get(); return catProperty().get();
} }
public String getColor() public String getColor() {
{
return colorProperty().get(); return colorProperty().get();
} }
public final void setID(int id) public final void setID(int id) {
{
idProperty().set(id); idProperty().set(id);
} }
public final void setName(String name) public final void setName(String name) {
{
nameProperty().set(name); nameProperty().set(name);
} }
public final void setValue(String value) public final void setValue(String value) {
{
valueProperty().set(value); valueProperty().set(value);
} }
@ -94,8 +82,7 @@ public class tableDataPositionen
catProperty().set(cat); catProperty().set(cat);
} }
public final void setColor(String color) public final void setColor(String color) {
{
colorProperty().set(color); colorProperty().set(color);
} }
} }

View File

@ -1 +1 @@
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */ /* JavaFX CSS - Leave this comment until you have at least one rule which uses -fx-Property */

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.CheckBox?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextField?>
<?import com.jfoenix.controls.JFXToggleButton?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?> <?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
@ -30,7 +30,8 @@
<Button fx:id="ueberbtn" layoutX="273.0" layoutY="448.0" mnemonicParsing="false" onAction="#ueberbtnAction" prefHeight="35.0" prefWidth="324.0" text="Informationen über jFxKasse"> <Button fx:id="ueberbtn" layoutX="273.0" layoutY="448.0" mnemonicParsing="false" onAction="#ueberbtnAction" prefHeight="35.0" prefWidth="324.0" text="Informationen über jFxKasse">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></Button> </font>
</Button>
<TitledPane alignment="CENTER" animated="false" collapsible="false" contentDisplay="CENTER" layoutX="790.0" layoutY="10.0" prefHeight="270.0" prefWidth="566.0" text="Datenbank Einstellungen"> <TitledPane alignment="CENTER" animated="false" collapsible="false" contentDisplay="CENTER" layoutX="790.0" layoutY="10.0" prefHeight="270.0" prefWidth="566.0" text="Datenbank Einstellungen">
<content> <content>
<AnchorPane fx:id="paneDB" minHeight="0.0" minWidth="0.0" prefHeight="238.0" prefWidth="564.0"> <AnchorPane fx:id="paneDB" minHeight="0.0" minWidth="0.0" prefHeight="238.0" prefWidth="564.0">
@ -40,10 +41,11 @@
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftNewDBName" alignment="CENTER" layoutX="25.0" layoutY="10.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftNewDBName" alignment="CENTER" layoutX="25.0" layoutY="10.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
</TextField>
<Label fx:id="labelDBStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="1.0" layoutY="75.0" prefHeight="34.0" prefWidth="551.0" text="Keine Datenbank gefunden!"> <Label fx:id="labelDBStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="1.0" layoutY="75.0" prefHeight="34.0" prefWidth="551.0" text="Keine Datenbank gefunden!">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
@ -59,6 +61,11 @@
<Font name="Cantarell Regular" size="13.0"/> <Font name="Cantarell Regular" size="13.0"/>
</font> </font>
</Button> </Button>
<Label fx:id="labelFirstStart" alignment="CENTER" layoutX="1.0" layoutY="170.0" prefHeight="50.0" prefWidth="551.0" text="⚠ Erststart: Bitte geben Sie einen Datenbanknamen ein und klicken Sie auf 'Neue Datenbank anlegen'." textFill="#cc0000" visible="false" wrapText="true">
<font>
<Font name="Cantarell Bold" size="14.0"/>
</font>
</Label>
</children> </children>
</AnchorPane> </AnchorPane>
</content> </content>
@ -95,26 +102,31 @@
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftKat01" alignment="CENTER" layoutX="50.0" layoutY="5.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftKat01" alignment="CENTER" layoutX="50.0" layoutY="5.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
<JFXTextField fx:id="tftKat02" alignment="CENTER" layoutX="50.0" layoutY="45.0" prefHeight="25.0" prefWidth="376.0"> </TextField>
<TextField fx:id="tftKat02" alignment="CENTER" layoutX="50.0" layoutY="45.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
<JFXTextField fx:id="tftKat03" alignment="CENTER" layoutX="50.0" layoutY="85.0" prefHeight="25.0" prefWidth="376.0"> </TextField>
<TextField fx:id="tftKat03" alignment="CENTER" layoutX="50.0" layoutY="85.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
<JFXTextField fx:id="tftKat04" alignment="CENTER" layoutX="50.0" layoutY="125.0" prefHeight="25.0" prefWidth="376.0"> </TextField>
<TextField fx:id="tftKat04" alignment="CENTER" layoutX="50.0" layoutY="125.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
<JFXTextField fx:id="tftKat05" alignment="CENTER" layoutX="50.0" layoutY="165.0" prefHeight="25.0" prefWidth="376.0"> </TextField>
<TextField fx:id="tftKat05" alignment="CENTER" layoutX="50.0" layoutY="165.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
</TextField>
<Button fx:id="btnSaveCat" layoutX="200.0" layoutY="204.0" mnemonicParsing="false" onAction="#btnSaveCatAction" text="Kategorien speichern"> <Button fx:id="btnSaveCat" layoutX="200.0" layoutY="204.0" mnemonicParsing="false" onAction="#btnSaveCatAction" text="Kategorien speichern">
<font> <font>
<Font name="Cantarell Regular" size="13.0"/> <Font name="Cantarell Regular" size="13.0"/>
@ -133,15 +145,21 @@
<children> <children>
<ChoiceBox fx:id="printerChoise" layoutX="270.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="178.0"/> <ChoiceBox fx:id="printerChoise" layoutX="270.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="178.0"/>
<Spinner fx:id="linesSpinner" layoutX="35.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0"/> <Spinner fx:id="linesSpinner" layoutX="35.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0"/>
<JFXTextField fx:id="tftheader" alignment="CENTER" layoutX="65.0" layoutY="90.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0"> <TextField fx:id="tftheader" alignment="CENTER" layoutX="65.0" layoutY="90.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0">
<font>
<Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField>
<JFXToggleButton fx:id="switchSeparate" layoutX="270.0" layoutY="170.0" text="Kategorien separat drucken">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font> </font>
</JFXToggleButton> </TextField>
<CheckBox fx:id="switchSeparate" layoutX="270.0" layoutY="170.0" text="Kategorien separat drucken">
<font>
<Font name="Cantarell Regular" size="18.0"/>
</font>
</CheckBox>
<CheckBox fx:id="switchAutoPrint" layoutX="270.0" layoutY="200.0" text="Bon direkt drucken">
<font>
<Font name="Cantarell Regular" size="18.0"/>
</font>
</CheckBox>
<Label alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="450.0" layoutY="10.0" prefHeight="34.0" prefWidth="107.0" text="Drucker:"> <Label alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="450.0" layoutY="10.0" prefHeight="34.0" prefWidth="107.0" text="Drucker:">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
@ -179,10 +197,11 @@
</Button> </Button>
<Spinner fx:id="offsetHeaderSpinner" layoutX="324.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0"/> <Spinner fx:id="offsetHeaderSpinner" layoutX="324.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0"/>
<Spinner fx:id="offsetFooterSpinner" layoutX="35.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0"/> <Spinner fx:id="offsetFooterSpinner" layoutX="35.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0"/>
<JFXTextField fx:id="tftfooter" alignment="CENTER" layoutX="65.0" layoutY="130.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0"> <TextField fx:id="tftfooter" alignment="CENTER" layoutX="65.0" layoutY="130.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font></JFXTextField> </font>
</TextField>
</children> </children>
</AnchorPane> </AnchorPane>
</content> </content>
@ -227,21 +246,21 @@
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftNewPosition" alignment="CENTER" layoutX="307.0" layoutY="8.0" prefHeight="27.0" prefWidth="203.0"> <TextField fx:id="tftNewPosition" alignment="CENTER" layoutX="307.0" layoutY="8.0" prefHeight="27.0" prefWidth="203.0">
<font> <font>
<Font name="Cantarell Regular" size="13.0"/> <Font name="Cantarell Regular" size="13.0"/>
</font> </font>
</JFXTextField> </TextField>
<Label fx:id="labelNewValue" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="504.0" layoutY="50.0" prefHeight="34.0" prefWidth="118.0" text="Preis in Euro:"> <Label fx:id="labelNewValue" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="504.0" layoutY="50.0" prefHeight="34.0" prefWidth="118.0" text="Preis in Euro:">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftNewValue" alignment="CENTER" labelFloat="true" layoutX="442.0" layoutY="42.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="27.0" prefWidth="66.0"> <TextField fx:id="tftNewValue" alignment="CENTER" layoutX="442.0" layoutY="42.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="27.0" prefWidth="66.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
</font> </font>
</JFXTextField> </TextField>
<Label fx:id="labelNewColor" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="517.0" layoutY="90.0" prefHeight="34.0" prefWidth="105.0" text="Farbe:"> <Label fx:id="labelNewColor" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="517.0" layoutY="90.0" prefHeight="34.0" prefWidth="105.0" text="Farbe:">
<font> <font>
<Font name="Cantarell Regular" size="18.0"/> <Font name="Cantarell Regular" size="18.0"/>
@ -360,131 +379,131 @@
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
</rowConstraints> </rowConstraints>
<children> <children>
<JFXButton fx:id="gridButton04" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton04Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1"> <Button fx:id="gridButton04" maxWidth="235.0" minWidth="179.0" onAction="#gridButton04Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton05" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton05Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true"> <Button fx:id="gridButton05" maxWidth="235.0" minWidth="179.0" onAction="#gridButton05Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton03" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton03Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2"> <Button fx:id="gridButton03" maxWidth="235.0" minWidth="179.0" onAction="#gridButton03Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton02" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton02Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3"> <Button fx:id="gridButton02" maxWidth="235.0" minWidth="179.0" onAction="#gridButton02Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton01" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton01Action" prefHeight="134.0" prefWidth="179.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4"> <Button fx:id="gridButton01" maxWidth="235.0" minWidth="179.0" onAction="#gridButton01Action" prefHeight="134.0" prefWidth="179.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton10" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton10Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="1"> <Button fx:id="gridButton10" maxWidth="235.0" minWidth="179.0" onAction="#gridButton10Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton09" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton09Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="1"> <Button fx:id="gridButton09" maxWidth="235.0" minWidth="179.0" onAction="#gridButton09Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton08" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton08Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="1"> <Button fx:id="gridButton08" maxWidth="235.0" minWidth="179.0" onAction="#gridButton08Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton07" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton07Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="1"> <Button fx:id="gridButton07" maxWidth="235.0" minWidth="179.0" onAction="#gridButton07Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton06" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton06Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="1"> <Button fx:id="gridButton06" maxWidth="235.0" minWidth="179.0" onAction="#gridButton06Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton15" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton15Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="2"> <Button fx:id="gridButton15" maxWidth="235.0" minWidth="179.0" onAction="#gridButton15Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton14" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton14Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="2"> <Button fx:id="gridButton14" maxWidth="235.0" minWidth="179.0" onAction="#gridButton14Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton13" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton13Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="2"> <Button fx:id="gridButton13" maxWidth="235.0" minWidth="179.0" onAction="#gridButton13Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton12" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton12Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="2"> <Button fx:id="gridButton12" maxWidth="235.0" minWidth="179.0" onAction="#gridButton12Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton11" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton11Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="2"> <Button fx:id="gridButton11" maxWidth="235.0" minWidth="179.0" onAction="#gridButton11Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton20" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton20Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="3"> <Button fx:id="gridButton20" maxWidth="235.0" minWidth="179.0" onAction="#gridButton20Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton19" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton19Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="3"> <Button fx:id="gridButton19" maxWidth="235.0" minWidth="179.0" onAction="#gridButton19Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton18" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton18Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="3"> <Button fx:id="gridButton18" maxWidth="235.0" minWidth="179.0" onAction="#gridButton18Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton17" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton17Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="3"> <Button fx:id="gridButton17" maxWidth="235.0" minWidth="179.0" onAction="#gridButton17Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton16" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton16Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="3"> <Button fx:id="gridButton16" maxWidth="235.0" minWidth="179.0" onAction="#gridButton16Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton25" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton25Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="4"> <Button fx:id="gridButton25" maxWidth="235.0" minWidth="179.0" onAction="#gridButton25Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton23" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton23Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="4"> <Button fx:id="gridButton23" maxWidth="235.0" minWidth="179.0" onAction="#gridButton23Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton22" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton22Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="4"> <Button fx:id="gridButton22" maxWidth="235.0" minWidth="179.0" onAction="#gridButton22Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton21" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton21Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="4"> <Button fx:id="gridButton21" maxWidth="235.0" minWidth="179.0" onAction="#gridButton21Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton24" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton24Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="4"> <Button fx:id="gridButton24" maxWidth="235.0" minWidth="179.0" onAction="#gridButton24Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0"/> <Font name="Cantarell Regular" size="24.0"/>
</font> </font>
</JFXButton> </Button>
</children> </children>
</GridPane> </GridPane>
<Button fx:id="btnPrintBill" contentDisplay="CENTER" focusTraversable="false" graphicTextGap="1.0" layoutX="75.0" layoutY="588.0" maxHeight="88.0" minHeight="75.0" mnemonicParsing="false" onAction="#btnPrintBillAction" prefHeight="88.0" prefWidth="258.0" text="Drucken" textAlignment="CENTER" wrapText="true"> <Button fx:id="btnPrintBill" contentDisplay="CENTER" focusTraversable="false" graphicTextGap="1.0" layoutX="75.0" layoutY="588.0" maxHeight="88.0" minHeight="75.0" mnemonicParsing="false" onAction="#btnPrintBillAction" prefHeight="88.0" prefWidth="258.0" text="Drucken" textAlignment="CENTER" wrapText="true">
@ -492,7 +511,12 @@
<Font name="Cantarell Bold" size="48.0"/> <Font name="Cantarell Bold" size="48.0"/>
</font> </font>
</Button> </Button>
<Button fx:id="btnDeleteSelectedPosition" layoutX="43.0" layoutY="458.0" mnemonicParsing="false" onAction="#btnDeleteSelectedPositionAction" prefHeight="17.0" prefWidth="332.0" text="Ausgewählte Position löschen" textAlignment="CENTER"> <Button fx:id="btnDeleteSelectedPosition" layoutX="43.0" layoutY="438.0" mnemonicParsing="false" onAction="#btnDeleteSelectedPositionAction" prefHeight="17.0" prefWidth="332.0" text="Ausgewählte Position löschen" textAlignment="CENTER">
<font>
<Font name="Cantarell Regular" size="20.0"/>
</font>
</Button>
<Button fx:id="btnDeleteAllPositions" layoutX="43.0" layoutY="473.0" mnemonicParsing="false" onAction="#btnDeleteAllPositionsAction" prefHeight="17.0" prefWidth="332.0" text="Alle Positionen löschen" textAlignment="CENTER">
<font> <font>
<Font name="Cantarell Regular" size="20.0"/> <Font name="Cantarell Regular" size="20.0"/>
</font> </font>
@ -512,11 +536,11 @@
<Font name="Cantarell Regular" size="26.0"/> <Font name="Cantarell Regular" size="26.0"/>
</font> </font>
</Label> </Label>
<JFXButton fx:id="btnLock" buttonType="RAISED" layoutX="1.0" layoutY="6.0" lineSpacing="2.0" onAction="#btnLockAction" prefHeight="42.0" prefWidth="180.0" ripplerFill="BLACK" text="Kasse sperren" textAlignment="CENTER" textFill="#c91c1c" textOverrun="LEADING_WORD_ELLIPSIS"> <Button fx:id="btnLock" layoutX="1.0" layoutY="6.0" lineSpacing="2.0" onAction="#btnLockAction" prefHeight="42.0" prefWidth="180.0" text="Kasse sperren" textAlignment="CENTER" textFill="#c91c1c" textOverrun="LEADING_WORD_ELLIPSIS">
<font> <font>
<Font name="Cantarell Regular" size="19.0"/> <Font name="Cantarell Regular" size="19.0"/>
</font> </font>
</JFXButton> </Button>
<Line endX="800.0" layoutX="62.0" layoutY="465.0" rotate="90.0" startX="-100.0" strokeWidth="4.0"/> <Line endX="800.0" layoutX="62.0" layoutY="465.0" rotate="90.0" startX="-100.0" strokeWidth="4.0"/>
</children> </children>
</AnchorPane> </AnchorPane>