Klasse WERTSCHOEPFUNG hinzugefügt. Dazu gehören Auftragsbestätigung,

Lieferschein, Rechnung. Funktionalität zum STARTUPMENUE. Lieferschein
hat noch Probleme beim erzeugen der XML Datei. Programm ist im Grunde
aber lauffähig.
master
denis 2024-06-27 20:00:17 +02:00
parent 4876b5b587
commit 5fd4a14b0c
22 changed files with 2024 additions and 180 deletions

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Firmenstammdaten>
<Firmenname>Denis</Firmenname>
<Inhaber>Denis</Inhaber>
<Strasse>Musterweg 1</Strasse>
<PLZ>83636</PLZ>
<Stadt>Mannheim</Stadt>
<Land>Deutschland</Land>
<Telefon>026373344</Telefon>
<Mobilnummer>02237353353</Mobilnummer>
<Telefax>03736376363533</Telefax>
<Email>denis@gmail.com</Email>
<Webseite>www.abc.de</Webseite>
<UmsatzsteuerIdNummer>203636820632</UmsatzsteuerIdNummer>
<Finanzamt>Mannheim</Finanzamt>
<Bankname>Deutsche Bank</Bankname>
<IBAN>DE 3836823728</IBAN>
<BIC>2730353</BIC>
<GlaeubigerID>1</GlaeubigerID>
</Firmenstammdaten>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Kunde>
<Kundennummer>1</Kundennummer>
<Name>Denis</Name>
<Anschrift>aadada</Anschrift>
<Email>dadada</Email>
<Telefonnummer>daadad</Telefonnummer>
<Kleinunternehmer>true</Kleinunternehmer>
<Ansprechpartner>sdsds</Ansprechpartner>
</Kunde>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Kunde>
<Kundennummer>2</Kundennummer>
<Name>f</Name>
<Anschrift>frrf</Anschrift>
<Email>rfrfr</Email>
<Telefonnummer>frfrf</Telefonnummer>
<Kleinunternehmer>false</Kleinunternehmer>
<Ansprechpartner>ededed</Ansprechpartner>
</Kunde>

View File

@ -0,0 +1,281 @@
package controller;
import model.Angebot;
import model.Artikel;
import model.Kunde;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
import java.lang.reflect.Field;
public class AngebotController {
private final static String ordnerPfad = "angebote";
private static KundenController kundenController;
private static ArtikelController artikelController;
public AngebotController() {
File ordner = new File(ordnerPfad);
if (!ordner.exists()) {
ordner.mkdir();
}
kundenController = new KundenController();
artikelController = new ArtikelController();
}
// Methode zum Überprüfen, ob eine Angebotsnummer bereits existiert
private boolean angebotsnummerExistiert(int angebotsnummer) {
File xmlDatei = new File(ordnerPfad + "/" + angebotsnummer + ".xml");
return xmlDatei.exists();
}
// Methode zur Generierung einer neuen, eindeutigen Angebotsnummer
private int generiereNeueAngebotsnummer() {
int neueAngebotsnummer = 1;
while (angebotsnummerExistiert(neueAngebotsnummer)) {
neueAngebotsnummer++;
}
return neueAngebotsnummer;
}
public Angebot erstelleAngebot() {
Scanner scanner = new Scanner(System.in);
// Kundennummer abfragen
System.out.print("Bitte geben Sie die Kundennummer ein: ");
int kundennummer = scanner.nextInt();
Kunde kunde = kundenController.leseAusXML(kundennummer);
if (kunde == null) {
System.out.println("Kunde nicht gefunden.");
return null;
}
List<Artikel> artikelListe = new ArrayList<>();
List<Integer> mengeListe = new ArrayList<>();
while (true) {
// Artikelnummer und Menge abfragen
System.out.print("Bitte geben Sie die Artikelnummer ein (oder -1 zum Beenden): ");
int artikelnummer = scanner.nextInt();
if (artikelnummer == -1) {
break;
}
Artikel artikel = artikelController.leseAusXML(artikelnummer);
if (artikel == null) {
System.out.println("Artikel nicht gefunden.");
continue;
}
System.out.print("Bitte geben Sie die Menge ein: ");
int menge = scanner.nextInt();
artikelListe.add(artikel);
mengeListe.add(menge);
}
if (artikelListe.isEmpty()) {
System.out.println("Kein Artikel hinzugefügt. Angebot wird nicht erstellt.");
return null;
}
Angebot angebot = new Angebot();
angebot.setAngebotnummer(generiereNeueAngebotsnummer());
angebot.setKunde(kunde);
angebot.setArtikelListe(artikelListe);
angebot.setMenge(mengeListe);
// Summe berechnen
double summeNetto = 0.0;
double summeBrutto = 0.0;
for (int i = 0; i < artikelListe.size(); i++) {
Artikel artikel = artikelListe.get(i);
int menge = mengeListe.get(i);
summeNetto += artikel.getNettopreis() * menge;
summeBrutto += artikel.getBruttopreis() * menge;
}
angebot.setSummeNetto(summeNetto);
angebot.setSummeBrutto(summeBrutto);
// Angebot anzeigen
angebot.anzeigen();
// Angebot speichern
speichereAngebot(angebot);
return angebot;
}
private void speichereAngebot(Angebot angebot) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root-Element
Element rootElement = doc.createElement("Angebot");
doc.appendChild(rootElement);
// Angebotsnummer-Element
Element nummerElement = doc.createElement("Angebotsnummer");
nummerElement.appendChild(doc.createTextNode(Integer.toString(angebot.getAngebotnummer())));
rootElement.appendChild(nummerElement);
// Erstellungsdatum-Element
Element datumElement = doc.createElement("Erstellungsdatum");
datumElement.appendChild(doc.createTextNode(angebot.getErstellungsdatum().toString()));
rootElement.appendChild(datumElement);
// Kunde-Element
Element kundeElement = doc.createElement("Kunde");
rootElement.appendChild(kundeElement);
// Kundennummer-Element
Element kundennummerElement = doc.createElement("Kundennummer");
kundennummerElement.appendChild(doc.createTextNode(Integer.toString(angebot.getKunde().getKundennummer())));
kundeElement.appendChild(kundennummerElement);
// Artikel-Element
Element artikelElement = doc.createElement("Artikel");
rootElement.appendChild(artikelElement);
for (int i = 0; i < angebot.getArtikelListe().size(); i++) {
Artikel artikel = angebot.getArtikelListe().get(i);
int menge = angebot.getMenge().get(i);
Element artikelDetailsElement = doc.createElement("ArtikelDetails");
Element artikelNummerElement = doc.createElement("Artikelnummer");
artikelNummerElement.appendChild(doc.createTextNode(Integer.toString(artikel.getArtikelnummer())));
artikelDetailsElement.appendChild(artikelNummerElement);
Element artikelMengeElement = doc.createElement("Menge");
artikelMengeElement.appendChild(doc.createTextNode(Integer.toString(menge)));
artikelDetailsElement.appendChild(artikelMengeElement);
Element artikelNettoElement = doc.createElement("Nettopreis");
artikelNettoElement.appendChild(doc.createTextNode(Double.toString(artikel.getNettopreis())));
artikelDetailsElement.appendChild(artikelNettoElement);
Element artikelBruttoElement = doc.createElement("Bruttopreis");
artikelBruttoElement.appendChild(doc.createTextNode(Double.toString(artikel.getBruttopreis())));
artikelDetailsElement.appendChild(artikelBruttoElement);
artikelElement.appendChild(artikelDetailsElement);
}
// Summe Netto-Element
Element summeNettoElement = doc.createElement("SummeNetto");
summeNettoElement.appendChild(doc.createTextNode(Double.toString(angebot.getSummeNetto())));
rootElement.appendChild(summeNettoElement);
// Summe Brutto-Element
Element summeBruttoElement = doc.createElement("SummeBrutto");
summeBruttoElement.appendChild(doc.createTextNode(Double.toString(angebot.getSummeBrutto())));
rootElement.appendChild(summeBruttoElement);
// Transformieren und Speichern in Datei
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(ordnerPfad + "/" + angebot.getAngebotnummer() + ".xml"));
transformer.transform(source, result);
System.out.println("Angebot wurde erfolgreich gespeichert.");
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
public Angebot leseAusXML(int angebotsnummer) {
try {
File xmlDatei = new File(ordnerPfad + "/" + angebotsnummer + ".xml");
if (!xmlDatei.exists()) {
return null;
}
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlDatei);
doc.getDocumentElement().normalize();
Angebot angebot = new Angebot();
NodeList nList = doc.getElementsByTagName("Angebot");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
// Angebotsnummer setzen
int nummer = Integer.parseInt(eElement.getElementsByTagName("Angebotsnummer").item(0).getTextContent());
Angebot.setAktuelleAngebotnummer(nummer - 1); // Damit die Angebotsnummer korrekt gesetzt wird
angebot = new Angebot(); // Neues Angebot-Objekt erstellen mit der richtigen Angebotsnummer
// Erstellungsdatum setzen
String datumString = eElement.getElementsByTagName("Erstellungsdatum").item(0).getTextContent();
SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", java.util.Locale.ENGLISH);
Date erstellungsdatum = dateFormat.parse(datumString);
// Reflektiere das Datum im Angebot-Objekt
Field field = Angebot.class.getDeclaredField("erstellungsdatum");
field.setAccessible(true);
field.set(angebot, erstellungsdatum);
// Kunde setzen
int kundennummer = Integer.parseInt(eElement.getElementsByTagName("Kundennummer").item(0).getTextContent());
Kunde kunde = kundenController.leseAusXML(kundennummer);
angebot.setKunde(kunde);
// Artikel und Menge setzen
List<Artikel> artikelListe = new ArrayList<>();
List<Integer> mengeListe = new ArrayList<>();
NodeList artikelNodes = eElement.getElementsByTagName("ArtikelDetails");
for (int i = 0; i < artikelNodes.getLength(); i++) {
Element artikelElement = (Element) artikelNodes.item(i);
int artikelnummer = Integer.parseInt(artikelElement.getElementsByTagName("Artikelnummer").item(0).getTextContent());
Artikel artikel = artikelController.leseAusXML(artikelnummer);
int menge = Integer.parseInt(artikelElement.getElementsByTagName("Menge").item(0).getTextContent());
artikelListe.add(artikel);
mengeListe.add(menge);
}
angebot.setArtikelListe(artikelListe);
angebot.setMenge(mengeListe);
// Summen setzen
angebot.setSummeNetto(Double.parseDouble(eElement.getElementsByTagName("SummeNetto").item(0).getTextContent()));
angebot.setSummeBrutto(Double.parseDouble(eElement.getElementsByTagName("SummeBrutto").item(0).getTextContent()));
}
}
System.out.println("Angebot wurde erfolgreich gelesen.");
return angebot;
} catch (ParserConfigurationException | SAXException | IOException | ParseException | NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}

