Gruppe L: Bestandsmanagement hinzugefuegt
parent
8bc28a7b5e
commit
ca66a4685d
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"java.project.sourcePaths": ["src/main/java"],
|
||||
"java.project.outputPath": "out"
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
K-000002;Ref GmbH;Str. 1;68163;Mannheim;DE111111111;ref@ref.de;0621-111111;;AKTIV
|
||||
K-000003;Muster GmbH;Hauptstr. 1;68163;Mannheim;DE123456789;info@muster.de;0621-123456;;AKTIV
|
||||
K-000004;Edit GmbH;Str. 1;68163;Mannheim;DE333333333;neu@edit.de;0621-333333;;AKTIV
|
||||
K-000006;Test AG;Teststr. 1;68163;Mannheim;DE987654321;test@test.de;0621-654321;;AKTIV
|
||||
K-000007;Muster GmbH;Hauptstr. 1;68163;Mannheim;DE123456789;info@muster.de;0621-123456;;AKTIV
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
7
|
||||
|
|
@ -0,0 +1 @@
|
|||
1
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,71 @@
|
|||
package bestandsmanagement;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Produkt {
|
||||
private String produktId;
|
||||
private String bezeichnung;
|
||||
private BigDecimal nettoEinzelpreis;
|
||||
private BigDecimal mehrwertsteuersatz;
|
||||
private int bestand;
|
||||
private String beschreibung;
|
||||
private List<String> belegReferenzen;
|
||||
private boolean verfuegbar;
|
||||
|
||||
public Produkt(String produktId, String bezeichnung, BigDecimal nettoEinzelpreis,
|
||||
BigDecimal mehrwertsteuersatz, int bestand, String beschreibung) {
|
||||
this.produktId = produktId;
|
||||
this.bezeichnung = bezeichnung;
|
||||
this.nettoEinzelpreis = nettoEinzelpreis;
|
||||
this.mehrwertsteuersatz = mehrwertsteuersatz;
|
||||
this.bestand = bestand;
|
||||
this.beschreibung = beschreibung;
|
||||
this.belegReferenzen = new ArrayList<>();
|
||||
this.verfuegbar = bestand > 0;
|
||||
}
|
||||
|
||||
// Validierung (F-09)
|
||||
public boolean validiereFelder() {
|
||||
return bezeichnung != null && !bezeichnung.isBlank() &&
|
||||
nettoEinzelpreis != null && nettoEinzelpreis.compareTo(BigDecimal.ZERO) >= 0 &&
|
||||
mehrwertsteuersatz != null && mehrwertsteuersatz.compareTo(BigDecimal.ZERO) >= 0 &&
|
||||
bestand >= 0;
|
||||
}
|
||||
|
||||
// Getter
|
||||
public String getProduktId() { return produktId; }
|
||||
public String getBezeichnung() { return bezeichnung; }
|
||||
public BigDecimal getNettoEinzelpreis() { return nettoEinzelpreis; }
|
||||
public BigDecimal getMehrwertsteuersatz(){ return mehrwertsteuersatz; }
|
||||
public int getBestand() { return bestand; }
|
||||
public String getBeschreibung() { return beschreibung; }
|
||||
public List<String> getBelegReferenzen() { return belegReferenzen; }
|
||||
public boolean isVerfuegbar() { return verfuegbar; }
|
||||
|
||||
// Setter
|
||||
public void setBezeichnung(String bezeichnung) { this.bezeichnung = bezeichnung; }
|
||||
public void setNettoEinzelpreis(BigDecimal preis) { this.nettoEinzelpreis = preis; }
|
||||
public void setMehrwertsteuersatz(BigDecimal mwst) { this.mehrwertsteuersatz = mwst; }
|
||||
public void setBeschreibung(String beschreibung) { this.beschreibung = beschreibung; }
|
||||
|
||||
public void setBestand(int bestand) {
|
||||
this.bestand = bestand;
|
||||
this.verfuegbar = bestand > 0; // F-08
|
||||
}
|
||||
|
||||
public void belegHinzufuegen(String belegnummer) {
|
||||
belegReferenzen.add(belegnummer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.format("[%s] %s | Preis: %.2f EUR | MwSt: %.0f%% | Bestand: %d | %s",
|
||||
produktId, bezeichnung,
|
||||
nettoEinzelpreis,
|
||||
mehrwertsteuersatz.multiply(new BigDecimal("100")),
|
||||
bestand,
|
||||
verfuegbar ? "VERFUEGBAR" : "NICHT VERFUEGBAR");
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
package bestandsmanagement;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.*;
|
||||
|
||||
public class ProduktIdGenerator {
|
||||
|
||||
private static final String COUNTER_FILE = "data/produkt_counter.txt";
|
||||
private int counter;
|
||||
|
||||
public ProduktIdGenerator() {
|
||||
this.counter = ladeCounter();
|
||||
}
|
||||
|
||||
// Gibt die nächste lückenlose Produktnummer zurück
|
||||
public String naechsteProduktId() {
|
||||
counter++;
|
||||
speichereCounter();
|
||||
return String.format("P-%06d", counter);
|
||||
}
|
||||
|
||||
private int ladeCounter() {
|
||||
try {
|
||||
Path path = Path.of(COUNTER_FILE);
|
||||
if (Files.exists(path)) {
|
||||
String inhalt = Files.readString(path).trim();
|
||||
return Integer.parseInt(inhalt);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.println("Counter konnte nicht geladen werden, starte bei 0.");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private void speichereCounter() {
|
||||
try {
|
||||
Files.createDirectories(Path.of("data"));
|
||||
Files.writeString(Path.of(COUNTER_FILE), String.valueOf(counter));
|
||||
} catch (IOException e) {
|
||||
System.err.println("Counter konnte nicht gespeichert werden: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,102 @@
|
|||
package bestandsmanagement;
|
||||
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.nio.file.*;
|
||||
import java.util.*;
|
||||
|
||||
public class ProduktRepository {
|
||||
|
||||
private static final String DATA_FILE = "data/produkte.csv";
|
||||
private List<Produkt> produkte;
|
||||
|
||||
public ProduktRepository() throws IOException {
|
||||
this.produkte = new ArrayList<>();
|
||||
Files.createDirectories(Path.of("data"));
|
||||
laden();
|
||||
}
|
||||
|
||||
public void speichern(Produkt produkt) {
|
||||
produkte.add(produkt);
|
||||
speichereAlle();
|
||||
}
|
||||
|
||||
public void aktualisieren(Produkt produkt) {
|
||||
speichereAlle();
|
||||
}
|
||||
|
||||
public void loeschen(String produktId) {
|
||||
produkte.removeIf(p -> p.getProduktId().equals(produktId));
|
||||
speichereAlle();
|
||||
}
|
||||
|
||||
public List<Produkt> alleProdukte() {
|
||||
return new ArrayList<>(produkte);
|
||||
}
|
||||
|
||||
public Produkt findeNachId(String produktId) {
|
||||
return produkte.stream()
|
||||
.filter(p -> p.getProduktId().equals(produktId))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
public List<Produkt> sucheNachBezeichnung(String suchbegriff) {
|
||||
List<Produkt> ergebnis = new ArrayList<>();
|
||||
for (Produkt p : produkte) {
|
||||
if (p.getBezeichnung().toLowerCase().contains(suchbegriff.toLowerCase())) {
|
||||
ergebnis.add(p);
|
||||
}
|
||||
}
|
||||
return ergebnis;
|
||||
}
|
||||
|
||||
private void speichereAlle() {
|
||||
try {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Produkt p : produkte) {
|
||||
sb.append(p.getProduktId()).append(";")
|
||||
.append(p.getBezeichnung()).append(";")
|
||||
.append(p.getNettoEinzelpreis()).append(";")
|
||||
.append(p.getMehrwertsteuersatz()).append(";")
|
||||
.append(p.getBestand()).append(";")
|
||||
.append(p.getBeschreibung() != null ? p.getBeschreibung() : "").append(";")
|
||||
.append(String.join(",", p.getBelegReferenzen())).append("\n");
|
||||
}
|
||||
Files.writeString(Path.of(DATA_FILE), sb.toString());
|
||||
} catch (IOException e) {
|
||||
System.err.println("Fehler beim Speichern: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void laden() {
|
||||
try {
|
||||
Path path = Path.of(DATA_FILE);
|
||||
if (!Files.exists(path)) return;
|
||||
|
||||
List<String> zeilen = Files.readAllLines(path);
|
||||
for (String zeile : zeilen) {
|
||||
if (zeile.isBlank()) continue;
|
||||
String[] teile = zeile.split(";", -1);
|
||||
if (teile.length < 7) continue;
|
||||
|
||||
Produkt p = new Produkt(
|
||||
teile[0],
|
||||
teile[1],
|
||||
new BigDecimal(teile[2]),
|
||||
new BigDecimal(teile[3]),
|
||||
Integer.parseInt(teile[4]),
|
||||
teile[5].isBlank() ? null : teile[5]
|
||||
);
|
||||
if (!teile[6].isBlank()) {
|
||||
for (String beleg : teile[6].split(",")) {
|
||||
p.belegHinzufuegen(beleg);
|
||||
}
|
||||
}
|
||||
produkte.add(p);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.println("Fehler beim Laden: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
package bestandsmanagement;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
public class ProduktServiceImpl {
|
||||
|
||||
private final ProduktRepository repository;
|
||||
private final ProduktIdGenerator idGenerator;
|
||||
|
||||
public ProduktServiceImpl() throws IOException {
|
||||
this.repository = new ProduktRepository();
|
||||
this.idGenerator = new ProduktIdGenerator();
|
||||
}
|
||||
|
||||
// Legt einen neuen Artikel an (F-01, F-02, F-05)
|
||||
public Produkt produktAnlegen(String bezeichnung, BigDecimal nettoEinzelpreis,
|
||||
BigDecimal mehrwertsteuersatz, int bestand, String beschreibung) {
|
||||
// Negativer Bestand wird abgelehnt (F-09)
|
||||
if (bestand < 0) {
|
||||
System.out.println("Fehler: Negativer Lagerbestand ist nicht erlaubt.");
|
||||
return null;
|
||||
}
|
||||
|
||||
Produkt produkt = new Produkt("TEMP", bezeichnung, nettoEinzelpreis,
|
||||
mehrwertsteuersatz, bestand, beschreibung);
|
||||
|
||||
if (!produkt.validiereFelder()) {
|
||||
System.out.println("Fehler: Alle Pflichtfelder muessen ausgefuellt sein.");
|
||||
return null;
|
||||
}
|
||||
|
||||
String id = idGenerator.naechsteProduktId();
|
||||
Produkt neuesProdukt = new Produkt(id, bezeichnung, nettoEinzelpreis,
|
||||
mehrwertsteuersatz, bestand, beschreibung);
|
||||
repository.speichern(neuesProdukt);
|
||||
System.out.println("Artikel erfolgreich angelegt: " + neuesProdukt);
|
||||
return neuesProdukt;
|
||||
}
|
||||
|
||||
// Bearbeitet einen bestehenden Artikel (F-03, F-04)
|
||||
public boolean produktBearbeiten(String produktId, String bezeichnung,
|
||||
BigDecimal nettoEinzelpreis, BigDecimal mehrwertsteuersatz,
|
||||
int bestand, String beschreibung) {
|
||||
Produkt produkt = repository.findeNachId(produktId);
|
||||
if (produkt == null) {
|
||||
System.out.println("Fehler: Artikel mit ID " + produktId + " nicht gefunden.");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Negativer Bestand wird abgelehnt (F-09)
|
||||
if (bestand < 0) {
|
||||
System.out.println("Fehler: Negativer Lagerbestand ist nicht erlaubt.");
|
||||
return false;
|
||||
}
|
||||
|
||||
produkt.setBezeichnung(bezeichnung);
|
||||
produkt.setNettoEinzelpreis(nettoEinzelpreis);
|
||||
produkt.setMehrwertsteuersatz(mehrwertsteuersatz);
|
||||
produkt.setBestand(bestand);
|
||||
produkt.setBeschreibung(beschreibung);
|
||||
|
||||
if (!produkt.validiereFelder()) {
|
||||
System.out.println("Fehler: Alle Pflichtfelder muessen ausgefuellt sein.");
|
||||
return false;
|
||||
}
|
||||
|
||||
repository.aktualisieren(produkt);
|
||||
System.out.println("Artikel erfolgreich aktualisiert: " + produkt);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Löscht einen Artikel mit Integritätsprüfung (F-10, F-11)
|
||||
public boolean produktLoeschen(String produktId) {
|
||||
Produkt produkt = repository.findeNachId(produktId);
|
||||
if (produkt == null) {
|
||||
System.out.println("Fehler: Artikel mit ID " + produktId + " nicht gefunden.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!produkt.getBelegReferenzen().isEmpty()) {
|
||||
System.out.println("Fehler: Artikel kann nicht geloescht werden, da er in " +
|
||||
produkt.getBelegReferenzen().size() + " Beleg(en) referenziert wird.");
|
||||
return false;
|
||||
}
|
||||
|
||||
repository.loeschen(produktId);
|
||||
System.out.println("Artikel " + produktId + " erfolgreich geloescht.");
|
||||
return true;
|
||||
}
|
||||
|
||||
// Gibt alle Artikel zurück (F-06)
|
||||
public List<Produkt> alleProdukte() {
|
||||
return repository.alleProdukte();
|
||||
}
|
||||
|
||||
// Sucht Artikel nach Bezeichnung oder ID (F-07)
|
||||
public List<Produkt> sucheNachBezeichnung(String suchbegriff) {
|
||||
return repository.sucheNachBezeichnung(suchbegriff);
|
||||
}
|
||||
|
||||
// Gibt einen Artikel anhand der ID zurück
|
||||
public Produkt findeProdukt(String produktId) {
|
||||
return repository.findeNachId(produktId);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,52 +1,76 @@
|
|||
package kundenverwaltung;
|
||||
|
||||
import bestandsmanagement.Produkt;
|
||||
import bestandsmanagement.ProduktServiceImpl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Main {
|
||||
|
||||
private static KundenServiceImpl service;
|
||||
private static KundenServiceImpl kundenService;
|
||||
private static ProduktServiceImpl produktService;
|
||||
private static Scanner scanner = new Scanner(System.in);
|
||||
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
service = new KundenServiceImpl();
|
||||
kundenService = new KundenServiceImpl();
|
||||
produktService = new ProduktServiceImpl();
|
||||
System.out.println("===========================================");
|
||||
System.out.println(" Kundenverwaltung - Gruppe J - Team 3");
|
||||
System.out.println(" Fakturierungsanwendung - Team 3");
|
||||
System.out.println("===========================================");
|
||||
menueSchleife();
|
||||
hauptmenue();
|
||||
} catch (IOException e) {
|
||||
System.err.println("Fehler beim Starten: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private static void menueSchleife() {
|
||||
private static void hauptmenue() {
|
||||
while (true) {
|
||||
System.out.println("\n--- HAUPTMENUE ---");
|
||||
System.out.println("1. Kunde anlegen");
|
||||
System.out.println("2. Alle Kunden anzeigen");
|
||||
System.out.println("3. Kunde suchen (nach Name)");
|
||||
System.out.println("4. Kunde bearbeiten");
|
||||
System.out.println("5. Kunde loeschen");
|
||||
System.out.println("6. Transaktionshistorie anzeigen");
|
||||
System.out.println("\n=== HAUPTMENUE ===");
|
||||
System.out.println("1. Kundenverwaltung");
|
||||
System.out.println("2. Bestandsmanagement");
|
||||
System.out.println("0. Beenden");
|
||||
System.out.print("Auswahl: ");
|
||||
|
||||
String eingabe = scanner.nextLine().trim();
|
||||
|
||||
switch (eingabe) {
|
||||
case "1" -> kundenmenue();
|
||||
case "2" -> produktmenue();
|
||||
case "0" -> {
|
||||
System.out.println("Programm beendet.");
|
||||
return;
|
||||
}
|
||||
default -> System.out.println("Ungueltige Eingabe.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── KUNDENVERWALTUNG ───────────────────────────────────────────
|
||||
private static void kundenmenue() {
|
||||
while (true) {
|
||||
System.out.println("\n--- KUNDENVERWALTUNG ---");
|
||||
System.out.println("1. Kunde anlegen");
|
||||
System.out.println("2. Alle Kunden anzeigen");
|
||||
System.out.println("3. Kunde suchen");
|
||||
System.out.println("4. Kunde bearbeiten");
|
||||
System.out.println("5. Kunde loeschen");
|
||||
System.out.println("6. Transaktionshistorie");
|
||||
System.out.println("0. Zurueck");
|
||||
System.out.print("Auswahl: ");
|
||||
|
||||
switch (scanner.nextLine().trim()) {
|
||||
case "1" -> kundeAnlegen();
|
||||
case "2" -> alleKundenAnzeigen();
|
||||
case "3" -> kundenSuchen();
|
||||
case "4" -> kundeBearbeiten();
|
||||
case "5" -> kundeLoschen();
|
||||
case "6" -> transaktionshistorie();
|
||||
case "0" -> {
|
||||
System.out.println("Programm beendet.");
|
||||
return;
|
||||
}
|
||||
default -> System.out.println("Ungueltige Eingabe, bitte erneut versuchen.");
|
||||
case "0" -> { return; }
|
||||
default -> System.out.println("Ungueltige Eingabe.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -67,48 +91,32 @@ public class Main {
|
|||
String email = scanner.nextLine();
|
||||
System.out.print("Telefon: ");
|
||||
String telefon = scanner.nextLine();
|
||||
|
||||
service.kundeAnlegen(name, strasse, plz, ort, steuerNummer, email, telefon);
|
||||
kundenService.kundeAnlegen(name, strasse, plz, ort, steuerNummer, email, telefon);
|
||||
}
|
||||
|
||||
private static void alleKundenAnzeigen() {
|
||||
System.out.println("\n--- ALLE KUNDEN ---");
|
||||
List<Kunde> kunden = service.alleKunden();
|
||||
if (kunden.isEmpty()) {
|
||||
System.out.println("Keine Kunden vorhanden.");
|
||||
return;
|
||||
}
|
||||
for (Kunde k : kunden) {
|
||||
System.out.println(k);
|
||||
}
|
||||
List<Kunde> kunden = kundenService.alleKunden();
|
||||
if (kunden.isEmpty()) { System.out.println("Keine Kunden vorhanden."); return; }
|
||||
kunden.forEach(System.out::println);
|
||||
System.out.println("Gesamt: " + kunden.size() + " Kunde(n).");
|
||||
}
|
||||
|
||||
private static void kundenSuchen() {
|
||||
System.out.println("\n--- KUNDE SUCHEN ---");
|
||||
System.out.print("Suchbegriff (Name): ");
|
||||
String suchbegriff = scanner.nextLine();
|
||||
List<Kunde> ergebnis = service.sucheNachName(suchbegriff);
|
||||
if (ergebnis.isEmpty()) {
|
||||
System.out.println("Keine Kunden gefunden.");
|
||||
return;
|
||||
}
|
||||
for (Kunde k : ergebnis) {
|
||||
System.out.println(k);
|
||||
}
|
||||
List<Kunde> ergebnis = kundenService.sucheNachName(scanner.nextLine());
|
||||
if (ergebnis.isEmpty()) { System.out.println("Keine Kunden gefunden."); return; }
|
||||
ergebnis.forEach(System.out::println);
|
||||
}
|
||||
|
||||
private static void kundeBearbeiten() {
|
||||
System.out.println("\n--- KUNDE BEARBEITEN ---");
|
||||
System.out.print("Kunden-ID eingeben: ");
|
||||
System.out.print("Kunden-ID: ");
|
||||
String id = scanner.nextLine();
|
||||
Kunde kunde = service.findeKunde(id);
|
||||
if (kunde == null) {
|
||||
System.out.println("Kunde nicht gefunden.");
|
||||
return;
|
||||
}
|
||||
Kunde kunde = kundenService.findeKunde(id);
|
||||
if (kunde == null) { System.out.println("Kunde nicht gefunden."); return; }
|
||||
System.out.println("Aktuell: " + kunde);
|
||||
System.out.println("Neue Werte eingeben (Enter = Feld uebernehmen):");
|
||||
|
||||
System.out.print("Name [" + kunde.getName() + "]: ");
|
||||
String name = scanner.nextLine();
|
||||
|
|
@ -138,20 +146,111 @@ public class Main {
|
|||
String telefon = scanner.nextLine();
|
||||
if (telefon.isBlank()) telefon = kunde.getTelefon();
|
||||
|
||||
service.kundeBearbeiten(id, name, strasse, plz, ort, steuerNummer, email, telefon);
|
||||
kundenService.kundeBearbeiten(id, name, strasse, plz, ort, steuerNummer, email, telefon);
|
||||
}
|
||||
|
||||
private static void kundeLoschen() {
|
||||
System.out.println("\n--- KUNDE LOESCHEN ---");
|
||||
System.out.print("Kunden-ID eingeben: ");
|
||||
String id = scanner.nextLine();
|
||||
service.kundeLoschen(id);
|
||||
System.out.print("Kunden-ID: ");
|
||||
kundenService.kundeLoschen(scanner.nextLine());
|
||||
}
|
||||
|
||||
private static void transaktionshistorie() {
|
||||
System.out.println("\n--- TRANSAKTIONSHISTORIE ---");
|
||||
System.out.print("Kunden-ID eingeben: ");
|
||||
System.out.print("Kunden-ID: ");
|
||||
kundenService.zeigeTransaktionshistorie(scanner.nextLine());
|
||||
}
|
||||
|
||||
// ─── BESTANDSMANAGEMENT ─────────────────────────────────────────
|
||||
private static void produktmenue() {
|
||||
while (true) {
|
||||
System.out.println("\n--- BESTANDSMANAGEMENT ---");
|
||||
System.out.println("1. Artikel anlegen");
|
||||
System.out.println("2. Alle Artikel anzeigen");
|
||||
System.out.println("3. Artikel suchen");
|
||||
System.out.println("4. Artikel bearbeiten");
|
||||
System.out.println("5. Artikel loeschen");
|
||||
System.out.println("0. Zurueck");
|
||||
System.out.print("Auswahl: ");
|
||||
|
||||
switch (scanner.nextLine().trim()) {
|
||||
case "1" -> artikelAnlegen();
|
||||
case "2" -> alleArtikelAnzeigen();
|
||||
case "3" -> artikelSuchen();
|
||||
case "4" -> artikelBearbeiten();
|
||||
case "5" -> artikelLoeschen();
|
||||
case "0" -> { return; }
|
||||
default -> System.out.println("Ungueltige Eingabe.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void artikelAnlegen() {
|
||||
System.out.println("\n--- ARTIKEL ANLEGEN ---");
|
||||
System.out.print("Bezeichnung: ");
|
||||
String bezeichnung = scanner.nextLine();
|
||||
System.out.print("Netto-Einzelpreis (z.B. 19.99): ");
|
||||
BigDecimal preis = new BigDecimal(scanner.nextLine().replace(",", "."));
|
||||
System.out.print("Mehrwertsteuersatz (z.B. 0.19 fuer 19%): ");
|
||||
BigDecimal mwst = new BigDecimal(scanner.nextLine().replace(",", "."));
|
||||
System.out.print("Lagerbestand: ");
|
||||
int bestand = Integer.parseInt(scanner.nextLine().trim());
|
||||
System.out.print("Beschreibung (optional, Enter ueberspringen): ");
|
||||
String beschreibung = scanner.nextLine();
|
||||
if (beschreibung.isBlank()) beschreibung = null;
|
||||
produktService.produktAnlegen(bezeichnung, preis, mwst, bestand, beschreibung);
|
||||
}
|
||||
|
||||
private static void alleArtikelAnzeigen() {
|
||||
System.out.println("\n--- ALLE ARTIKEL ---");
|
||||
List<Produkt> produkte = produktService.alleProdukte();
|
||||
if (produkte.isEmpty()) { System.out.println("Keine Artikel vorhanden."); return; }
|
||||
produkte.forEach(System.out::println);
|
||||
System.out.println("Gesamt: " + produkte.size() + " Artikel.");
|
||||
}
|
||||
|
||||
private static void artikelSuchen() {
|
||||
System.out.println("\n--- ARTIKEL SUCHEN ---");
|
||||
System.out.print("Suchbegriff (Bezeichnung): ");
|
||||
List<Produkt> ergebnis = produktService.sucheNachBezeichnung(scanner.nextLine());
|
||||
if (ergebnis.isEmpty()) { System.out.println("Keine Artikel gefunden."); return; }
|
||||
ergebnis.forEach(System.out::println);
|
||||
}
|
||||
|
||||
private static void artikelBearbeiten() {
|
||||
System.out.println("\n--- ARTIKEL BEARBEITEN ---");
|
||||
System.out.print("Artikel-ID: ");
|
||||
String id = scanner.nextLine();
|
||||
service.zeigeTransaktionshistorie(id);
|
||||
Produkt produkt = produktService.findeProdukt(id);
|
||||
if (produkt == null) { System.out.println("Artikel nicht gefunden."); return; }
|
||||
System.out.println("Aktuell: " + produkt);
|
||||
|
||||
System.out.print("Bezeichnung [" + produkt.getBezeichnung() + "]: ");
|
||||
String bezeichnung = scanner.nextLine();
|
||||
if (bezeichnung.isBlank()) bezeichnung = produkt.getBezeichnung();
|
||||
|
||||
System.out.print("Netto-Einzelpreis [" + produkt.getNettoEinzelpreis() + "]: ");
|
||||
String preisStr = scanner.nextLine();
|
||||
BigDecimal preis = preisStr.isBlank() ? produkt.getNettoEinzelpreis() : new BigDecimal(preisStr.replace(",", "."));
|
||||
|
||||
System.out.print("Mehrwertsteuersatz [" + produkt.getMehrwertsteuersatz() + "]: ");
|
||||
String mwstStr = scanner.nextLine();
|
||||
BigDecimal mwst = mwstStr.isBlank() ? produkt.getMehrwertsteuersatz() : new BigDecimal(mwstStr.replace(",", "."));
|
||||
|
||||
System.out.print("Lagerbestand [" + produkt.getBestand() + "]: ");
|
||||
String bestandStr = scanner.nextLine();
|
||||
int bestand = bestandStr.isBlank() ? produkt.getBestand() : Integer.parseInt(bestandStr.trim());
|
||||
|
||||
System.out.print("Beschreibung [" + produkt.getBeschreibung() + "]: ");
|
||||
String beschreibung = scanner.nextLine();
|
||||
if (beschreibung.isBlank()) beschreibung = produkt.getBeschreibung();
|
||||
|
||||
produktService.produktBearbeiten(id, bezeichnung, preis, mwst, bestand, beschreibung);
|
||||
}
|
||||
|
||||
private static void artikelLoeschen() {
|
||||
System.out.println("\n--- ARTIKEL LOESCHEN ---");
|
||||
System.out.print("Artikel-ID: ");
|
||||
produktService.produktLoeschen(scanner.nextLine());
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue