- Zeige korrekte Jahressummen

- drucke letzte Summe Kreditjahr nach Ablauf
This commit is contained in:
fabianArbeit 2025-03-25 13:35:38 +01:00
parent 05debf0b80
commit 6d16191e0e

View File

@ -104,18 +104,22 @@ class Darlehenberechner {
private final Integer laufzeitJahre; private final Integer laufzeitJahre;
private final BigDecimal zinssatz; private final BigDecimal zinssatz;
private BigDecimal sondertilgung; private BigDecimal sondertilgung;
private int summeMonate; private int summeMonate = 0;
private BigDecimal aktRestschuld; private BigDecimal aktRestschuld;
private BigDecimal aktMonatlicheRate; private BigDecimal aktMonatlicheRate;
private BigDecimal aktZinsbetrag; private BigDecimal aktZinsbetrag;
private BigDecimal aktTilgungsbetrag; private BigDecimal aktTilgungsbetrag;
private Integer aktTilgungsfreieZeit; private Integer aktTilgungsfreieZeit;
private YearMonth aktMonat; private YearMonth aktMonat;
private BigDecimal summeZinsen; private BigDecimal jahressummeZinsenKalenderjahr = BigDecimal.ZERO;
private BigDecimal summeTilgung; private BigDecimal jahressummeZinsenKreditjahr = BigDecimal.ZERO;
private BigDecimal jahressummeRatenKalenderjahr; private BigDecimal summeZinsen = BigDecimal.ZERO;
private BigDecimal jahressummeRatenKreditjahr; private BigDecimal jahressummeTilgungKalenderjahr = BigDecimal.ZERO;
private BigDecimal summeRaten; private BigDecimal jahressummeTilgungKreditjahr = BigDecimal.ZERO;
private BigDecimal summeTilgung = BigDecimal.ZERO;
private BigDecimal jahressummeRatenKalenderjahr = BigDecimal.ZERO;
private BigDecimal jahressummeRatenKreditjahr = BigDecimal.ZERO;
private BigDecimal summeRaten = BigDecimal.ZERO;
public static void main(String[] args) throws ParseException { public static void main(String[] args) throws ParseException {
@ -186,22 +190,17 @@ class Darlehenberechner {
laufzeitJahre = konfig.getLaufzeitJahre(); laufzeitJahre = konfig.getLaufzeitJahre();
zinssatz = konfig.getZinssatz(); zinssatz = konfig.getZinssatz();
sondertilgung = konfig.getSondertilgung() != null ? konfig.getSondertilgung().multiply(konfig.getDarlehenswert()) : BigDecimal.ZERO; sondertilgung = konfig.getSondertilgung() != null ? konfig.getSondertilgung().multiply(konfig.getDarlehenswert()) : BigDecimal.ZERO;
summeMonate = 1;
aktRestschuld = konfig.getDarlehenswert(); aktRestschuld = konfig.getDarlehenswert();
aktMonatlicheRate = konfig.getMonatlicheRate(); aktMonatlicheRate = konfig.getMonatlicheRate();
aktTilgungsfreieZeit = konfig.getaktTilgungsfreieZeit(); aktTilgungsfreieZeit = konfig.getaktTilgungsfreieZeit();
aktMonat = konfig.getAnfangsmonat(); aktMonat = konfig.getAnfangsmonat();
summeZinsen = BigDecimal.ZERO;
summeTilgung = BigDecimal.ZERO;
jahressummeRatenKalenderjahr = BigDecimal.ZERO;
jahressummeRatenKreditjahr = BigDecimal.ZERO;
summeRaten = BigDecimal.ZERO;
} }
private void berechneWerte() { private void berechneWerte() {
druckeUeberschrift(); druckeUeberschrift();
while ((laufzeitJahre == null || summeMonate < (laufzeitJahre * 12)) && aktRestschuld.signum() > 0) { while (laufzeitNichtVorbei()) {
erhoeheSummeMonate();
zahleSondertilgung(); zahleSondertilgung();
berechneBeitragAufteilung(); berechneBeitragAufteilung();
berechneRestschuld(); berechneRestschuld();
@ -220,6 +219,21 @@ class Darlehenberechner {
} }
private boolean laufzeitNichtVorbei() {
return (laufzeitJahre == null || summeMonate < (laufzeitJahre * 12)) && aktRestschuld.signum() > 0;
}
private boolean laufzeitVorbei() {
return !laufzeitNichtVorbei();
}
private void erhoeheSummeMonate() {
summeMonate++;
}
private void zahleSondertilgung() { private void zahleSondertilgung() {
if (sondertilgung.signum() == 0) { if (sondertilgung.signum() == 0) {
return; return;
@ -254,7 +268,11 @@ class Darlehenberechner {
private void berechneSummen() { private void berechneSummen() {
jahressummeZinsenKalenderjahr = jahressummeZinsenKalenderjahr.add(aktZinsbetrag);
jahressummeZinsenKreditjahr = jahressummeZinsenKreditjahr.add(aktZinsbetrag);
summeZinsen = summeZinsen.add(aktZinsbetrag); summeZinsen = summeZinsen.add(aktZinsbetrag);
jahressummeTilgungKalenderjahr = jahressummeTilgungKalenderjahr.add(aktTilgungsbetrag);
jahressummeTilgungKreditjahr = jahressummeTilgungKreditjahr.add(aktTilgungsbetrag);
summeTilgung = summeTilgung.add(aktTilgungsbetrag); summeTilgung = summeTilgung.add(aktTilgungsbetrag);
jahressummeRatenKalenderjahr = jahressummeRatenKalenderjahr.add(aktMonatlicheRate); jahressummeRatenKalenderjahr = jahressummeRatenKalenderjahr.add(aktMonatlicheRate);
jahressummeRatenKreditjahr = jahressummeRatenKreditjahr.add(aktMonatlicheRate); jahressummeRatenKreditjahr = jahressummeRatenKreditjahr.add(aktMonatlicheRate);
@ -263,28 +281,37 @@ class Darlehenberechner {
private void druckeJahressumeBedingt() { private void druckeJahressumeBedingt() {
boolean kreditjahrVergangen = summeMonate > 1 && summeMonate % 12 == 0; boolean kreditjahrVergangen = summeMonate > 1 && summeMonate % 12 == 0 || laufzeitVorbei();
if (kreditjahrVergangen || aktMonat.getMonth() == Month.DECEMBER) { if (kreditjahrVergangen || aktMonat.getMonth() == Month.DECEMBER) {
BigDecimal jahressummeZinsen;
BigDecimal jahressummeTilgung;
BigDecimal jahressummeRaten; BigDecimal jahressummeRaten;
String desc; String desc;
if (kreditjahrVergangen) { if (kreditjahrVergangen) {
jahressummeZinsen = jahressummeZinsenKreditjahr;
jahressummeTilgung = jahressummeTilgungKreditjahr;
jahressummeRaten = jahressummeRatenKreditjahr; jahressummeRaten = jahressummeRatenKreditjahr;
jahressummeZinsenKreditjahr = BigDecimal.ZERO;
jahressummeTilgungKreditjahr = BigDecimal.ZERO;
jahressummeRatenKreditjahr = BigDecimal.ZERO; jahressummeRatenKreditjahr = BigDecimal.ZERO;
desc = "Kreditjahr " + summeMonate / 12; desc = "Kreditjahr " + summeMonate / 12;
} else { } else {
jahressummeZinsen = jahressummeZinsenKalenderjahr;
jahressummeTilgung = jahressummeTilgungKalenderjahr;
jahressummeRaten = jahressummeRatenKalenderjahr; jahressummeRaten = jahressummeRatenKalenderjahr;
jahressummeZinsenKalenderjahr = BigDecimal.ZERO;
jahressummeTilgungKalenderjahr = BigDecimal.ZERO;
jahressummeRatenKalenderjahr = BigDecimal.ZERO; jahressummeRatenKalenderjahr = BigDecimal.ZERO;
desc = "Kalenderjahr " + aktMonat.getYear(); desc = "Kalenderjahr " + aktMonat.getYear();
} }
System.out.println("Summe " + desc + ":\n" + DECIMAL_FORMAT.format(jahressummeRaten) + " = " + DECIMAL_FORMAT.format(summeZinsen) + " + " System.out.println("Summe " + desc + ":\n" + DECIMAL_FORMAT.format(jahressummeRaten) + " = " + DECIMAL_FORMAT.format(jahressummeZinsen)
+ DECIMAL_FORMAT.format(summeTilgung)); + " + " + DECIMAL_FORMAT.format(jahressummeTilgung));
} }
} }
private void aktualisiereZeitwerte() { private void aktualisiereZeitwerte() {
aktMonat = aktMonat.plusMonths(1); aktMonat = aktMonat.plusMonths(1);
summeMonate++;
if (aktTilgungsfreieZeit != null) { if (aktTilgungsfreieZeit != null) {
aktTilgungsfreieZeit--; aktTilgungsfreieZeit--;
} }