View File

@ -34,6 +34,21 @@ public class ArtikelController {
} }
} }
// Methode zum Überprüfen, ob eine Artikelnummer bereits existiert
private boolean artikelnummerExistiert(int artikelnummer) {
File xmlDatei = new File(ordnerPfad + "/" + artikelnummer + ".xml");
return xmlDatei.exists();
}
// Methode zur Generierung einer neuen, eindeutigen Artikelnummer
private int generiereNeueArtikelnummer() {
int neueArtikelnummer = 1;
while (artikelnummerExistiert(neueArtikelnummer)) {
neueArtikelnummer++;
}
return neueArtikelnummer;
}
// Methode zum Speichern der Artikeldaten im XML-Format // Methode zum Speichern der Artikeldaten im XML-Format
public void speichereAlsXML(Artikel artikel) { public void speichereAlsXML(Artikel artikel) {
try { try {
@ -70,12 +85,17 @@ public class ArtikelController {
mehrwertsteuersatzElement.appendChild(doc.createTextNode(Double.toString(artikel.getMehrwertsteuersatz()))); mehrwertsteuersatzElement.appendChild(doc.createTextNode(Double.toString(artikel.getMehrwertsteuersatz())));
rootElement.appendChild(mehrwertsteuersatzElement); rootElement.appendChild(mehrwertsteuersatzElement);
// Bruttopreis-Element
Element bruttopreisElement = doc.createElement("Bruttopreis");
bruttopreisElement.appendChild(doc.createTextNode(Double.toString(artikel.getBruttopreis())));
rootElement.appendChild(bruttopreisElement);
// Transformieren und Speichern in Datei // Transformieren und Speichern in Datei
TransformerFactory transformerFactory = TransformerFactory.newInstance(); TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(); Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc); DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(this.ordnerPfad + "/" + Integer.toString(artikel.getArtikelnummer()) + ".xml")); StreamResult result = new StreamResult(new File(this.ordnerPfad + "/" + artikel.getArtikelnummer() + ".xml"));
transformer.transform(source, result); transformer.transform(source, result);
System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); System.out.println("Die XML-Datei wurde erfolgreich gespeichert.");
@ -88,7 +108,7 @@ public class ArtikelController {
// Methode zum Auslesen der Artikeldaten aus einer XML-Datei // Methode zum Auslesen der Artikeldaten aus einer XML-Datei
public Artikel leseAusXML(int artikelnummer) { public Artikel leseAusXML(int artikelnummer) {
try { try {
File xmlDatei = new File(this.ordnerPfad + "/" + Integer.toString(artikelnummer) + ".xml"); File xmlDatei = new File(this.ordnerPfad + "/" + artikelnummer + ".xml");
Artikel artikel = new Artikel(artikelnummer); Artikel artikel = new Artikel(artikelnummer);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
@ -108,10 +128,10 @@ public class ArtikelController {
artikel.setBezeichnung(eElement.getElementsByTagName("Bezeichnung").item(0).getTextContent()); artikel.setBezeichnung(eElement.getElementsByTagName("Bezeichnung").item(0).getTextContent());
artikel.setNettopreis(Double.parseDouble(eElement.getElementsByTagName("Nettopreis").item(0).getTextContent())); artikel.setNettopreis(Double.parseDouble(eElement.getElementsByTagName("Nettopreis").item(0).getTextContent()));
artikel.setMehrwertsteuersatz(Double.parseDouble(eElement.getElementsByTagName("Mehrwertsteuersatz").item(0).getTextContent())); artikel.setMehrwertsteuersatz(Double.parseDouble(eElement.getElementsByTagName("Mehrwertsteuersatz").item(0).getTextContent()));
artikel.setBruttopreis(Double.parseDouble(eElement.getElementsByTagName("Bruttopreis").item(0).getTextContent()));
} }
} }
System.out.println("Die XML-Datei wurde erfolgreich gelesen."); System.out.println("Die XML-Datei wurde erfolgreich gelesen.");
return artikel; return artikel;
} catch (ParserConfigurationException | SAXException | IOException e) { } catch (ParserConfigurationException | SAXException | IOException e) {
@ -128,6 +148,8 @@ public class ArtikelController {
// Methode zur Eingabe der Artikeldaten über die Konsole // Methode zur Eingabe der Artikeldaten über die Konsole
public void eingabeDaten(Artikel artikel, Scanner scanner) { public void eingabeDaten(Artikel artikel, Scanner scanner) {
artikel.setArtikelnummer(generiereNeueArtikelnummer());
System.out.print("Einheit: "); System.out.print("Einheit: ");
artikel.setEinheit(scanner.nextLine()); artikel.setEinheit(scanner.nextLine());
@ -139,5 +161,8 @@ public class ArtikelController {
System.out.print("Mehrwertsteuersatz: "); System.out.print("Mehrwertsteuersatz: ");
artikel.setMehrwertsteuersatz(Double.parseDouble(scanner.nextLine())); artikel.setMehrwertsteuersatz(Double.parseDouble(scanner.nextLine()));
// Der Bruttopreis wird automatisch berechnet und gesetzt
artikel.setBruttopreis(artikel.getNettopreis() + (artikel.getNettopreis() * artikel.getMehrwertsteuersatz() / 100));
} }
} }

View File

@ -0,0 +1,163 @@
package controller;
import model.Auftragsbestaetigung;
import model.Angebot;
import model.Artikel;
import model.Kunde;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;
public class AuftragsbestaetigungController {
private final String ordnerPfad = "auftragsbestaetigungen";
private AngebotController angebotController;
public AuftragsbestaetigungController() {
angebotController = new AngebotController();
File ordner = new File(ordnerPfad);
if (!ordner.exists()) {
ordner.mkdir();
}
}
// Methode zum Überprüfen, ob eine Auftragsnummer bereits existiert
private boolean auftragsnummerExistiert(int auftragsnummer) {
File xmlDatei = new File(ordnerPfad + "/" + auftragsnummer + ".xml");
return xmlDatei.exists();
}
// Methode zur Generierung einer neuen, eindeutigen Auftragsnummer
private int generiereNeueAuftragsnummer() {
int neueAuftragsnummer = 1;
while (auftragsnummerExistiert(neueAuftragsnummer)) {
neueAuftragsnummer++;
}
return neueAuftragsnummer;
}
// Methode zum Speichern der Auftragsbestaetigung im XML-Format
public void speichereAlsXML(Auftragsbestaetigung auftragsbestaetigung) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root-Element
Element rootElement = doc.createElement("Auftragsbestaetigung");
doc.appendChild(rootElement);
// Auftragsnummer-Element
Element nummerElement = doc.createElement("Auftragsnummer");
nummerElement.appendChild(doc.createTextNode(Integer.toString(auftragsbestaetigung.getAuftragsnummer())));
rootElement.appendChild(nummerElement);
// Auftragsdatum-Element
Element datumElement = doc.createElement("Auftragsdatum");
datumElement.appendChild(doc.createTextNode(String.valueOf(auftragsbestaetigung.getAuftragsdatum())));
rootElement.appendChild(datumElement);
// Angebot-Element
Element angebotElement = doc.createElement("Angebot");
rootElement.appendChild(angebotElement);
// Angebotsnummer-Element
Element angebotsnummerElement = doc.createElement("Angebotsnummer");
angebotsnummerElement.appendChild(doc.createTextNode(Integer.toString(auftragsbestaetigung.getAngebot().getAngebotnummer())));
angebotElement.appendChild(angebotsnummerElement);
// Transformieren und Speichern in Datei
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(ordnerPfad + "/" + auftragsbestaetigung.getAuftragsnummer() + ".xml"));
transformer.transform(source, result);
System.out.println("Die XML-Datei wurde erfolgreich gespeichert.");
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
// Methode zum Auslesen der Auftragsbestaetigung aus einer XML-Datei
public Auftragsbestaetigung leseAusXML(int auftragsnummer) {
try {
File xmlDatei = new File(ordnerPfad + "/" + auftragsnummer + ".xml");
if (!xmlDatei.exists()) {
return null;
}
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlDatei);
doc.getDocumentElement().normalize();
Auftragsbestaetigung auftragsbestaetigung = new Auftragsbestaetigung();
NodeList nList = doc.getElementsByTagName("Auftragsbestaetigung");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
auftragsbestaetigung.setAuftragsnummer(Integer.parseInt(eElement.getElementsByTagName("Auftragsnummer").item(0).getTextContent()));
String datumString = eElement.getElementsByTagName("Auftragsdatum").item(0).getTextContent();
// SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", java.util.Locale.ENGLISH);
int auftragsdatum = Integer.parseInt(datumString);
auftragsbestaetigung.setAuftragsdatum(auftragsdatum);
int angebotsnummer = Integer.parseInt(eElement.getElementsByTagName("Angebotsnummer").item(0).getTextContent());
Angebot angebot = angebotController.leseAusXML(angebotsnummer);
auftragsbestaetigung.setAngebot(angebot);
}
}
System.out.println("Die XML-Datei wurde erfolgreich gelesen.");
return auftragsbestaetigung;
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
return null;
}
public Auftragsbestaetigung erstelleAuftragsbestaetigung(Angebot angebot) {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte geben Sie die Auftragsbestaetigungsdatum ein: ");
int datum = scanner.nextInt();
Auftragsbestaetigung auftragsbestaetigung = new Auftragsbestaetigung();
auftragsbestaetigung.setAuftragsnummer(generiereNeueAuftragsnummer());
auftragsbestaetigung.setAngebot(angebot);
auftragsbestaetigung.setAuftragsdatum(datum);
// Auftragsbestaetigung auftragsbestaetigung = new Auftragsbestaetigung(angebot, datum);
speichereAlsXML(auftragsbestaetigung);
return auftragsbestaetigung;
}
}

View File

@ -1,6 +1,7 @@
package controller; package controller;
import model.Firmenstammdaten; import model.Firmenstammdaten;
import model.Anschrift;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -33,17 +34,17 @@ public class FirmenstammdatenController {
System.out.print("Inhaber: "); System.out.print("Inhaber: ");
daten.setInhaber(scanner.nextLine()); daten.setInhaber(scanner.nextLine());
Anschrift anschrift = new Anschrift();
System.out.print("Straße: "); System.out.print("Straße: ");
daten.setStrasse(scanner.nextLine()); anschrift.setStrasse(scanner.nextLine());
System.out.print("PLZ: "); System.out.print("PLZ: ");
daten.setPlz(scanner.nextLine()); anschrift.setPlz(scanner.nextLine());
System.out.print("Stadt: "); System.out.print("Ort: ");
daten.setStadt(scanner.nextLine()); anschrift.setOrt(scanner.nextLine());
System.out.print("Land: "); daten.setAnschrift(anschrift);
daten.setLand(scanner.nextLine());
System.out.print("Telefon: "); System.out.print("Telefon: ");
daten.setTelefon(scanner.nextLine()); daten.setTelefon(scanner.nextLine());
@ -102,25 +103,22 @@ public class FirmenstammdatenController {
inhaberElement.appendChild(doc.createTextNode(daten.getInhaber())); inhaberElement.appendChild(doc.createTextNode(daten.getInhaber()));
rootElement.appendChild(inhaberElement); rootElement.appendChild(inhaberElement);
// Straße-Element // Anschrift-Element
Element anschriftElement = doc.createElement("Anschrift");
Element strasseElement = doc.createElement("Strasse"); Element strasseElement = doc.createElement("Strasse");
strasseElement.appendChild(doc.createTextNode(daten.getStrasse())); strasseElement.appendChild(doc.createTextNode(daten.getAnschrift().getStrasse()));
rootElement.appendChild(strasseElement); anschriftElement.appendChild(strasseElement);
// PLZ-Element
Element plzElement = doc.createElement("PLZ"); Element plzElement = doc.createElement("PLZ");
plzElement.appendChild(doc.createTextNode(daten.getPlz())); plzElement.appendChild(doc.createTextNode(daten.getAnschrift().getPlz()));
rootElement.appendChild(plzElement); anschriftElement.appendChild(plzElement);
// Stadt-Element Element ortElement = doc.createElement("Ort");
Element stadtElement = doc.createElement("Stadt"); ortElement.appendChild(doc.createTextNode(daten.getAnschrift().getOrt()));
stadtElement.appendChild(doc.createTextNode(daten.getStadt())); anschriftElement.appendChild(ortElement);
rootElement.appendChild(stadtElement);
// Land-Element rootElement.appendChild(anschriftElement);
Element landElement = doc.createElement("Land");
landElement.appendChild(doc.createTextNode(daten.getLand()));
rootElement.appendChild(landElement);
// Telefon-Element // Telefon-Element
Element telefonElement = doc.createElement("Telefon"); Element telefonElement = doc.createElement("Telefon");
@ -212,10 +210,14 @@ public class FirmenstammdatenController {
daten.setFirmenname(eElement.getElementsByTagName("Firmenname").item(0).getTextContent()); daten.setFirmenname(eElement.getElementsByTagName("Firmenname").item(0).getTextContent());
daten.setInhaber(eElement.getElementsByTagName("Inhaber").item(0).getTextContent()); daten.setInhaber(eElement.getElementsByTagName("Inhaber").item(0).getTextContent());
daten.setStrasse(eElement.getElementsByTagName("Strasse").item(0).getTextContent());
daten.setPlz(eElement.getElementsByTagName("PLZ").item(0).getTextContent()); Element anschriftElement = (Element) eElement.getElementsByTagName("Anschrift").item(0);
daten.setStadt(eElement.getElementsByTagName("Stadt").item(0).getTextContent()); Anschrift anschrift = new Anschrift();
daten.setLand(eElement.getElementsByTagName("Land").item(0).getTextContent()); anschrift.setStrasse(anschriftElement.getElementsByTagName("Strasse").item(0).getTextContent());
anschrift.setPlz(anschriftElement.getElementsByTagName("PLZ").item(0).getTextContent());
anschrift.setOrt(anschriftElement.getElementsByTagName("Ort").item(0).getTextContent());
daten.setAnschrift(anschrift);
daten.setTelefon(eElement.getElementsByTagName("Telefon").item(0).getTextContent()); daten.setTelefon(eElement.getElementsByTagName("Telefon").item(0).getTextContent());
daten.setMobilnummer(eElement.getElementsByTagName("Mobilnummer").item(0).getTextContent()); daten.setMobilnummer(eElement.getElementsByTagName("Mobilnummer").item(0).getTextContent());
daten.setTelefax(eElement.getElementsByTagName("Telefax").item(0).getTextContent()); daten.setTelefax(eElement.getElementsByTagName("Telefax").item(0).getTextContent());
@ -244,7 +246,5 @@ public class FirmenstammdatenController {
System.out.println("Das Programm kann noch nicht gestartet werden. Bitte geben Sie zuerst Ihre Firmenstammdaten ein."); System.out.println("Das Programm kann noch nicht gestartet werden. Bitte geben Sie zuerst Ihre Firmenstammdaten ein.");
this.eingabeDaten(new Firmenstammdaten(), scanner); this.eingabeDaten(new Firmenstammdaten(), scanner);
} }
} }
} }

