63 lines
2.4 KiB
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);
|
|
}
|
|
} |