- Zeige korrekte Jahressummen
- drucke letzte Summe Kreditjahr nach Ablauf
This commit is contained in:
parent
05debf0b80
commit
6d16191e0e
@ -104,18 +104,22 @@ class Darlehenberechner {
|
||||
private final Integer laufzeitJahre;
|
||||
private final BigDecimal zinssatz;
|
||||
private BigDecimal sondertilgung;
|
||||
private int summeMonate;
|
||||
private int summeMonate = 0;
|
||||
private BigDecimal aktRestschuld;
|
||||
private BigDecimal aktMonatlicheRate;
|
||||
private BigDecimal aktZinsbetrag;
|
||||
private BigDecimal aktTilgungsbetrag;
|
||||
private Integer aktTilgungsfreieZeit;
|
||||
private YearMonth aktMonat;
|
||||
private BigDecimal summeZinsen;
|
||||
private BigDecimal summeTilgung;
|
||||
private BigDecimal jahressummeRatenKalenderjahr;
|
||||
private BigDecimal jahressummeRatenKreditjahr;
|
||||
private BigDecimal summeRaten;
|
||||
private BigDecimal jahressummeZinsenKalenderjahr = BigDecimal.ZERO;
|
||||
private BigDecimal jahressummeZinsenKreditjahr = BigDecimal.ZERO;
|
||||
private BigDecimal summeZinsen = BigDecimal.ZERO;
|
||||
private BigDecimal jahressummeTilgungKalenderjahr = BigDecimal.ZERO;
|
||||
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 {
|
||||
@ -186,22 +190,17 @@ class Darlehenberechner {
|
||||
laufzeitJahre = konfig.getLaufzeitJahre();
|
||||
zinssatz = konfig.getZinssatz();
|
||||
sondertilgung = konfig.getSondertilgung() != null ? konfig.getSondertilgung().multiply(konfig.getDarlehenswert()) : BigDecimal.ZERO;
|
||||
summeMonate = 1;
|
||||
aktRestschuld = konfig.getDarlehenswert();
|
||||
aktMonatlicheRate = konfig.getMonatlicheRate();
|
||||
aktTilgungsfreieZeit = konfig.getaktTilgungsfreieZeit();
|
||||
aktMonat = konfig.getAnfangsmonat();
|
||||
summeZinsen = BigDecimal.ZERO;
|
||||
summeTilgung = BigDecimal.ZERO;
|
||||
jahressummeRatenKalenderjahr = BigDecimal.ZERO;
|
||||
jahressummeRatenKreditjahr = BigDecimal.ZERO;
|
||||
summeRaten = BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
|
||||
private void berechneWerte() {
|
||||
druckeUeberschrift();
|
||||
while ((laufzeitJahre == null || summeMonate < (laufzeitJahre * 12)) && aktRestschuld.signum() > 0) {
|
||||
while (laufzeitNichtVorbei()) {
|
||||
erhoeheSummeMonate();
|
||||
zahleSondertilgung();
|
||||
berechneBeitragAufteilung();
|
||||
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() {
|
||||
if (sondertilgung.signum() == 0) {
|
||||
return;
|
||||
@ -254,7 +268,11 @@ class Darlehenberechner {
|
||||
|
||||
|
||||
private void berechneSummen() {
|
||||
jahressummeZinsenKalenderjahr = jahressummeZinsenKalenderjahr.add(aktZinsbetrag);
|
||||
jahressummeZinsenKreditjahr = jahressummeZinsenKreditjahr.add(aktZinsbetrag);
|
||||
summeZinsen = summeZinsen.add(aktZinsbetrag);
|
||||
jahressummeTilgungKalenderjahr = jahressummeTilgungKalenderjahr.add(aktTilgungsbetrag);
|
||||
jahressummeTilgungKreditjahr = jahressummeTilgungKreditjahr.add(aktTilgungsbetrag);
|
||||
summeTilgung = summeTilgung.add(aktTilgungsbetrag);
|
||||
jahressummeRatenKalenderjahr = jahressummeRatenKalenderjahr.add(aktMonatlicheRate);
|
||||
jahressummeRatenKreditjahr = jahressummeRatenKreditjahr.add(aktMonatlicheRate);
|
||||
@ -263,28 +281,37 @@ class Darlehenberechner {
|
||||
|
||||
|
||||
private void druckeJahressumeBedingt() {
|
||||
boolean kreditjahrVergangen = summeMonate > 1 && summeMonate % 12 == 0;
|
||||
boolean kreditjahrVergangen = summeMonate > 1 && summeMonate % 12 == 0 || laufzeitVorbei();
|
||||
if (kreditjahrVergangen || aktMonat.getMonth() == Month.DECEMBER) {
|
||||
BigDecimal jahressummeZinsen;
|
||||
BigDecimal jahressummeTilgung;
|
||||
BigDecimal jahressummeRaten;
|
||||
String desc;
|
||||
if (kreditjahrVergangen) {
|
||||
jahressummeZinsen = jahressummeZinsenKreditjahr;
|
||||
jahressummeTilgung = jahressummeTilgungKreditjahr;
|
||||
jahressummeRaten = jahressummeRatenKreditjahr;
|
||||
jahressummeZinsenKreditjahr = BigDecimal.ZERO;
|
||||
jahressummeTilgungKreditjahr = BigDecimal.ZERO;
|
||||
jahressummeRatenKreditjahr = BigDecimal.ZERO;
|
||||
desc = "Kreditjahr " + summeMonate / 12;
|
||||
} else {
|
||||
jahressummeZinsen = jahressummeZinsenKalenderjahr;
|
||||
jahressummeTilgung = jahressummeTilgungKalenderjahr;
|
||||
jahressummeRaten = jahressummeRatenKalenderjahr;
|
||||
jahressummeZinsenKalenderjahr = BigDecimal.ZERO;
|
||||
jahressummeTilgungKalenderjahr = BigDecimal.ZERO;
|
||||
jahressummeRatenKalenderjahr = BigDecimal.ZERO;
|
||||
desc = "Kalenderjahr " + aktMonat.getYear();
|
||||
}
|
||||
System.out.println("Summe " + desc + ":\n" + DECIMAL_FORMAT.format(jahressummeRaten) + " = " + DECIMAL_FORMAT.format(summeZinsen) + " + "
|
||||
+ DECIMAL_FORMAT.format(summeTilgung));
|
||||
System.out.println("Summe " + desc + ":\n" + DECIMAL_FORMAT.format(jahressummeRaten) + " = " + DECIMAL_FORMAT.format(jahressummeZinsen)
|
||||
+ " + " + DECIMAL_FORMAT.format(jahressummeTilgung));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void aktualisiereZeitwerte() {
|
||||
aktMonat = aktMonat.plusMonths(1);
|
||||
summeMonate++;
|
||||
if (aktTilgungsfreieZeit != null) {
|
||||
aktTilgungsfreieZeit--;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user