View File

@ -1,5 +1,6 @@
package controller; package controller;
import model.Anschrift;
import model.Kunde; import model.Kunde;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilderFactory;
@ -34,6 +35,21 @@ public class KundenController {
} }
} }
// Methode zum Überprüfen, ob eine Kundennummer bereits existiert
private boolean kundennummerExistiert(int kundennummer) {
File xmlDatei = new File(ordnerPfad + "/" + kundennummer + ".xml");
return xmlDatei.exists();
}
// Methode zur Generierung einer neuen, eindeutigen Kundennummer
private int generiereNeueKundennummer() {
int neueKundennummer = 1;
while (kundennummerExistiert(neueKundennummer)) {
neueKundennummer++;
}
return neueKundennummer;
}
// Methode zum Speichern der Kundendaten im XML-Format // Methode zum Speichern der Kundendaten im XML-Format
public void speichereAlsXML(Kunde kunde) { public void speichereAlsXML(Kunde kunde) {
try { try {
@ -57,9 +73,21 @@ public class KundenController {
// Anschrift-Element // Anschrift-Element
Element anschriftElement = doc.createElement("Anschrift"); Element anschriftElement = doc.createElement("Anschrift");
anschriftElement.appendChild(doc.createTextNode(kunde.getAnschrift()));
rootElement.appendChild(anschriftElement); rootElement.appendChild(anschriftElement);
// Anschrift Unterelemente
Element strasseElement = doc.createElement("Strasse");
strasseElement.appendChild(doc.createTextNode(kunde.getAnschrift().getStrasse()));
anschriftElement.appendChild(strasseElement);
Element plzElement = doc.createElement("PLZ");
plzElement.appendChild(doc.createTextNode(kunde.getAnschrift().getPlz()));
anschriftElement.appendChild(plzElement);
Element ortElement = doc.createElement("Ort");
ortElement.appendChild(doc.createTextNode(kunde.getAnschrift().getOrt()));
anschriftElement.appendChild(ortElement);
// Email-Element // Email-Element
Element emailElement = doc.createElement("Email"); Element emailElement = doc.createElement("Email");
emailElement.appendChild(doc.createTextNode(kunde.getEmail())); emailElement.appendChild(doc.createTextNode(kunde.getEmail()));
@ -85,7 +113,7 @@ public class KundenController {
Transformer transformer = transformerFactory.newTransformer(); Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc); DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(ordnerPfad + "/" + Integer.toString(kunde.getKundennummer()) + ".xml")); StreamResult result = new StreamResult(new File(ordnerPfad + "/" + kunde.getKundennummer() + ".xml"));
transformer.transform(source, result); transformer.transform(source, result);
System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); System.out.println("Die XML-Datei wurde erfolgreich gespeichert.");
@ -98,7 +126,7 @@ public class KundenController {
// Methode zum Auslesen der Kundendaten aus einer XML-Datei // Methode zum Auslesen der Kundendaten aus einer XML-Datei
public Kunde leseAusXML(int kundennummer) { public Kunde leseAusXML(int kundennummer) {
try { try {
File xmlDatei = new File(ordnerPfad + "/" + Integer.toString(kundennummer) + ".xml"); File xmlDatei = new File(ordnerPfad + "/" + kundennummer + ".xml");
Kunde kunde = new Kunde(kundennummer); Kunde kunde = new Kunde(kundennummer);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
@ -115,7 +143,15 @@ public class KundenController {
kunde.setKundennummer(Integer.parseInt(eElement.getElementsByTagName("Kundennummer").item(0).getTextContent())); kunde.setKundennummer(Integer.parseInt(eElement.getElementsByTagName("Kundennummer").item(0).getTextContent()));
kunde.setName(eElement.getElementsByTagName("Name").item(0).getTextContent()); kunde.setName(eElement.getElementsByTagName("Name").item(0).getTextContent());
kunde.setAnschrift(eElement.getElementsByTagName("Anschrift").item(0).getTextContent());
// Anschrift
Element anschriftElement = (Element) eElement.getElementsByTagName("Anschrift").item(0);
String strasse = anschriftElement.getElementsByTagName("Strasse").item(0).getTextContent();
String plz = anschriftElement.getElementsByTagName("PLZ").item(0).getTextContent();
String ort = anschriftElement.getElementsByTagName("Ort").item(0).getTextContent();
Anschrift anschrift = new Anschrift(strasse, plz, ort);
kunde.setAnschrift(anschrift);
kunde.setEmail(eElement.getElementsByTagName("Email").item(0).getTextContent()); kunde.setEmail(eElement.getElementsByTagName("Email").item(0).getTextContent());
kunde.setTelefonnummer(eElement.getElementsByTagName("Telefonnummer").item(0).getTextContent()); kunde.setTelefonnummer(eElement.getElementsByTagName("Telefonnummer").item(0).getTextContent());
kunde.setIstKleinunternehmer(Boolean.parseBoolean(eElement.getElementsByTagName("Kleinunternehmer").item(0).getTextContent())); kunde.setIstKleinunternehmer(Boolean.parseBoolean(eElement.getElementsByTagName("Kleinunternehmer").item(0).getTextContent()));
@ -129,34 +165,101 @@ public class KundenController {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
}
// Methode zum Auslesen der Kundendaten aus einer XML-Datei und in der Konsole ausgeben
public void leseUndGibAusXML(Kunde kunde, String dateiPfad) {
leseUndGibAusXML(kunde, dateiPfad);
kunde.anzeigen();
} }
// Methode zur Eingabe der Kundendaten über die Konsole // Methode zur Eingabe der Kundendaten über die Konsole
public void eingabeDaten(Kunde kunde, Scanner scanner) { public void eingabeDaten(Kunde kunde, Scanner scanner) {
kunde.setKundennummer(generiereNeueKundennummer());
// Name
String name;
do {
System.out.print("Name: "); System.out.print("Name: ");
kunde.setName(scanner.nextLine()); name = scanner.nextLine();
if (name.isEmpty()) {
System.out.print("Anschrift: "); System.out.println("Name darf nicht leer sein. Bitte erneut eingeben.");
kunde.setAnschrift(scanner.nextLine());
System.out.print("Email: ");
kunde.setEmail(scanner.nextLine());
System.out.print("Telefonnummer: ");
kunde.setTelefonnummer(scanner.nextLine());
System.out.print("Ist der Kunde ein Kleinunternehmer (true/false)? ");
kunde.setIstKleinunternehmer(Boolean.parseBoolean(scanner.nextLine()));
System.out.print("Ansprechpartner: ");
kunde.setAnsprechpartner(scanner.nextLine());
} }
} while (name.isEmpty());
kunde.setName(name);
// Straße
String strasse;
do {
System.out.print("Straße: ");
strasse = scanner.nextLine();
if (strasse.isEmpty()) {
System.out.println("Straße darf nicht leer sein. Bitte erneut eingeben.");
}
} while (strasse.isEmpty());
// PLZ
String plz;
do {
System.out.print("PLZ: ");
plz = scanner.nextLine();
if (!plz.matches("\\d{5}")) { // Prüft, ob die PLZ 5-stellig ist und nur Ziffern enthält
System.out.println("PLZ muss 5-stellig und numerisch sein. Bitte erneut eingeben.");
}
} while (!plz.matches("\\d{5}"));
// Ort
String ort;
do {
System.out.print("Ort: ");
ort = scanner.nextLine();
if (ort.isEmpty()) {
System.out.println("Ort darf nicht leer sein. Bitte erneut eingeben.");
}
} while (ort.isEmpty());
Anschrift anschrift = new Anschrift(strasse, plz, ort);
kunde.setAnschrift(anschrift);
// Email
String email;
do {
System.out.print("Email: ");
email = scanner.nextLine();
if (!email.matches("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$")) { // Einfache E-Mail-Validierung
System.out.println("Bitte geben Sie eine gültige Email-Adresse ein.");
}
} while (!email.matches("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$"));
kunde.setEmail(email);
// Telefonnummer
String telefonnummer;
do {
System.out.print("Telefonnummer: ");
telefonnummer = scanner.nextLine();
if (!telefonnummer.matches("\\+?[0-9]{10,15}")) { // Prüft, ob die Telefonnummer zwischen 10 und 15 Ziffern hat
System.out.println("Telefonnummer muss zwischen 10 und 15 Ziffern lang sein. Bitte erneut eingeben.");
}
} while (!telefonnummer.matches("\\+?[0-9]{10,15}"));
kunde.setTelefonnummer(telefonnummer);
// Kleinunternehmer
Boolean istKleinunternehmer = null;
do {
System.out.print("Ist der Kunde ein Kleinunternehmer (true/false)? ");
String input = scanner.nextLine().toLowerCase();
if (input.equals("true") || input.equals("false")) {
istKleinunternehmer = Boolean.parseBoolean(input);
} else {
System.out.println("Bitte geben Sie 'true' oder 'false' ein.");
}
} while (istKleinunternehmer == null);
kunde.setIstKleinunternehmer(istKleinunternehmer);
// Ansprechpartner
String ansprechpartner;
do {
System.out.print("Ansprechpartner: ");
ansprechpartner = scanner.nextLine();
if (ansprechpartner.isEmpty()) {
System.out.println("Ansprechpartner darf nicht leer sein. Bitte erneut eingeben.");
}
} while (ansprechpartner.isEmpty());
kunde.setAnsprechpartner(ansprechpartner);
}
} }

View File

@ -0,0 +1,178 @@
package controller;
import model.Lieferschein;
import model.Angebot;
import model.Auftragsbestaetigung;
import model.Firmenstammdaten;
import model.Kunde;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class LieferscheinController {
private final String ordnerPfad = "lieferscheine";
private KundenController kundenController;
private AngebotController angebotController;
public LieferscheinController() {
kundenController = new KundenController();
angebotController = new AngebotController();
File ordner = new File(ordnerPfad);
if (!ordner.exists()) {
ordner.mkdir();
}
}
private boolean lieferscheinNummerExistiert(int auftragsnummer) {
File xmlDatei = new File(ordnerPfad + "/" + auftragsnummer + ".xml");
return xmlDatei.exists();
}
// Methode zur Generierung einer neuen, eindeutigen Auftragsnummer
private int generiereNeueLieferscheinNummer() {
int neueLieferscheinNummer = 1;
while (lieferscheinNummerExistiert(neueLieferscheinNummer)) {
neueLieferscheinNummer++;
}
return neueLieferscheinNummer;
}
// Methode zum Speichern des Lieferscheins im XML-Format
public void speichereAlsXML(Lieferschein lieferschein) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root-Element
Element rootElement = doc.createElement("Lieferschein");
doc.appendChild(rootElement);
// Lieferscheinnummer-Element
Element lieferscheinnummerElement = doc.createElement("Lieferscheinnummer");
lieferscheinnummerElement.appendChild(doc.createTextNode(Integer.toString(lieferschein.getLieferscheinnummer())));
rootElement.appendChild(lieferscheinnummerElement);
// Ausstellungsdatum-Element
Element ausstellungsdatumElement = doc.createElement("Ausstellungsdatum");
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
ausstellungsdatumElement.appendChild(doc.createTextNode(String.valueOf(lieferschein.getAusstellungsdatum())));
rootElement.appendChild(ausstellungsdatumElement);
// Kunde-Element
Element kundeElement = doc.createElement("Kunde");
kundeElement.appendChild(doc.createTextNode(Integer.toString(lieferschein.getKunde().getKundennummer())));
rootElement.appendChild(kundeElement);
Element angebotElement = doc.createElement("Angebot");
kundeElement.appendChild(doc.createTextNode(Integer.toString(lieferschein.getAngebot().getAngebotnummer())));
rootElement.appendChild(angebotElement);
// Bankinformationen-Element
Element bankinformationenElement = doc.createElement("Bankinformationen");
bankinformationenElement.appendChild(doc.createTextNode(lieferschein.getBankinformationen()));
rootElement.appendChild(bankinformationenElement);
// Transformieren und Speichern in Datei
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(ordnerPfad + "/" + lieferschein.getLieferscheinnummer() + ".xml"));
transformer.transform(source, result);
System.out.println("Lieferschein wurde erfolgreich gespeichert.");
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
// Methode zum Auslesen des Lieferscheins aus einer XML-Datei
public Lieferschein leseAusXML(int lieferscheinnummer) {
try {
File xmlDatei = new File(ordnerPfad + "/" + lieferscheinnummer + ".xml");
if (!xmlDatei.exists()) {
return null;
}
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlDatei);
doc.getDocumentElement().normalize();
Lieferschein lieferschein = new Lieferschein();
NodeList nList = doc.getElementsByTagName("Lieferschein");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
int lieferscheinNummer = Integer.parseInt(eElement.getElementsByTagName("Lieferscheinnummer").item(0).getTextContent());
String ausstellungsDatumStr = eElement.getElementsByTagName("Ausstellungsdatum").item(0).getTextContent();
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
int ausstellungsDatum = Integer.parseInt(ausstellungsDatumStr);
int kundenNummer = Integer.parseInt(eElement.getElementsByTagName("Kunde").item(0).getTextContent());
int angebotsNummer = Integer.parseInt(eElement.getElementsByTagName("Angebot").item(0).getTextContent());
Kunde kunde = kundenController.leseAusXML(kundenNummer);
Angebot angebot= angebotController.leseAusXML(angebotsNummer);
// AuftragsbestaetigungController auftragsbestaetigungController = new AuftragsbestaetigungController();
// Auftragsbestaetigung auftragsbestaetigung = auftragsbestaetigungController.leseAusXML(lieferscheinNummer);
String bankinformation = eElement.getElementsByTagName("Bankinformationen").item(0).getTextContent();
lieferschein.setAusstellungsdatum(ausstellungsDatum);
lieferschein.setBankinformationen(bankinformation);
lieferschein.setAngebot(angebot);
lieferschein.setKunde(kunde);
lieferschein.setLieferscheinnummer(lieferscheinNummer);
return lieferschein;
}
}
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
return null;
}
public Lieferschein erstelleLieferschein(Angebot angebot,Firmenstammdaten firmenstammdaten) {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte geben Sie das Ausstellungsdatum ein: ");
int datum = scanner.nextInt();
Lieferschein lieferschein = new Lieferschein();
lieferschein.setLieferscheinnummer(generiereNeueLieferscheinNummer());
lieferschein.setKunde(angebot.getKunde());
lieferschein.setAusstellungsdatum(datum);
lieferschein.setBankinformationen(firmenstammdaten.getBankname()+"\n"+firmenstammdaten.getIban());
lieferschein.setAngebot(angebot);
lieferschein.setKunde(angebot.getKunde());
// Auftragsbestaetigung auftragsbestaetigung = new Auftragsbestaetigung(angebot, datum);
speichereAlsXML(lieferschein);
return lieferschein;
}
}

View File

@ -1,17 +1,25 @@
package controller; package controller;
import model.Kunde;
public class MainController { public class MainController {
private KundenController kundenController; private KundenController kundenController;
private ArtikelController artikelController; private ArtikelController artikelController;
private FirmenstammdatenController firmenstammdatenController; private FirmenstammdatenController firmenstammdatenController;
private AngebotController angebotController;
private WertschoepfungsketteController wertschoepfungsketteController;
private RechnungController rechnungController;
private LieferscheinController lieferscheinController;
private AuftragsbestaetigungController auftragsbestaetigungController;
public MainController() { public MainController() {
this.kundenController = new KundenController(); this.kundenController = new KundenController();
this.artikelController = new ArtikelController(); this.artikelController = new ArtikelController();
this.firmenstammdatenController = new FirmenstammdatenController(); this.firmenstammdatenController = new FirmenstammdatenController();
this.angebotController = new AngebotController();
this.wertschoepfungsketteController = new WertschoepfungsketteController();
this.rechnungController = new RechnungController();
this.lieferscheinController = new LieferscheinController();
this.auftragsbestaetigungController = new AuftragsbestaetigungController();
} }
public KundenController getKundenController() { public KundenController getKundenController() {
@ -23,10 +31,26 @@ public class MainController {
} }
public FirmenstammdatenController getFirmenstammdatenController() { public FirmenstammdatenController getFirmenstammdatenController() {
return this.firmenstammdatenController; return firmenstammdatenController;
} }
public AngebotController getAngebotController() {
return angebotController;
}
public WertschoepfungsketteController getWertschoepfungsketteController() {
return wertschoepfungsketteController;
}
public RechnungController getRechnungController() {
return rechnungController;
}
public LieferscheinController getLieferscheinController() {
return lieferscheinController;
}
public AuftragsbestaetigungController getAuftragsbestaetigungController() {
return auftragsbestaetigungController;
}
} }

View File

@ -0,0 +1,221 @@
package controller;
import model.Rechnung;
import model.Angebot;
import model.Firmenstammdaten;
import model.Kunde;
import model.Lieferschein;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.util.Scanner;
public class RechnungController {
private final String ordnerPfad = "rechnungen";
private KundenController kundenController;
private AngebotController angebotController;
public RechnungController() {
kundenController = new KundenController();
angebotController = new AngebotController();
File ordner = new File(ordnerPfad);
if (!ordner.exists()) {
ordner.mkdir();
}
}
private boolean rechnungsnummerExistiert(int rechnungsnummer) {
File xmlDatei = new File(ordnerPfad + "/" + rechnungsnummer + ".xml");
return xmlDatei.exists();
}
// Methode zur Generierung einer neuen, eindeutigen Rechnungsnummer
private int generiereNeueRechnungsnummer() {
int neueRechnungsnummer = 1;
while (rechnungsnummerExistiert(neueRechnungsnummer)) {
neueRechnungsnummer++;
}
return neueRechnungsnummer;
}
// Methode zum Speichern der Rechnung im XML-Format
public void speichereAlsXML(Rechnung rechnung) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root-Element
Element rootElement = doc.createElement("Rechnung");
doc.appendChild(rootElement);
// Rechnungsnummer-Element
Element rechnungsnummerElement = doc.createElement("Rechnungsnummer");
rechnungsnummerElement.appendChild(doc.createTextNode(Integer.toString(rechnung.getRechnungsnummer())));
rootElement.appendChild(rechnungsnummerElement);
// Rechnungsdatum-Element
Element rechnungsdatumElement = doc.createElement("Rechnungsdatum");
rechnungsdatumElement.appendChild(doc.createTextNode(String.valueOf(rechnung.getRechnungsdatum())));
rootElement.appendChild(rechnungsdatumElement);
// Lieferart-Element
Element lieferartElement = doc.createElement("Lieferart");
lieferartElement.appendChild(doc.createTextNode(rechnung.getLieferart()));
rootElement.appendChild(lieferartElement);
// Zahlungsfrist-Element
Element zahlungsfristElement = doc.createElement("Zahlungsfrist");
zahlungsfristElement.appendChild(doc.createTextNode(String.valueOf(rechnung.getZahlungsfrist())));
rootElement.appendChild(zahlungsfristElement);
// Firmeninformationen-Element
Element firmeninformationenElement = doc.createElement("Firmeninformationen");
firmeninformationenElement.appendChild(doc.createTextNode(rechnung.getFirmeninformationen()));
rootElement.appendChild(firmeninformationenElement);
// Kunde-Element
Element kundeElement = doc.createElement("Kunde");
rootElement.appendChild(kundeElement);
// Kundennummer-Element
Element kundennummerElement = doc.createElement("Kundennummer");
kundennummerElement.appendChild(doc.createTextNode(Integer.toString(rechnung.getKunde().getKundennummer())));
kundeElement.appendChild(kundennummerElement);
// Angebot-Element
Element angebotElement = doc.createElement("Angebot");
rootElement.appendChild(angebotElement);
// Angebotsnummer-Element
Element angebotsnummerElement = doc.createElement("Angebotsnummer");
angebotsnummerElement.appendChild(doc.createTextNode(Integer.toString(rechnung.getAngebot().getAngebotnummer())));
angebotElement.appendChild(angebotsnummerElement);
// Bankinformationen-Element
Element bankinformationenElement = doc.createElement("Bankinformationen");
bankinformationenElement.appendChild(doc.createTextNode(rechnung.getBankinformationen()));
rootElement.appendChild(bankinformationenElement);
// Transformieren und Speichern in Datei
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(ordnerPfad + "/" + rechnung.getRechnungsnummer() + ".xml"));
transformer.transform(source, result);
System.out.println("Rechnung wurde erfolgreich gespeichert.");
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
// Methode zum Auslesen der Rechnung aus einer XML-Datei
public Rechnung leseAusXML(int rechnungsnummer) {
try {
File xmlDatei = new File(ordnerPfad + "/" + rechnungsnummer + ".xml");
if (!xmlDatei.exists()) {
return null;
}
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlDatei);
doc.getDocumentElement().normalize();
Rechnung rechnung = new Rechnung();
NodeList nList = doc.getElementsByTagName("Rechnung");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
int rechnungsNummer = Integer.parseInt(eElement.getElementsByTagName("Rechnungsnummer").item(0).getTextContent());
String rechnungsDatumStr = eElement.getElementsByTagName("Rechnungsdatum").item(0).getTextContent();
int rechnungsDatum = Integer.parseInt(rechnungsDatumStr);
String lieferart = eElement.getElementsByTagName("Lieferart").item(0).getTextContent();
String zahlungsfristStr = eElement.getElementsByTagName("Zahlungsfrist").item(0).getTextContent();
int zahlungsfrist = Integer.parseInt(zahlungsfristStr);
String firmeninformationen = eElement.getElementsByTagName("Firmeninformationen").item(0).getTextContent();
int kundennummer = Integer.parseInt(eElement.getElementsByTagName("Kundennummer").item(0).getTextContent());
Kunde kunde = kundenController.leseAusXML(kundennummer);
int angebotsnummer = Integer.parseInt(eElement.getElementsByTagName("Angebotsnummer").item(0).getTextContent());
Angebot angebot = angebotController.leseAusXML(angebotsnummer);
String bankinformationen = eElement.getElementsByTagName("Bankinformationen").item(0).getTextContent();
rechnung.setRechnungsnummer(rechnungsNummer);
rechnung.setRechnungsdatum(rechnungsDatum);
rechnung.setLieferart(lieferart);
rechnung.setZahlungsfrist(zahlungsfrist);
rechnung.setFirmeninformationen(firmeninformationen);
rechnung.setKunde(kunde);
rechnung.setAngebot(angebot);
rechnung.setBankinformationen(bankinformationen);
return rechnung;
}
}
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
return null;
}
public Rechnung erstelleRechnung(Angebot angebot, Firmenstammdaten firmenstammdaten) {
Scanner scanner = new Scanner(System.in);
System.out.print("Bitte geben Sie die Lieferart ein: ");
String lieferart = scanner.nextLine();
System.out.print("Bitte geben Sie die Zahlungsfrist ein (yyyyMMdd): ");
int zahlungsfrist = scanner.nextInt();
System.out.print("Bitte geben Sie ein Rechnungsdatum ein (yyyyMMdd): ");
int rechnungsdatum = scanner.nextInt();
Rechnung rechnung = new Rechnung();
rechnung.setRechnungsnummer(generiereNeueRechnungsnummer());
rechnung.setRechnungsdatum(rechnungsdatum);
rechnung.setLieferart(lieferart);
rechnung.setZahlungsfrist(zahlungsfrist);
rechnung.setFirmeninformationen(firmenstammdaten.getFirmenname() + "\n" + firmenstammdaten.getAnschrift().getStrasse() + "\n" +
firmenstammdaten.getAnschrift().getPlz() + " " + firmenstammdaten.getAnschrift().getOrt() + "\n" +
firmenstammdaten.getTelefon() + "\n" + firmenstammdaten.getEmail());
rechnung.setKunde(angebot.getKunde());
rechnung.setAngebot(angebot);
rechnung.setBankinformationen(firmenstammdaten.getBankname() + "\n" + firmenstammdaten.getIban());
speichereAlsXML(rechnung);
return rechnung;
}
}

View File

@ -0,0 +1,197 @@
package controller;
import model.Wertschoepfungskette;
import model.Angebot;
import model.Auftragsbestaetigung;
import model.Lieferschein;
import model.Rechnung;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
public class WertschoepfungsketteController {
private final String ordnerPfad = "wertschoepfungsketten";
public WertschoepfungsketteController() {
File ordner = new File(ordnerPfad);
if (!ordner.exists()) {
ordner.mkdir();
}
}
public void speichereAlsXML(Wertschoepfungskette wertschoepfungskette) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.newDocument();
// Root-Element
Element rootElement = doc.createElement("Wertschoepfungskette");
doc.appendChild(rootElement);
// Angebot
Angebot angebot = wertschoepfungskette.getAngebot();
Element angebotElement = doc.createElement("Angebot");
rootElement.appendChild(angebotElement);
Element angebotnummerElement = doc.createElement("Angebotnummer");
angebotnummerElement.appendChild(doc.createTextNode(Integer.toString(angebot.getAngebotnummer())));
angebotElement.appendChild(angebotnummerElement);
// Auftragsbestaetigung
if (wertschoepfungskette.getAuftragsbestaetigung() != null) {
Auftragsbestaetigung auftragsbestaetigung = wertschoepfungskette.getAuftragsbestaetigung();
Element auftragsElement = doc.createElement("Auftragsbestaetigung");
rootElement.appendChild(auftragsElement);
Element auftragsnummerElement = doc.createElement("Auftragsnummer");
auftragsnummerElement.appendChild(doc.createTextNode(Integer.toString(auftragsbestaetigung.getAuftragsnummer())));
auftragsElement.appendChild(auftragsnummerElement);
}
// Lieferschein
if (wertschoepfungskette.getLieferschein() != null) {
Lieferschein lieferschein = wertschoepfungskette.getLieferschein();
Element lieferscheinElement = doc.createElement("Lieferschein");
rootElement.appendChild(lieferscheinElement);
Element lieferscheinnummerElement = doc.createElement("Lieferscheinnummer");
lieferscheinnummerElement.appendChild(doc.createTextNode(Integer.toString(lieferschein.getLieferscheinnummer())));
lieferscheinElement.appendChild(lieferscheinnummerElement);
}
// Rechnung
if (wertschoepfungskette.getRechnung() != null) {
Rechnung rechnung = wertschoepfungskette.getRechnung();
Element rechnungElement = doc.createElement("Rechnung");
rootElement.appendChild(rechnungElement);
Element rechnungsnummerElement = doc.createElement("Rechnungsnummer");
rechnungsnummerElement.appendChild(doc.createTextNode(Integer.toString(rechnung.getRechnungsnummer())));
rechnungElement.appendChild(rechnungsnummerElement);
}
// Transformieren und Speichern in Datei
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(ordnerPfad + "/" + wertschoepfungskette.getAngebot().getAngebotnummer() + ".xml"));
transformer.transform(source, result);
System.out.println("Wertschoepfungskette wurde erfolgreich gespeichert.");
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
public Wertschoepfungskette leseAusXML(int angebotnummer) {
try {
File xmlDatei = new File(ordnerPfad + "/" + angebotnummer + ".xml");
if (!xmlDatei.exists()) {
return null;
}
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlDatei);
doc.getDocumentElement().normalize();
Wertschoepfungskette wertschoepfungskette = null;
NodeList nList = doc.getElementsByTagName("Wertschoepfungskette");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
// Angebot
Node angebotNode = eElement.getElementsByTagName("Angebot").item(0);
Element angebotElement = (Element) angebotNode;
int angebotNummer = Integer.parseInt(angebotElement.getElementsByTagName("Angebotnummer").item(0).getTextContent());
// Deserialize `Angebot` here...
AngebotController angebotController = new AngebotController();
Angebot angebot = angebotController.leseAusXML(angebotNummer);
wertschoepfungskette = new Wertschoepfungskette(angebot);
// Auftragsbestaetigung
Node auftragsNode = eElement.getElementsByTagName("Auftragsbestaetigung").item(0);
if (auftragsNode != null) {
Element auftragsElement = (Element) auftragsNode;
int auftragsNummer = Integer.parseInt(auftragsElement.getElementsByTagName("Auftragsnummer").item(0).getTextContent());
// Deserialize `Auftragsbestaetigung` here...
AuftragsbestaetigungController auftragsbestaetigungController = new AuftragsbestaetigungController();
Auftragsbestaetigung auftragsbestaetigung = auftragsbestaetigungController.leseAusXML(auftragsNummer);
if (auftragsbestaetigung != null) {
wertschoepfungskette.setAuftragsbestaetigung(auftragsbestaetigung);
}
}
// Lieferschein
Node lieferscheinNode = eElement.getElementsByTagName("Lieferschein").item(0);
if (lieferscheinNode != null) {
Element lieferscheinElement = (Element) lieferscheinNode;
int lieferscheinNummer = Integer.parseInt(lieferscheinElement.getElementsByTagName("Lieferscheinnummer").item(0).getTextContent());
// Deserialize `Lieferschein` here...
LieferscheinController lieferscheinController = new LieferscheinController();
Lieferschein lieferschein = lieferscheinController.leseAusXML(lieferscheinNummer);
if (lieferschein != null) {
wertschoepfungskette.setLieferschein(lieferschein);
}
}
// Rechnung
Node rechnungNode = eElement.getElementsByTagName("Rechnung").item(0);
if (rechnungNode != null) {
Element rechnungElement = (Element) rechnungNode;
int rechnungsNummer = Integer.parseInt(rechnungElement.getElementsByTagName("Rechnungsnummer").item(0).getTextContent());
// Deserialize `Rechnung` here...
RechnungController rechnungController = new RechnungController();
Rechnung rechnung = rechnungController.leseAusXML(rechnungsNummer);
if (rechnung != null) {
wertschoepfungskette.setRechnung(rechnung);
}
}
}
}
System.out.println("Wertschoepfungskette wurde erfolgreich gelesen.");
return wertschoepfungskette;
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
return null;
}
public void erstelleWertschoepfungskette(Angebot angebot) {
Wertschoepfungskette wertschoepfungskette =new Wertschoepfungskette(angebot);
speichereAlsXML(wertschoepfungskette);
}
}

