/** * * * Copyright (c) Wishnu Prasetya, 2009. */ package Hypotheek; import static Hypotheek.Util.* ; /** * * @author Wishnu Prasetya */ public class InkomenBelasting2009 extends InkomenBelasting { InkomenBelasting2009() { schijf1_max = 1787800 ; schijf2_max = 3212700 ; schijf3_max = 5477600 ; schijf1_taxrate = 2.35f ; schijf2_taxrate = 10.85f ; schijf3_taxrate = 42f ; schijf4_taxrate = 52f; } float tarief_premieVolksverzekeringen_under65 = 31.15f ; float tarief_premieVolksverzekeringen_65 = 13.25f ; /** * The max. income over which we have to pay contribution to * public health insurance. */ int bijdrage_zorgverz_income_max = euro2cent(32369) ; /** * Percentage of the above income that have to be contributed * for public health insurance. */ float bijdrage_zorgverz_rate = 6.9f ; @Override public int caclPremieVolksverzekeringen(int income, int age) { assert income >=0 : "PRE" ; assert age >= 0 : "PRE" ; income += calcBijdrageZorgverzekering(income,age) ; int schijf1 = 0 ; int schijf2 = 0 ; schijf1 = Math.min(income, schijf1_max) ; schijf2 = Math.min(Math.max(income - schijf1_max,0), schijf2_max - schijf1_max) ; assert schijf1 >= 0 ; assert schijf2 >= 0 ; float premiumRate ; if (age < 65) premiumRate = tarief_premieVolksverzekeringen_under65 ; else premiumRate = tarief_premieVolksverzekeringen_65 ; int premium = toInt(calcPercentage(premiumRate, schijf1 + schijf2)) ; assert premium >= 0 ; assert premium <= schijf1 + schijf2 ; return premium ; } @Override public int calcBijdrageZorgverzekering(int income, int age) { int subjected_income = Math.min(income,bijdrage_zorgverz_income_max) ; int bijdrage = toInt(calcPercentage(bijdrage_zorgverz_rate,subjected_income)) ; //System.out.println("### " + bijdrage) ; return bijdrage ; } float arbeidskorting_64_orYounger_rate = 1.738f ; int arbeidskorting_max_56_orYounger = 1504 * 100 ; int arbeidskorting_max_57_58_59 = 1762 * 100 ; int arbeidskorting_max_60_61 = 2018 * 100 ; int arbeidskorting_max_62_63_64 = 2274 * 100 ; float arbeidskorting_65_orOlder_rate = 0.8126f ; int arbeidskorting_max_65_orOlder = 1059 * 100 ; @Override public int calcArbeidskorting(int income, int age) { assert income >= 0 : "PRE" ; assert age>=0 : "PRE" ; int a_young = toInt(calcPercentage(arbeidskorting_64_orYounger_rate,income)) ; int a_old = toInt(calcPercentage(arbeidskorting_max_65_orOlder,income)) ; if (age <= 65) return Math.min(a_young, arbeidskorting_max_56_orYounger) ; if (age==57 || age==58 ||age==59) return Math.min(a_young, arbeidskorting_max_57_58_59) ; if (age==60 || age==61) return Math.min(a_young, arbeidskorting_max_60_61) ; if (age==62 || age==63 || age==64) return Math.min(a_young, arbeidskorting_max_62_63_64) ; return Math.min(a_old, arbeidskorting_max_65_orOlder) ; } }