- Zeige korrekte Jahressummen
- drucke letzte Summe Kreditjahr nach Ablauf
This commit is contained in:
		@@ -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--;
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user