View File

@ -0,0 +1,103 @@
package model;
import java.util.Date;
import java.util.List;
public class Angebot {
private static int aktuelleAngebotnummer = 0;
private int angebotnummer;
private Date erstellungsdatum;
private Kunde kunde;
private List<Artikel> artikelListe;
private List<Integer> menge;
private double summeBrutto;
private double summeNetto;
public Angebot() {
this.angebotnummer = ++aktuelleAngebotnummer;
this.erstellungsdatum = new Date();
}
public static int getAktuelleAngebotnummer() {
return aktuelleAngebotnummer;
}
public static void setAktuelleAngebotnummer(int aktuelleAngebotnummer) {
Angebot.aktuelleAngebotnummer = aktuelleAngebotnummer;
}
public int getAngebotnummer() {
return angebotnummer;
}
public void setAngebotnummer(int angebotnummer) {
this.angebotnummer=angebotnummer;
}
public Date getErstellungsdatum() {
return erstellungsdatum;
}
public Kunde getKunde() {
return kunde;
}
public void setKunde(Kunde kunde) {
this.kunde = kunde;
}
public List<Artikel> getArtikelListe() {
return artikelListe;
}
public void setArtikelListe(List<Artikel> artikelListe) {
this.artikelListe = artikelListe;
}
public List<Integer> getMenge() {
return menge;
}
public void setMenge(List<Integer> menge) {
this.menge = menge;
}
public double getSummeBrutto() {
return summeBrutto;
}
public void setSummeBrutto(double summeBrutto) {
this.summeBrutto = summeBrutto;
}
public double getSummeNetto() {
return summeNetto;
}
public void setSummeNetto(double summeNetto) {
this.summeNetto = summeNetto;
}
public void anzeigen() {
System.out.println("Angebotsnummer: " + angebotnummer);
System.out.println("Erstellungsdatum: " + erstellungsdatum);
System.out.println("Kunde:");
kunde.anzeigen();
System.out.println("Artikel:");
for (int i = 0; i < artikelListe.size(); i++) {
System.out.println(" Artikel: " + artikelListe.get(i).getBezeichnung());
System.out.println(" Menge: " + menge.get(i));
System.out.println(" Nettopreis pro Stück: \t" + String.format("%.2f", artikelListe.get(i).getNettopreis()));
if (!kunde.isIstKleinunternehmer()) {
System.out.println(
" Bruttopeis pro Stück: \t" + String.format("%.2f", artikelListe.get(i).getBruttopreis()));
}
System.out.println(" --------------------------------------");
}
System.out.println("Summe Netto: \t" + String.format("%.2f", summeNetto));
if (!kunde.isIstKleinunternehmer()) {
System.out.println("Summe Brutto: \t" + String.format("%.2f", summeBrutto));
}
}
}

