diff --git a/src/App.vue b/src/App.vue index 27ce2be..8bf9113 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,9 +4,9 @@ - + - + diff --git a/src/components/FooterPaneel.vue b/src/components/FooterPaneel.vue index 3473894..c2aeef2 100644 --- a/src/components/FooterPaneel.vue +++ b/src/components/FooterPaneel.vue @@ -1,12 +1,12 @@ diff --git a/src/js/belasting/belasting_data.js b/src/js/belasting/belasting_data.js index 8461452..59fe4d5 100644 --- a/src/js/belasting/belasting_data.js +++ b/src/js/belasting/belasting_data.js @@ -16,11 +16,62 @@ */ /* -Bron data overgenomen uit JavaScript van proefberekeing toeslagen van Belastingdienst website: +Bron data overgenomen uit JavaScript van proefberekening toeslagen van Belastingdienst website: https://www.belastingdienst.nl/common/js/iah/proefberekening_toeslagen.js */ const TABEL = { + 2024: { + Aanvraagdatum: "01-09-2022", + HT: !0, + KGB: !0, + KOT: !0, + ZT: !0, + UitbetGrns: 24, + HTjaar: "2024", + HDCP: "Ja", + Garage: !1, + Onderhuur: !1, + VrijHT65enkel: 36952, + VrijHT65gez: 73904, + TslgTP: 6.75, + DrempelinkomenKGB: 26819, + VerhoogdDrempelInkomen: 9030, + Tslg: 6.75, + OHGA: 0, + IGTA: 0, + IGUA: 0, + OHGB: 0, + IGTB: 0, + IGUB: 0, + VSVB: 0, + WTOS: !0, + VH12Plus: 694, + VH16Plus: 924, + VHgeenTP: 3480, + MaxUPDOKC: 10.25, + MaxUPDOGO: 7.53, + MaxUPBOKC: 9.12, + MaxUPBOGO: 7.53, + MaxUren: 230, + WrkgvrBdr: "Nee", + Middelen: "Nee", + ETP: "Nee", + OM: "Nee", + WLF: "Ja", + RepWlfT: "Ja", + SP: 1987, + Drempel: 26819, + TDA: 1.879, + BDA: 13.67, + TDMT: 4.256, + BDMT: 13.67, + MxInk1: 37496, + MxInk2: 47368, + VrijZTKGB65enkel: 140213, + VrijZTKGB65gez: 177301, + ZT_norm_geldig: "ja" + }, 2023: { Aanvraagdatum: "01-09-2022", HT: true, @@ -128,6 +179,21 @@ const TABEL = { // Huurtoeslag const HT = { + 2024: { + HTjaar: "2024", + MxSK: "48", + MaxHuur: 879.66, + GK: "", + AftopA: 650.43, + AftopB: 697.07, + KwKrtGrns: 454.47, + VrKndInk: 5970, + OHKort: "", + HTB: "F", + MxRubr: 12, + TslTmAftop: 65, + TslBovenAftop: 40, + }, 2023: { HTjaar: "2023", MxSK: "48", @@ -161,6 +227,40 @@ const HT = { }; const HTBP = { + 2024: { + EPH: { + "Factor a": 4.1337e-7, + "Factor b": 0.002393492603, + MinInkGr: 20700, + DoelGrpGr: 0, + TaakStBedr: -34.67, + MinNrmHr: 226.67, + }, + EPHAOW: { + "Factor a": 5.59775e-7, + "Factor b": -0.002120192534, + MinInkGr: 22025, + DoelGrpGr: 0, + TaakStBedr: -34.67, + MinNrmHr: 224.85, + }, + MPH: { + "Factor a": 2.4449e-7, + "Factor b": 0.001807837711, + MinInkGr: 26975, + DoelGrpGr: 0, + TaakStBedr: -34.67, + MinNrmHr: 226.67, + }, + MPHAOW: { + "Factor a": 3.63503e-7, + "Factor b": -0.003053924481, + MinInkGr: 29325, + DoelGrpGr: 0, + TaakStBedr: -34.67, + MinNrmHr: 223.04, + }, + }, 2023: { EPH: { "Factor a": 0.000000474433, @@ -234,6 +334,22 @@ const HTBP = { // Inkomsten afhankelijk combinatie korting const IACK = { + // https://www.belastingdienst.nl/wps/wcm/connect/nl/voorlopige-aanslag/content/voorlopige-aanslag-tarieven-en-heffingskortingen + 2024: { + H: { + MinAInk: 6074, + InkKorting: 0.1145, + MaxAInk: 31387, + MaxInkAfKrt: 2950, + }, + // 2024 nog gegevens van 2023 + HAOW: { + MinAInk: 5548, + InkKorting: 0.059, + MaxAInk: 29076, + MaxInkAfKrt: 1389, + }, + }, 2023: { H: { MinAInk: 5548, @@ -253,6 +369,16 @@ const IACK = { // Maximum Kindergebonden budget const MAXKGB = { + 2024: { + 1: 2436, + 2: 4872, + 3: 7308, + 4: 9744, + 5: 12180, + 6: 14616, + 7: 17052, + 8: 19488, + }, 2023: { 1: 1653, 2: 3185, @@ -278,6 +404,974 @@ const MAXKGB = { // Kinderopvang toeslag const KOTT = { + 2024: [ + { + inkomen: { + van: 0, + tm: 22346, + }, + kinderopvangtoeslag: { + eersteKind: 96, + tweedeEvKind: 96, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 22347, + tm: 23834, + }, + kinderopvangtoeslag: { + eersteKind: 96, + tweedeEvKind: 96, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 23835, + tm: 25320, + }, + kinderopvangtoeslag: { + eersteKind: 96, + tweedeEvKind: 96, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 25321, + tm: 26810, + }, + kinderopvangtoeslag: { + eersteKind: 96, + tweedeEvKind: 96, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 26811, + tm: 28297, + }, + kinderopvangtoeslag: { + eersteKind: 96, + tweedeEvKind: 96, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 28298, + tm: 29786, + }, + kinderopvangtoeslag: { + eersteKind: 95.5, + tweedeEvKind: 95.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 29787, + tm: 31273, + }, + kinderopvangtoeslag: { + eersteKind: 94.4, + tweedeEvKind: 95.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 31274, + tm: 32757, + }, + kinderopvangtoeslag: { + eersteKind: 93.4, + tweedeEvKind: 95.2, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 32758, + tm: 34357, + }, + kinderopvangtoeslag: { + eersteKind: 92.5, + tweedeEvKind: 95, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 34358, + tm: 35955, + }, + kinderopvangtoeslag: { + eersteKind: 91.9, + tweedeEvKind: 94.9, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 35956, + tm: 37557, + }, + kinderopvangtoeslag: { + eersteKind: 90.9, + tweedeEvKind: 94.7, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 37558, + tm: 39155, + }, + kinderopvangtoeslag: { + eersteKind: 90.4, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 39156, + tm: 40759, + }, + kinderopvangtoeslag: { + eersteKind: 89.5, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 40760, + tm: 42359, + }, + kinderopvangtoeslag: { + eersteKind: 88.7, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 42360, + tm: 43997, + }, + kinderopvangtoeslag: { + eersteKind: 88.1, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 43998, + tm: 45637, + }, + kinderopvangtoeslag: { + eersteKind: 87.3, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 45638, + tm: 47278, + }, + kinderopvangtoeslag: { + eersteKind: 86.6, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 47279, + tm: 48918, + }, + kinderopvangtoeslag: { + eersteKind: 85.9, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 48919, + tm: 50562, + }, + kinderopvangtoeslag: { + eersteKind: 85, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 50563, + tm: 52201, + }, + kinderopvangtoeslag: { + eersteKind: 84.5, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 52202, + tm: 53841, + }, + kinderopvangtoeslag: { + eersteKind: 83.7, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 53842, + tm: 55482, + }, + kinderopvangtoeslag: { + eersteKind: 83, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 55483, + tm: 57275, + }, + kinderopvangtoeslag: { + eersteKind: 82.1, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 57276, + tm: 60791, + }, + kinderopvangtoeslag: { + eersteKind: 80.6, + tweedeEvKind: 94.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 60792, + tm: 64305, + }, + kinderopvangtoeslag: { + eersteKind: 79.8, + tweedeEvKind: 94.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 64306, + tm: 67821, + }, + kinderopvangtoeslag: { + eersteKind: 78.7, + tweedeEvKind: 93.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 67822, + tm: 71339, + }, + kinderopvangtoeslag: { + eersteKind: 76.4, + tweedeEvKind: 93.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 71340, + tm: 74853, + }, + kinderopvangtoeslag: { + eersteKind: 74.1, + tweedeEvKind: 92.8, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 74854, + tm: 78371, + }, + kinderopvangtoeslag: { + eersteKind: 71.9, + tweedeEvKind: 92.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 78372, + tm: 81886, + }, + kinderopvangtoeslag: { + eersteKind: 69.4, + tweedeEvKind: 91.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 81887, + tm: 85402, + }, + kinderopvangtoeslag: { + eersteKind: 67.1, + tweedeEvKind: 91.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 85403, + tm: 88919, + }, + kinderopvangtoeslag: { + eersteKind: 64.9, + tweedeEvKind: 90.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 88920, + tm: 92433, + }, + kinderopvangtoeslag: { + eersteKind: 62.5, + tweedeEvKind: 89.8, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 92434, + tm: 95954, + }, + kinderopvangtoeslag: { + eersteKind: 60.3, + tweedeEvKind: 89.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 95955, + tm: 99469, + }, + kinderopvangtoeslag: { + eersteKind: 57.8, + tweedeEvKind: 89.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 99470, + tm: 102983, + }, + kinderopvangtoeslag: { + eersteKind: 55.5, + tweedeEvKind: 88.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 102984, + tm: 106499, + }, + kinderopvangtoeslag: { + eersteKind: 53.3, + tweedeEvKind: 88, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 106500, + tm: 110084, + }, + kinderopvangtoeslag: { + eersteKind: 50.9, + tweedeEvKind: 87.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 110085, + tm: 113686, + }, + kinderopvangtoeslag: { + eersteKind: 48.8, + tweedeEvKind: 86.8, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 113687, + tm: 117286, + }, + kinderopvangtoeslag: { + eersteKind: 46.7, + tweedeEvKind: 86.3, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 117287, + tm: 120887, + }, + kinderopvangtoeslag: { + eersteKind: 44.6, + tweedeEvKind: 85.9, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 120888, + tm: 124485, + }, + kinderopvangtoeslag: { + eersteKind: 42.4, + tweedeEvKind: 85.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 124486, + tm: 128088, + }, + kinderopvangtoeslag: { + eersteKind: 40.5, + tweedeEvKind: 84.9, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 128089, + tm: 131690, + }, + kinderopvangtoeslag: { + eersteKind: 38.6, + tweedeEvKind: 84.3, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 131691, + tm: 135292, + }, + kinderopvangtoeslag: { + eersteKind: 36.7, + tweedeEvKind: 83.9, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 135293, + tm: 138889, + }, + kinderopvangtoeslag: { + eersteKind: 34.7, + tweedeEvKind: 83.3, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 138890, + tm: 142489, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 82.9, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 142490, + tm: 146092, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 82.2, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 146093, + tm: 149691, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 81.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 149692, + tm: 153292, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 80.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 153293, + tm: 156891, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 80.3, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 156892, + tm: 160494, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 79.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 160495, + tm: 164098, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 78.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 164099, + tm: 167696, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 78, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 167697, + tm: 171297, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 77.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 171298, + tm: 174895, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 76.6, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 174896, + tm: 178498, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 75.8, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 178499, + tm: 182100, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 75.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 182101, + tm: 185701, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 74.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 185702, + tm: 189301, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 73.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 189302, + tm: 192898, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 72.9, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 192899, + tm: 196502, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 72.2, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 196503, + tm: 200101, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 71.4, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 200102, + tm: 203703, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 70.7, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 203704, + tm: 207304, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 70.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 207305, + tm: 210903, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 69.3, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 210904, + tm: 214505, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 68.5, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 214506, + tm: 218104, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 68, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + { + inkomen: { + van: 218105, + tm: 99999999, + }, + kinderopvangtoeslag: { + eersteKind: 33.3, + tweedeEvKind: 67.1, + }, + extraToeslag: { + eersteKind: 0, + tweedeEvKind: 0, + }, + }, + ], 2023: [ { inkomen: { van: 0, tm: 21278 }, @@ -630,6 +1724,12 @@ const KOTT = { // Kinderbijslag per kwartaal const KBS = { + // Kinderbijslag 2024 is van 3e kwartaal 2023 + 2024: { + K05: 261.7, + K611: 317.77, + K1217: 373.85, + }, 2023: { K05: 261.7, K611: 317.77, @@ -638,8 +1738,37 @@ const KBS = { }; // Eigenwoningforfait - const EWF = { + 2024: { + kSchuldFactor: 0.8001, + ewf: [ + { + woz: { van: 0, tm: 12500 }, + factor: 0, + }, + { + woz: { van: 12500, tm: 25000 }, + factor: 0.001, + }, + { + woz: { van: 25000, tm: 50000 }, + factor: 0.002, + }, + { + woz: { van: 50000, tm: 75000 }, + factor: 0.0025, + }, + { + woz: { van: 75000, tm: 1200000 }, + factor: 0.0035, + }, + { + woz: { van: 1200000, tm: Number.MAX_VALUE }, + minimum: 4200, + factor: 0.0235, + }, + ], + }, 2023: { kSchuldFactor: 0.8333, ewf: [ @@ -673,8 +1802,38 @@ const EWF = { }; // Algemene Heffingskorting - const AHK = { + // https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/prive/inkomstenbelasting/heffingskortingen_boxen_tarieven/heffingskortingen/algemene_heffingskorting/tabel-algemene-heffingskorting-2024 + 2024: { + V: [ + { + inkomen: { van: 0, tot: 24813 }, + minimum: 3362, + minus: 0, + factor: 0, + }, + { + inkomen: { van: 24813, tot: 75518 }, + minimum: 3362, + minus: 24812, + factor: -0.06630, + }, + ], + AOW: [ + { + inkomen: { van: 0, tot: 24813 }, + minimum: 1735, + minus: 0, + factor: 0, + }, + { + inkomen: { van: 24813, tot: 75518 }, + minimum: 1735, + minus: 24813, + factor: -0.03421, + }, + ], + }, 2023: { V: [ { @@ -708,8 +1867,63 @@ const AHK = { }; // Arbeidskorting - const AK = { + // https://open.overheid.nl/documenten/dbc8b701-05db-4f38-a3fb-ea0747e34d40/file + // https://www.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/prive/inkomstenbelasting/heffingskortingen_boxen_tarieven/heffingskortingen/arbeidskorting/tabel-arbeidskorting-2024 + 2024: { + V: [ + { + inkomen: { van: 0, tot: 11491 }, + minimum: 0, + minus: 0, + factor: 0.08245, + }, + { + inkomen: { van: 11491, tot: 24821 }, + minimum: 968, + minus: 11490, + factor: 0.31433, + }, + { + inkomen: { van: 24821, tot: 39958 }, + minimum: 5158, + minus: 24820, + factor: 0.02471, + }, + { + inkomen: { van: 39958, tot: 124935 }, + minimum: 5532, + minus: 39957, + factor: -0.0651, + }, + ], + AOW: [ + { + inkomen: { van: 0, tot: 11491 }, + minimum: 0, + minus: 0, + factor: 0.04346, + }, + { + inkomen: { van: 11491, tot: 24821 }, + minimum: 501, + minus: 11490, + factor: 0.16214, + }, + { + inkomen: { van: 24821, tot: 39958 }, + minimum: 2662, + minus: 24820, + factor: 0.01275, + }, + { + inkomen: { van: 39958, tot: 124935 }, + minimum: 2854, + minus: 39957, + factor: -0.03358, + }, + ], + }, 2023: { V: [ { @@ -766,7 +1980,36 @@ const AK = { }, }; +// AOW 1e schijf is inkomstenbelasting + volksverzekering premie. const IB = { + 2024: { + // https://www.belastingdienst.nl/wps/wcm/connect/nl/voorlopige-aanslag/content/voorlopige-aanslag-tarieven-en-heffingskortingen + V: [ + { + tot: 75518, + percentage: 0.3697, + }, + { + vanaf: 75518, + percentage: 0.495, + }, + ], + AOW: [ + { + tot: 40021, + percentage: 0.1907, + }, + { + vanaf: 40021, + tot: 75518, + percentage: 0.3697, + }, + { + vanaf: 75518, + percentage: 0.495, + }, + ], + }, 2023: { V: [ { diff --git a/src/js/belasting/inkomen.ts b/src/js/belasting/inkomen.ts index 93164b6..04d5881 100644 --- a/src/js/belasting/inkomen.ts +++ b/src/js/belasting/inkomen.ts @@ -97,9 +97,9 @@ function toeslagenToetsInkomen( } function ibRange(toetsingsInkomen: number, p): number { - const top = Math.min(p.tot || toetsingsInkomen, toetsingsInkomen); - const range = Math.max(0, top - (p.vanaf || 0)); + const top = Math.min(p?.tot - 1 || toetsingsInkomen, toetsingsInkomen); + const range = Math.max(0, top - (p?.vanaf-1 || 0)); return p.percentage * range; } @@ -115,7 +115,7 @@ function inkomstenBelasting( ); } -function netto(jaar: number, bruto: number, aow: boolean): number { +function netto(jaar: number, bruto: number, aow: boolean=false): number { return Math.min(bruto, bruto - inkomstenBelasting(jaar, bruto, aow)); } @@ -128,9 +128,9 @@ function nettoKortingenInkomens(jaar: number, personen: PersoonType[]) { let aow = p.leeftijd == LeeftijdType.AOW; if (p.leeftijd == LeeftijdType.V || aow) { let inkomen = p.bruto_inkomen !== undefined ? p.bruto_inkomen : 0; - // Hier wordt toestings inkomensten belasting berekend van anderen + // Hier wordt toetsingsinkomsten belasting berekend van anderen // Echter hypotheek aftrek wordt gedaan bij eerste persoon en niet hier - // Het kan zijn dat een deel of alles hyppotheek aftrek bij anderen te leggen, + // Het kan zijn dat een deel of alles hypotheek aftrek bij anderen te leggen, // de totale belasting gunstiger uitkomt. Maar die optie is hier niet meegenomen. let tib = inkomstenBelasting(jaar, inkomen, aow); diff --git a/src/js/belasting/inkomensafhankelijke_combinatiekorting.ts b/src/js/belasting/inkomensafhankelijke_combinatiekorting.ts index f1ece71..39e14e4 100644 --- a/src/js/belasting/inkomensafhankelijke_combinatiekorting.ts +++ b/src/js/belasting/inkomensafhankelijke_combinatiekorting.ts @@ -61,7 +61,7 @@ function inkomensafhankelijkeCombinatiekorting( return arbeidsinkomen < t.MinAInk ? 0 : arbeidsinkomen < t.MaxAInk - ? Math.floor((arbeidsinkomen - t.MinAInk) * t.InkKorting) + ? Math.floor((arbeidsinkomen - (t.MinAInk-1)) * t.InkKorting) : t.MaxInkAfKrt; } diff --git a/src/js/berekeningen/BeschikbaarInkomen.ts b/src/js/berekeningen/BeschikbaarInkomen.ts index 693f7d4..d356f1e 100644 --- a/src/js/berekeningen/BeschikbaarInkomen.ts +++ b/src/js/berekeningen/BeschikbaarInkomen.ts @@ -46,7 +46,7 @@ export class BeschikbaarInkomen extends Berekenen { getYDomain(): number[] { let yDomain: number[] = super.getYDomain(); - return [0, Math.round(yDomain[1] / 1000)]; + return [0, Math.round(yDomain[1] / (1000 / this.factor))]; } bereken(arbeidsInkomen: number): BeschikbaarInkomenResultaatType { diff --git a/src/js/berekeningen/gegevens.ts b/src/js/berekeningen/gegevens.ts index 61a714d..04d6e6c 100644 --- a/src/js/berekeningen/gegevens.ts +++ b/src/js/berekeningen/gegevens.ts @@ -32,8 +32,8 @@ const DEFAULT_WOON_TYPE: WoningType = WoningType.HUUR; const AVG_HUUR: number = 600; const AVG_WOZ: number = 315000; const AVG_RENTE: number = AVG_WOZ * 0.0428; -const JAAR: number = 2023; -const JAREN: number[] = [2023]; //, 2024]; +const JAAR: number = 2024; +const JAREN: number[] = [2023, 2024]; function lengte(a: any): number { return (a && a.length) || 0; diff --git a/src/js/grafieken/Legenda.js b/src/js/grafieken/Legenda.js index acd3d15..9731da2 100644 --- a/src/js/grafieken/Legenda.js +++ b/src/js/grafieken/Legenda.js @@ -45,12 +45,12 @@ export class Legenda { geld(bedrag) { return bedrag > 0 - ? Legenda.EURO + " " + bedrag.toFixed().padStart(4, "\u00A0") + ? Legenda.EURO + " " + bedrag.toFixed().padStart(5, "\u00A0") : "-"; } setLegendaVast(data, length, offset) { - this.berekenen.vis.arbeidsInkomen = data[offset].id; + this.berekenen.vis.arbeidsInkomen = data[offset].id / this.berekenen.getFactor(); this.setLegendaText(data, length, offset); } @@ -60,7 +60,7 @@ export class Legenda { let ab = this.berekenen.vis.arbeidsInkomen; if (ab > 0) { let b = this.berekenen.bereken(ab); - let id = ab * this.berekenen.getFactor(); + let id = ab; var data = []; this.berekenen.verzamelGrafiekSeries(data, b, id); this.setLegendaText(data, data.length, 0); diff --git a/src/js/grafieken/stacked_chart.js b/src/js/grafieken/stacked_chart.js index d1de7d0..0680fbf 100644 --- a/src/js/grafieken/stacked_chart.js +++ b/src/js/grafieken/stacked_chart.js @@ -159,10 +159,23 @@ function StackedAreaChart( .attr("y1", 0) .attr("y2", height); - hoverLineGroup.style("opacity", 1); //1e-6); + hoverLineGroup.style("opacity", 1); svg.style("pointer-events", "all"); + // Salaris lijn + if (yLabel.startsWith("Beschikbaar")) { + svg + .append("g") + .attr("class", "hover-line") + .append("line") + .attr("stroke", "#333") + .attr("x1", xScale(xDomain[0])) + .attr("x2", xScale(xDomain[1])) + .attr("y1", yScale(xDomain[0]/1000)) + .attr("y2", yScale(yDomain[1])); + } + svg .append("rect") .data(data) diff --git a/test/js/belasting/inkomen.test.ts b/test/js/belasting/inkomen.test.ts index eced7b6..b174e82 100644 --- a/test/js/belasting/inkomen.test.ts +++ b/test/js/belasting/inkomen.test.ts @@ -76,6 +76,10 @@ test('Belasting 100.000', () => { expect(inkomen.inkomstenBelasting(JAAR, 100000, true)).toEqual(33392) }) +test('Belasting 40.021', () => { + expect(inkomen.inkomstenBelasting(2024, 40021, true)).toEqual(Math.round(7632.1837)) +}) + // test netto test('Netto 10.000', () => {