SE1_Team_3/src/main/java/belegworkflow/Dokument.java

63 lines
2.4 KiB
Java

package belegworkflow;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.List;
public abstract class Dokument {
protected String belegnummer;
protected LocalDate datum;
protected String kundenReferenz;
protected List<Dokumentposition> positionen;
protected BigDecimal summeNetto;
protected BigDecimal summeSteuer;
protected BigDecimal summeBrutto;
protected boolean festgeschrieben;
public Dokument(String belegnummer, LocalDate datum, String kundenReferenz,
List<Dokumentposition> positionen) {
this.belegnummer = belegnummer;
this.datum = datum;
this.kundenReferenz = kundenReferenz;
this.positionen = positionen;
this.festgeschrieben = false;
berechnesSummen();
}
// Berechnet Netto-, Steuer- und Bruttosumme (F-03, F-09, GR-06)
protected void berechnesSummen() {
summeNetto = BigDecimal.ZERO;
summeSteuer = BigDecimal.ZERO;
for (Dokumentposition pos : positionen) {
summeNetto = summeNetto.add(pos.getPositionssummeNetto());
BigDecimal steuer = pos.getPositionssummeNetto()
.multiply(pos.getSteuersatz())
.setScale(2, RoundingMode.HALF_UP);
summeSteuer = summeSteuer.add(steuer);
}
summeNetto = summeNetto.setScale(2, RoundingMode.HALF_UP);
summeSteuer = summeSteuer.setScale(2, RoundingMode.HALF_UP);
summeBrutto = summeNetto.add(summeSteuer).setScale(2, RoundingMode.HALF_UP);
}
public String getBelegnummer() { return belegnummer; }
public LocalDate getDatum() { return datum; }
public String getKundenReferenz() { return kundenReferenz; }
public List<Dokumentposition> getPositionen() { return positionen; }
public BigDecimal getSummeNetto() { return summeNetto; }
public BigDecimal getSummeSteuer() { return summeSteuer; }
public BigDecimal getSummeBrutto() { return summeBrutto; }
public boolean isFestgeschrieben() { return festgeschrieben; }
public void festschreiben() {
this.festgeschrieben = true;
}
public String getSummenAnzeige() {
return String.format("Netto: %.2f EUR | MwSt: %.2f EUR | Brutto: %.2f EUR",
summeNetto, summeSteuer, summeBrutto);
}
}