diff --git a/Faktura_Gruppe5/firmenstammdaten.xml b/Faktura_Gruppe5/firmenstammdaten.xml index 7aabcd0..2835d49 100644 --- a/Faktura_Gruppe5/firmenstammdaten.xml +++ b/Faktura_Gruppe5/firmenstammdaten.xml @@ -2,10 +2,12 @@ Denis Denis - Musterweg 1 - 83636 - Mannheim - Deutschland + + Musterweg 1 + 83636 + Mannheim + Deutschland + 026373344 02237353353 03736376363533 diff --git a/Faktura_Gruppe5/src/controller/ArtikelController.java b/Faktura_Gruppe5/src/controller/ArtikelController.java index d151524..5a6e9bd 100644 --- a/Faktura_Gruppe5/src/controller/ArtikelController.java +++ b/Faktura_Gruppe5/src/controller/ArtikelController.java @@ -41,7 +41,7 @@ public class ArtikelController { } // Methode zur Generierung einer neuen, eindeutigen Artikelnummer - private int generiereNeueArtikelnummer() { + public int generiereNeueArtikelnummer() { int neueArtikelnummer = 1; while (artikelnummerExistiert(neueArtikelnummer)) { neueArtikelnummer++; diff --git a/Faktura_Gruppe5/src/controller/KundenController.java b/Faktura_Gruppe5/src/controller/KundenController.java index 53d13a8..d44bc7e 100644 --- a/Faktura_Gruppe5/src/controller/KundenController.java +++ b/Faktura_Gruppe5/src/controller/KundenController.java @@ -42,7 +42,7 @@ public class KundenController { } // Methode zur Generierung einer neuen, eindeutigen Kundennummer - private int generiereNeueKundennummer() { + public int generiereNeueKundennummer() { int neueKundennummer = 1; while (kundennummerExistiert(neueKundennummer)) { neueKundennummer++; diff --git a/Faktura_Gruppe5/src/view/StartUpMenueGUI.java b/Faktura_Gruppe5/src/view/StartUpMenueGUI.java new file mode 100644 index 0000000..5f646d7 --- /dev/null +++ b/Faktura_Gruppe5/src/view/StartUpMenueGUI.java @@ -0,0 +1,323 @@ +package view; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.*; + +import controller.AuftragsbestaetigungController; +import controller.FirmenstammdatenController; +import controller.LieferscheinController; +import controller.MainController; +import controller.RechnungController; +import model.Angebot; +import model.Artikel; +import model.Firmenstammdaten; +import model.Kunde; +import model.Wertschoepfungskette; +import model.Anschrift; + +public class StartUpMenueGUI extends JFrame { + private MainController mainController; + + public StartUpMenueGUI(MainController mainController) { + this.mainController = mainController; + this.setTitle("Kunden- und Artikelverwaltungssystem"); + this.setSize(600, 400); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.initComponents(); + } + + private void initComponents() { + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + + JButton kundeAnlegenButton = new JButton("Kunde anlegen"); + kundeAnlegenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + kundeAnlegen(); + } + }); + + JButton kundenstammdatenAnsehenButton = new JButton("Kundenstammdaten ansehen"); + kundenstammdatenAnsehenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + kundenstammdatenAnsehen(); + } + }); + + JButton artikelAnlegenButton = new JButton("Artikel anlegen"); + artikelAnlegenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + artikelAnlegen(); + } + }); + + JButton artikelstammdatenAnsehenButton = new JButton("Artikelstammdaten ansehen"); + artikelstammdatenAnsehenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + artikelstammdatenAnsehen(); + } + }); + + JButton angebotErstellenButton = new JButton("Angebot erstellen"); + angebotErstellenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + angebotErstellen(); + } + }); + + JButton wertschoepfungsketteAnsehenButton = new JButton("Angebot/Wertschöpfungskette anzeigen"); + wertschoepfungsketteAnsehenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + wertschoepfungsketteAnsehen(); + } + }); + + JButton programmBeendenButton = new JButton("Programm beenden"); + programmBeendenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + System.exit(0); + } + }); + + panel.add(kundeAnlegenButton); + panel.add(kundenstammdatenAnsehenButton); + panel.add(artikelAnlegenButton); + panel.add(artikelstammdatenAnsehenButton); + panel.add(angebotErstellenButton); + panel.add(wertschoepfungsketteAnsehenButton); + panel.add(programmBeendenButton); + + this.add(panel); + } + + private void kundeAnlegen() { + JTextField nameField = new JTextField(20); + JTextField strasseField = new JTextField(20); + JTextField plzField = new JTextField(5); + JTextField ortField = new JTextField(20); + JTextField emailField = new JTextField(20); + JTextField telefonnummerField = new JTextField(20); + JCheckBox istKleinunternehmerBox = new JCheckBox(); + JTextField ansprechpartnerField = new JTextField(20); + + JPanel panel = new JPanel(new GridLayout(0, 2)); + panel.add(new JLabel("Name:")); + panel.add(nameField); + panel.add(new JLabel("Straße:")); + panel.add(strasseField); + panel.add(new JLabel("PLZ:")); + panel.add(plzField); + panel.add(new JLabel("Ort:")); + panel.add(ortField); + panel.add(new JLabel("Email:")); + panel.add(emailField); + panel.add(new JLabel("Telefonnummer:")); + panel.add(telefonnummerField); + panel.add(new JLabel("Ist Kleinunternehmer:")); + panel.add(istKleinunternehmerBox); + panel.add(new JLabel("Ansprechpartner:")); + panel.add(ansprechpartnerField); + + int result = JOptionPane.showConfirmDialog(null, panel, "Kunde anlegen", JOptionPane.OK_CANCEL_OPTION); + if (result == JOptionPane.OK_OPTION) { + Anschrift anschrift = new Anschrift(strasseField.getText(), plzField.getText(), ortField.getText()); + Kunde kunde = new Kunde(nameField.getText(), anschrift, emailField.getText(), telefonnummerField.getText(), istKleinunternehmerBox.isSelected(), ansprechpartnerField.getText()); + +// // Überprüfen, ob die Kundennummer bereits existiert +// while (mainController.getKundenController().leseAusXML(kunde.getKundennummer()) != null) { +// kunde.setKundennummer(mainController.getKundenController().generiereNeueKundennummer()); +// } + + mainController.getKundenController().speichereAlsXML(kunde); + JOptionPane.showMessageDialog(this, "Kunde erfolgreich angelegt.", "Erfolg", JOptionPane.INFORMATION_MESSAGE); + } + } + + private void kundenstammdatenAnsehen() { + String kundennummerStr = JOptionPane.showInputDialog("Kundennummer eingeben:"); + if (kundennummerStr != null) { + int kundennummer = Integer.parseInt(kundennummerStr); + Kunde kunde = this.mainController.getKundenController().leseAusXML(kundennummer); + if (kunde != null) { + kunde.anzeigen(); + } else { + JOptionPane.showMessageDialog(this, "Kunde nicht gefunden.", "Fehler", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void artikelAnlegen() { + JTextField bezeichnungField = new JTextField(20); + JTextField einheitField = new JTextField(20); + JTextField nettopreisField = new JTextField(20); + JTextField mehrwertsteuersatzField = new JTextField(20); + + JPanel panel = new JPanel(new GridLayout(0, 2)); + panel.add(new JLabel("Bezeichnung:")); + panel.add(bezeichnungField); + panel.add(new JLabel("Einheit:")); + panel.add(einheitField); + panel.add(new JLabel("Nettopreis:")); + panel.add(nettopreisField); + panel.add(new JLabel("Mehrwertsteuersatz:")); + panel.add(mehrwertsteuersatzField); + + int result = JOptionPane.showConfirmDialog(null, panel, "Artikel anlegen", JOptionPane.OK_CANCEL_OPTION); + if (result == JOptionPane.OK_OPTION) { + Artikel artikel = new Artikel(einheitField.getText(), bezeichnungField.getText(), Double.parseDouble(nettopreisField.getText()), Double.parseDouble(mehrwertsteuersatzField.getText())); + + // Überprüfen, ob die Artikelnummer bereits existiert + while (mainController.getArtikelController().leseAusXML(artikel.getArtikelnummer()) != null) { + artikel.setArtikelnummer(mainController.getArtikelController().generiereNeueArtikelnummer()); + } + + mainController.getArtikelController().speichereAlsXML(artikel); + JOptionPane.showMessageDialog(this, "Artikel erfolgreich angelegt.", "Erfolg", JOptionPane.INFORMATION_MESSAGE); + } + } + + private void artikelstammdatenAnsehen() { + String artikelnummerStr = JOptionPane.showInputDialog("Artikelnummer eingeben:"); + if (artikelnummerStr != null) { + int artikelnummer = Integer.parseInt(artikelnummerStr); + Artikel artikel = this.mainController.getArtikelController().leseAusXML(artikelnummer); + if (artikel != null) { + artikel.anzeigen(); + } else { + JOptionPane.showMessageDialog(this, "Artikel nicht gefunden.", "Fehler", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void angebotErstellen() { + Angebot angebot = this.mainController.getAngebotController().erstelleAngebot(); + this.mainController.getWertschoepfungsketteController().erstelleWertschoepfungskette(angebot); + } + + private void wertschoepfungsketteAnsehen() { + String angebotsnummerStr = JOptionPane.showInputDialog("Angebotsnummer eingeben:"); + if (angebotsnummerStr != null) { + int angebotsnummer = Integer.parseInt(angebotsnummerStr); + Wertschoepfungskette wertschoepfungskette = this.mainController.getWertschoepfungsketteController().leseAusXML(angebotsnummer); + if (wertschoepfungskette != null) { + wertschoepfungskette.zeigeStatus(); + wertschoepfungsketteDialog(wertschoepfungskette); + } else { + JOptionPane.showMessageDialog(this, "Angebot nicht gefunden.", "Fehler", JOptionPane.ERROR_MESSAGE); + } + } + } + + private void wertschoepfungsketteDialog(Wertschoepfungskette wertschoepfungskette) { + JFrame frame = new JFrame("Wertschöpfungskette anzeigen"); + frame.setSize(600, 400); + + JPanel panel = new JPanel(); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + + JButton angebotAnzeigenButton = new JButton("Angebot anzeigen"); + angebotAnzeigenButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + wertschoepfungskette.getAngebot().anzeigen(); + } + }); + + JButton auftragsbestaetigungButton; + if (wertschoepfungskette.getAuftragsbestaetigung() != null) { + auftragsbestaetigungButton = new JButton("Auftragsbestätigung ansehen"); + auftragsbestaetigungButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + wertschoepfungskette.getAuftragsbestaetigung().anzeigen(); + } + }); + } else { + auftragsbestaetigungButton = new JButton("Auftragsbestätigung anlegen"); + auftragsbestaetigungButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + AuftragsbestaetigungController auftragsbestaetigungController = new AuftragsbestaetigungController(); + wertschoepfungskette.setAuftragsbestaetigung(auftragsbestaetigungController.erstelleAuftragsbestaetigung(wertschoepfungskette.getAngebot())); + mainController.getWertschoepfungsketteController().speichereAlsXML(wertschoepfungskette); + } + }); + } + + JButton lieferscheinButton; + if (wertschoepfungskette.getLieferschein() != null) { + lieferscheinButton = new JButton("Lieferschein ansehen"); + lieferscheinButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + wertschoepfungskette.getLieferschein().anzeigen(); + } + }); + } else { + lieferscheinButton = new JButton("Lieferschein anlegen"); + lieferscheinButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + LieferscheinController lieferscheinController = new LieferscheinController(); + FirmenstammdatenController firmenstammdaten = new FirmenstammdatenController(); + wertschoepfungskette.setLieferschein(lieferscheinController.erstelleLieferschein(wertschoepfungskette.getAngebot(), firmenstammdaten.leseAusXML())); + mainController.getWertschoepfungsketteController().speichereAlsXML(wertschoepfungskette); + } + }); + } + + JButton rechnungButton; + if (wertschoepfungskette.getRechnung() != null) { + rechnungButton = new JButton("Rechnung ansehen"); + rechnungButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + wertschoepfungskette.getRechnung().anzeigen(); + } + }); + } else { + rechnungButton = new JButton("Rechnung anlegen"); + rechnungButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + RechnungController rechnungController = new RechnungController(); + FirmenstammdatenController firmenstammdaten = new FirmenstammdatenController(); + wertschoepfungskette.setRechnung(rechnungController.erstelleRechnung(wertschoepfungskette.getAngebot(), firmenstammdaten.leseAusXML())); + mainController.getWertschoepfungsketteController().speichereAlsXML(wertschoepfungskette); + } + }); + } + + JButton zurueckButton = new JButton("Zurück zum Hauptmenü"); + zurueckButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + frame.dispose(); + } + }); + + panel.add(angebotAnzeigenButton); + panel.add(auftragsbestaetigungButton); + panel.add(lieferscheinButton); + panel.add(rechnungButton); + panel.add(zurueckButton); + + frame.add(panel); + frame.setVisible(true); + } + + public static void main(String[] args) { + MainController mainController = new MainController(); + StartUpMenueGUI gui = new StartUpMenueGUI(mainController); + gui.setVisible(true); + } +}