- 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 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--;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user