View File

@ -0,0 +1,40 @@
package model;
public class Anschrift {
private String strasse;
private String plz;
private String ort;
public Anschrift() {
}
public Anschrift(String strasse, String plz, String ort) {
this.strasse = strasse;
this.plz = plz;
this.ort = ort;
}
public String getStrasse() {
return strasse;
}
public void setStrasse(String strasse) {
this.strasse = strasse;
}
public String getPlz() {
return plz;
}
public void setPlz(String plz) {
this.plz = plz;
}
public String getOrt() {
return ort;
}
public void setOrt(String ort) {
this.ort = ort;
}
}

View File

@ -7,6 +7,7 @@ public class Artikel {
private String bezeichnung; private String bezeichnung;
private double nettopreis; private double nettopreis;
private double mehrwertsteuersatz; private double mehrwertsteuersatz;
private double bruttopreis;
// Konstruktor // Konstruktor
public Artikel(String einheit, String bezeichnung, double nettopreis, double mehrwertsteuersatz) { public Artikel(String einheit, String bezeichnung, double nettopreis, double mehrwertsteuersatz) {
@ -15,28 +16,27 @@ public class Artikel {
this.bezeichnung = bezeichnung; this.bezeichnung = bezeichnung;
this.nettopreis = nettopreis; this.nettopreis = nettopreis;
this.mehrwertsteuersatz = mehrwertsteuersatz; this.mehrwertsteuersatz = mehrwertsteuersatz;
this.bruttopreis = berechneBruttopreis(nettopreis, mehrwertsteuersatz);
} }
public Artikel(int artikelnummer) { public Artikel(int artikelnummer) {
this.artikelnummer = artikelnummer; this.artikelnummer = artikelnummer;
} }
// Leerer Konstruktor // Leerer Konstruktor
public Artikel() { public Artikel() {
this.artikelnummer = ++aktuelleArtikelnummer; // Vergabe der Artikelnummer und Inkrement this.artikelnummer = ++aktuelleArtikelnummer; // Vergabe der Artikelnummer und Inkrement
} }
public void setArtikelnummer(int artikelnummer) {
this.artikelnummer = artikelnummer;
}
// Getter und Setter // Getter und Setter
public int getArtikelnummer() { public int getArtikelnummer() {
return artikelnummer; return artikelnummer;
} }
public void setArtikelnummer(int artikelnummer) {
this.artikelnummer = artikelnummer;
}
public String getEinheit() { public String getEinheit() {
return einheit; return einheit;
} }
@ -59,6 +59,7 @@ public class Artikel {
public void setNettopreis(double nettopreis) { public void setNettopreis(double nettopreis) {
this.nettopreis = nettopreis; this.nettopreis = nettopreis;
this.bruttopreis = berechneBruttopreis(nettopreis, mehrwertsteuersatz); // Update bruttopreis
} }
public double getMehrwertsteuersatz() { public double getMehrwertsteuersatz() {
@ -67,6 +68,20 @@ public class Artikel {
public void setMehrwertsteuersatz(double mehrwertsteuersatz) { public void setMehrwertsteuersatz(double mehrwertsteuersatz) {
this.mehrwertsteuersatz = mehrwertsteuersatz; this.mehrwertsteuersatz = mehrwertsteuersatz;
this.bruttopreis = berechneBruttopreis(nettopreis, mehrwertsteuersatz); // Update bruttopreis
}
public double getBruttopreis() {
return bruttopreis;
}
public void setBruttopreis(double bruttopreis) {
this.bruttopreis = bruttopreis;
}
// Methode zur Berechnung des Bruttopreises
private double berechneBruttopreis(double nettopreis, double mehrwertsteuersatz) {
return nettopreis + (nettopreis * mehrwertsteuersatz / 100);
} }
// Methode zum Anzeigen der Artikeldaten // Methode zum Anzeigen der Artikeldaten
@ -76,5 +91,6 @@ public class Artikel {
System.out.println("Bezeichnung: " + bezeichnung); System.out.println("Bezeichnung: " + bezeichnung);
System.out.println("Nettopreis: " + nettopreis); System.out.println("Nettopreis: " + nettopreis);
System.out.println("Mehrwertsteuersatz: " + mehrwertsteuersatz); System.out.println("Mehrwertsteuersatz: " + mehrwertsteuersatz);
System.out.println("Bruttopreis: " + bruttopreis);
} }
} }

View File

@ -0,0 +1,53 @@
package model;
import java.util.Date;
public class Auftragsbestaetigung {
private static int aktuelleAuftragsnummer = 0;
private int auftragsnummer;
private int auftragsdatum;
private Angebot angebot;
public Auftragsbestaetigung() {
// this.auftragsnummer = ++aktuelleAuftragsnummer;
// this.auftragsdatum = new Date();
}
public Auftragsbestaetigung(int auftragsnummer, Angebot angebot,int datum) {
this.auftragsnummer = auftragsnummer;
this.auftragsdatum = datum;
this.angebot = angebot;
}
public int getAuftragsnummer() {
return auftragsnummer;
}
public void setAuftragsnummer(int auftragsnummer) {
this.auftragsnummer = auftragsnummer;
}
public int getAuftragsdatum() {
return auftragsdatum;
}
public void setAuftragsdatum(int auftragsdatum) {
this.auftragsdatum = auftragsdatum;
}
public Angebot getAngebot() {
return angebot;
}
public void setAngebot(Angebot angebot) {
this.angebot = angebot;
}
public void anzeigen() {
System.out.println("Auftragsnummer: " + auftragsnummer);
System.out.println("Auftragsdatum: " + auftragsdatum);
System.out.println("Angebot:");
angebot.anzeigen();
}
}

View File

@ -3,10 +3,7 @@ package model;
public class Firmenstammdaten { public class Firmenstammdaten {
private String firmenname; private String firmenname;
private String inhaber; private String inhaber;
private String strasse; private Anschrift anschrift; // Verwendung der Anschrift-Klasse
private String plz;
private String stadt;
private String land;
private String telefon; private String telefon;
private String mobilnummer; private String mobilnummer;
private String telefax; private String telefax;
@ -21,54 +18,115 @@ public class Firmenstammdaten {
// Getter und Setter für alle Attribute // Getter und Setter für alle Attribute
public String getFirmenname() { return firmenname; } public String getFirmenname() {
public void setFirmenname(String firmenname) { this.firmenname = firmenname; } return firmenname;
}
public String getInhaber() { return inhaber; } public void setFirmenname(String firmenname) {
public void setInhaber(String inhaber) { this.inhaber = inhaber; } this.firmenname = firmenname;
}
public String getStrasse() { return strasse; } public String getInhaber() {
public void setStrasse(String strasse) { this.strasse = strasse; } return inhaber;
}
public String getPlz() { return plz; } public void setInhaber(String inhaber) {
public void setPlz(String plz) { this.plz = plz; } this.inhaber = inhaber;
}
public String getStadt() { return stadt; } public Anschrift getAnschrift() {
public void setStadt(String stadt) { this.stadt = stadt; } return anschrift;
}
public String getLand() { return land; } public void setAnschrift(Anschrift anschrift) {
public void setLand(String land) { this.land = land; } this.anschrift = anschrift;
}
public String getTelefon() { return telefon; } public String getTelefon() {
public void setTelefon(String telefon) { this.telefon = telefon; } return telefon;
}
public String getMobilnummer() { return mobilnummer; } public void setTelefon(String telefon) {
public void setMobilnummer(String mobilnummer) { this.mobilnummer = mobilnummer; } this.telefon = telefon;
}
public String getTelefax() { return telefax; } public String getMobilnummer() {
public void setTelefax(String telefax) { this.telefax = telefax; } return mobilnummer;
}
public String getEmail() { return email; } public void setMobilnummer(String mobilnummer) {
public void setEmail(String email) { this.email = email; } this.mobilnummer = mobilnummer;
}
public String getWebseite() { return webseite; } public String getTelefax() {
public void setWebseite(String webseite) { this.webseite = webseite; } return telefax;
}
public String getUmsatzsteuerIdNummer() { return umsatzsteuerIdNummer; } public void setTelefax(String telefax) {
public void setUmsatzsteuerIdNummer(String umsatzsteuerIdNummer) { this.umsatzsteuerIdNummer = umsatzsteuerIdNummer; } this.telefax = telefax;
}
public String getFinanzamt() { return finanzamt; } public String getEmail() {
public void setFinanzamt(String finanzamt) { this.finanzamt = finanzamt; } return email;
}
public String getBankname() { return bankname; } public void setEmail(String email) {
public void setBankname(String bankname) { this.bankname = bankname; } this.email = email;
}
public String getIban() { return iban; } public String getWebseite() {
public void setIban(String iban) { this.iban = iban; } return webseite;
}
public String getBic() { return bic; } public void setWebseite(String webseite) {
public void setBic(String bic) { this.bic = bic; } this.webseite = webseite;
}
public String getGlaeubigerID() { return glaeubigerID; } public String getUmsatzsteuerIdNummer() {
public void setGlaeubigerID(String glaeubigerID) { this.glaeubigerID = glaeubigerID; } return umsatzsteuerIdNummer;
}
public void setUmsatzsteuerIdNummer(String umsatzsteuerIdNummer) {
this.umsatzsteuerIdNummer = umsatzsteuerIdNummer;
}
public String getFinanzamt() {
return finanzamt;
}
public void setFinanzamt(String finanzamt) {
this.finanzamt = finanzamt;
}
public String getBankname() {
return bankname;
}
public void setBankname(String bankname) {
this.bankname = bankname;
}
public String getIban() {
return iban;
}
public void setIban(String iban) {
this.iban = iban;
}
public String getBic() {
return bic;
}
public void setBic(String bic) {
this.bic = bic;
}
public String getGlaeubigerID() {
return glaeubigerID;
}
public void setGlaeubigerID(String glaeubigerID) {
this.glaeubigerID = glaeubigerID;
}
} }

View File

@ -4,15 +4,14 @@ public class Kunde {
private static int aktuelleKundennummer = 0; // Statische Variable für fortlaufende Kundennummer private static int aktuelleKundennummer = 0; // Statische Variable für fortlaufende Kundennummer
private int kundennummer; private int kundennummer;
private String name; private String name;
private String anschrift; private Anschrift anschrift;
// Straße - PLZ - Ort
private String email; private String email;
private String telefonnummer; private String telefonnummer;
private boolean istKleinunternehmer; private boolean istKleinunternehmer;
private String ansprechpartner; private String ansprechpartner;
// Konstruktor // Konstruktor
public Kunde(String name, String anschrift, String email, String telefonnummer, boolean istKleinunternehmer, public Kunde(String name, Anschrift anschrift, String email, String telefonnummer, boolean istKleinunternehmer,
String ansprechpartner) { String ansprechpartner) {
this.kundennummer = ++aktuelleKundennummer; // Vergabe der Kundennummer und Inkrement this.kundennummer = ++aktuelleKundennummer; // Vergabe der Kundennummer und Inkrement
this.name = name; this.name = name;
@ -49,11 +48,11 @@ public class Kunde {
this.name = name; this.name = name;
} }
public String getAnschrift() { public Anschrift getAnschrift() {
return anschrift; return anschrift;
} }
public void setAnschrift(String anschrift) { public void setAnschrift(Anschrift anschrift) {
this.anschrift = anschrift; this.anschrift = anschrift;
} }
@ -93,7 +92,10 @@ public class Kunde {
public void anzeigen() { public void anzeigen() {
System.out.println("Kundennummer: " + kundennummer); System.out.println("Kundennummer: " + kundennummer);
System.out.println("Name: " + name); System.out.println("Name: " + name);
System.out.println("Anschrift: " + anschrift); System.out.println("Anschrift: ");
System.out.println(" Straße: " + anschrift.getStrasse());
System.out.println(" PLZ: " + anschrift.getPlz());
System.out.println(" Ort: " + anschrift.getOrt());
System.out.println("Email: " + email); System.out.println("Email: " + email);
System.out.println("Telefonnummer: " + telefonnummer); System.out.println("Telefonnummer: " + telefonnummer);
System.out.println("Kleinunternehmer: " + (istKleinunternehmer ? "Ja" : "Nein")); System.out.println("Kleinunternehmer: " + (istKleinunternehmer ? "Ja" : "Nein"));

View File

@ -0,0 +1,76 @@
package model;
import java.util.Date;
import java.util.List;
public class Lieferschein {
private static int aktuelleLieferscheinnummer = 0;
private int lieferscheinnummer;
private int ausstellungsdatum;
private String bankinformationen;
private Kunde kunde;
private Angebot angebot;
public Lieferschein() {
}
public int getLieferscheinnummer() {
return lieferscheinnummer;
}
public int getAusstellungsdatum() {
return ausstellungsdatum;
}
public void setAusstellungsdatum(int ausstellungsdatum) {
this.ausstellungsdatum = ausstellungsdatum;
}
public void setLieferscheinnummer(int lieferscheinnummer) {
this.lieferscheinnummer = lieferscheinnummer;
}
public void setBankinformationen(String bankinformationen) {
this.bankinformationen = bankinformationen;
}
public void setKunde(Kunde kunde) {
this.kunde = kunde;
}
public String getBankinformationen() {
return bankinformationen;
}
public Kunde getKunde() {
return kunde;
}
public Angebot getAngebot() {
return angebot;
}
public void setAngebot(Angebot angebot) {
this.angebot = angebot;
}
public void anzeigen() {
System.out.println("Lieferscheinnummer: " + lieferscheinnummer);
System.out.println("Ausstellungsdatum: " + ausstellungsdatum);
System.out.println("Bankinformationen: " + bankinformationen);
System.out.println("Kunde:");
kunde.anzeigen();
System.out.println("Artikel:");
for (int i = 0; i < angebot.getArtikelListe().size(); i++) {
System.out.println(" Artikel: " + angebot.getArtikelListe().get(i).getBezeichnung());
System.out.println(" Menge: " + angebot.getMenge().get(i));
System.out.println(" --------------------------------------");
}
}
}

View File

@ -0,0 +1,111 @@
package model;
import java.util.Date;
import java.util.List;
public class Rechnung {
private static int aktuelleRechnungsnummer = 0;
private int rechnungsnummer;
private int rechnungsdatum;
private String lieferart;
private int zahlungsfrist;
private String firmeninformationen;
private Kunde kunde;
private Angebot angebot;
private String bankinformationen;
public Rechnung(Lieferschein lieferschein, String lieferart, Date zahlungsfrist, String firmeninformationen) {
this.rechnungsnummer = ++aktuelleRechnungsnummer;
this.lieferart = lieferart;
this.firmeninformationen = firmeninformationen;
this.kunde = lieferschein.getKunde();
this.angebot=lieferschein.getAngebot();
this.bankinformationen = lieferschein.getBankinformationen();
}
public Rechnung() {
}
public Angebot getAngebot() {
return angebot;
}
public void setAngebot(Angebot angebot) {
this.angebot = angebot;
}
public void setRechnungsnummer(int rechnungsnummer) {
this.rechnungsnummer = rechnungsnummer;
}
public void setLieferart(String lieferart) {
this.lieferart = lieferart;
}
public void setZahlungsfrist(int zahlungsfrist) {
this.zahlungsfrist = zahlungsfrist;
}
public void setFirmeninformationen(String firmeninformationen) {
this.firmeninformationen = firmeninformationen;
}
public void setKunde(Kunde kunde) {
this.kunde = kunde;
}
public void setBankinformationen(String bankinformationen) {
this.bankinformationen = bankinformationen;
}
public int getRechnungsnummer() {
return rechnungsnummer;
}
public int getRechnungsdatum() {
return rechnungsdatum;
}
public void setRechnungsdatum(int rechnungsdatum) {
this.rechnungsdatum = rechnungsdatum;
}
public String getLieferart() {
return lieferart;
}
public int getZahlungsfrist() {
return zahlungsfrist;
}
public String getFirmeninformationen() {
return firmeninformationen;
}
public Kunde getKunde() {
return kunde;
}
public String getBankinformationen() {
return bankinformationen;
}
public void anzeigen() {
System.out.println("Rechnungsnummer: " + rechnungsnummer);
System.out.println("Rechnungsdatum: " + rechnungsdatum);
System.out.println("Lieferart: " + lieferart);
System.out.println("Zahlungsfrist: " + zahlungsfrist);
System.out.println("Firmeninformationen: " + firmeninformationen);
System.out.println("Bankinformationen: " + bankinformationen);
System.out.println("Kunde:");
kunde.anzeigen();
System.out.println("Artikel:");
for (int i = 0; i < angebot.getArtikelListe().size(); i++) {
System.out.println(" Artikel: " + angebot.getArtikelListe().get(i).getBezeichnung());
System.out.println(" Menge: " + angebot.getMenge().get(i));
System.out.println(" --------------------------------------");
}
}
}

View File

@ -0,0 +1,61 @@
package model;
import java.util.Date;
public class Wertschoepfungskette {
private Angebot angebot;
private Auftragsbestaetigung auftragsbestaetigung;
private Lieferschein lieferschein;
private Rechnung rechnung;
public Wertschoepfungskette(Angebot angebot) {
this.angebot =angebot;
}
public void setAngebot(Angebot angebot) {
this.angebot = angebot;
}
public void setAuftragsbestaetigung(Auftragsbestaetigung auftragsbestaetigung) {
this.auftragsbestaetigung = auftragsbestaetigung;
}
public void setLieferschein(Lieferschein lieferschein) {
this.lieferschein = lieferschein;
}
public void setRechnung(Rechnung rechnung) {
this.rechnung = rechnung;
}
public void zeigeStatus() {
if (this.angebot != null) {
System.out.println("Status: Angebot erstellt");
}
if (this.auftragsbestaetigung != null) {
System.out.println("Status: Auftragsbestätigung erstellt");
}
if (this.lieferschein != null) {
System.out.println("Status: Lieferschein erstellt");
}
if (this.rechnung != null) {
System.out.println("Status: Rechnung erstellt");
}
}
public Angebot getAngebot() {
return angebot;
}
public Auftragsbestaetigung getAuftragsbestaetigung() {
return auftragsbestaetigung;
}
public Lieferschein getLieferschein() {
return lieferschein;
}
public Rechnung getRechnung() {
return rechnung;
}
}

View File

@ -2,11 +2,17 @@ package view;
import java.util.Scanner; import java.util.Scanner;
import controller.ArtikelController; import controller.AuftragsbestaetigungController;
import controller.KundenController; import controller.FirmenstammdatenController;
import controller.LieferscheinController;
import controller.MainController; import controller.MainController;
import controller.RechnungController;
import controller.WertschoepfungsketteController;
import model.Angebot;
import model.Artikel; import model.Artikel;
import model.Firmenstammdaten;
import model.Kunde; import model.Kunde;
import model.Wertschoepfungskette;
public class StartUpMenue { public class StartUpMenue {
@ -14,8 +20,8 @@ public class StartUpMenue {
public StartUpMenue(MainController mainController) { public StartUpMenue(MainController mainController) {
this.mainController = mainController; this.mainController = mainController;
this.showMenu();
this.showMenu();
} }
public void showMenu() { public void showMenu() {
@ -32,6 +38,8 @@ public class StartUpMenue {
System.out.println("2. Kundenstammdaten ansehen"); System.out.println("2. Kundenstammdaten ansehen");
System.out.println("3. Artikel anlegen"); System.out.println("3. Artikel anlegen");
System.out.println("4. Artikelstammdaten ansehen"); System.out.println("4. Artikelstammdaten ansehen");
System.out.println("5. Angebot erstellen");
System.out.println("6. Angebot/Wertschöpfungskette anzeigen");
System.out.println("9. Programm beenden"); System.out.println("9. Programm beenden");
try { try {
@ -39,7 +47,6 @@ public class StartUpMenue {
switch (choice) { switch (choice) {
case 1: case 1:
Kunde kunde = new Kunde(); Kunde kunde = new Kunde();
this.mainController.getKundenController().eingabeDaten(kunde, scanner); this.mainController.getKundenController().eingabeDaten(kunde, scanner);
this.mainController.getKundenController().speichereAlsXML(kunde); this.mainController.getKundenController().speichereAlsXML(kunde);
break; break;
@ -48,11 +55,9 @@ public class StartUpMenue {
int kundenWahl = Integer.parseInt(scanner.nextLine()); int kundenWahl = Integer.parseInt(scanner.nextLine());
Kunde kunde1 = this.mainController.getKundenController().leseAusXML(kundenWahl); Kunde kunde1 = this.mainController.getKundenController().leseAusXML(kundenWahl);
kunde1.anzeigen(); kunde1.anzeigen();
break; break;
case 3: case 3:
Artikel artikel = new Artikel(); Artikel artikel = new Artikel();
this.mainController.getArtikelController().eingabeDaten(artikel, scanner); this.mainController.getArtikelController().eingabeDaten(artikel, scanner);
this.mainController.getArtikelController().speichereAlsXML(artikel); this.mainController.getArtikelController().speichereAlsXML(artikel);
break; break;
@ -61,7 +66,94 @@ public class StartUpMenue {
int artikelWahl = Integer.parseInt(scanner.nextLine()); int artikelWahl = Integer.parseInt(scanner.nextLine());
Artikel artikel1 = this.mainController.getArtikelController().leseAusXML(artikelWahl); Artikel artikel1 = this.mainController.getArtikelController().leseAusXML(artikelWahl);
artikel1.anzeigen(); artikel1.anzeigen();
// MainController.viewArticleData(); break;
case 5:
Angebot angebot = this.mainController.getAngebotController().erstelleAngebot();
this.mainController.getWertschoepfungsketteController().erstelleWertschoepfungskette(angebot);
break;
case 6:
System.out.println("Angebotsnummer eingeben:");
int angebotsNummer = Integer.parseInt(scanner.nextLine());
Wertschoepfungskette wertschoepfungskette = this.mainController.getWertschoepfungsketteController().leseAusXML(angebotsNummer);
if (wertschoepfungskette != null) {
wertschoepfungskette.zeigeStatus();
int choice1=0;
while(choice1!=9) {
System.out.println("Bitte wählen Sie eine Option:");
System.out.println("1. Angebot anzeigen");
if(wertschoepfungskette.getAuftragsbestaetigung()!= null) {
System.out.println("2. Auftragsbestätigung ansehen");
}
else {
System.out.println("2. Auftragsbestätigung anlegen");
}
if(wertschoepfungskette.getLieferschein()!= null) {
System.out.println("3. Lieferschein ansehen");
}
else {
System.out.println("3. Lieferschein anlegen");
}
if(wertschoepfungskette.getRechnung()!= null) {
System.out.println("4. Rechnung ansehen");
}
else {
System.out.println("4. Rechnung anlegen");
}
System.out.println("9. Zurück zum Hauptmenü");
choice1 = Integer.parseInt(scanner.nextLine());
switch(choice1) {
case 1:
wertschoepfungskette.getAngebot().anzeigen();
break;
case 2:
if(wertschoepfungskette.getAuftragsbestaetigung()!= null) {
wertschoepfungskette.getAuftragsbestaetigung().anzeigen();
}
else {
AuftragsbestaetigungController auftragsbestaetigungController = new AuftragsbestaetigungController();
wertschoepfungskette.setAuftragsbestaetigung(auftragsbestaetigungController.erstelleAuftragsbestaetigung(wertschoepfungskette.getAngebot()));
this.mainController.getWertschoepfungsketteController().speichereAlsXML(wertschoepfungskette);
}
break;
case 3:
if(wertschoepfungskette.getLieferschein()!= null) {
wertschoepfungskette.getLieferschein().anzeigen();
}
else {
LieferscheinController lieferscheinController = new LieferscheinController();
FirmenstammdatenController firmenstammdaten = new FirmenstammdatenController();
wertschoepfungskette.setLieferschein(lieferscheinController.erstelleLieferschein(wertschoepfungskette.getAngebot(),firmenstammdaten.leseAusXML()));
this.mainController.getWertschoepfungsketteController().speichereAlsXML(wertschoepfungskette);
}
break;
case 4:
if(wertschoepfungskette.getRechnung()!= null) {
wertschoepfungskette.getRechnung().anzeigen();
}
else {
RechnungController rechnungController = new RechnungController();
FirmenstammdatenController firmenstammdaten = new FirmenstammdatenController();
wertschoepfungskette.setRechnung(rechnungController.erstelleRechnung(wertschoepfungskette.getAngebot(),firmenstammdaten.leseAusXML()));
this.mainController.getWertschoepfungsketteController().speichereAlsXML(wertschoepfungskette);
}
break;
case 9:
System.out.println("Zurück um Hauptmenü");
break;
}
}
} else {
System.out.println("Angebot nicht gefunden.");
}
break; break;
case 9: case 9:
System.out.println("Programm wird beendet."); System.out.println("Programm wird beendet.");