Version 0.7.0: Kantonstarife 2026 (taxCH_AI/AR/SG/GR)

This commit is contained in:
wkh
2026-10-12 00:27:06 +02:00
parent a02e5cb109
commit 80941b6f03
11 changed files with 148 additions and 5 deletions
+31
View File
@@ -61,3 +61,34 @@ li_rates.each do |limit, rate|
prev = [limit, rate]
end
write_table('taxLI2026', pts)
# --- Swiss cantons: the "einfache Staatssteuer" for single persons, before the Steuerfuss and
# without municipal and church tax. Source: ESTV Kantonsblätter (Steuerinformationen 2026).
# Each tariff is a list of [width, rate] pieces; above the last piece one flat rate applies to
# the whole income (the cantons call this "für das ganze Einkommen").
def staircase(pieces, flat_rate, expect_limit)
acc = 0.0
start = 0
pts = []
pieces.each do |width, rate|
pts << [start, acc, rate]
acc += width * rate / 100.0
start += width
end
raise "limit #{start} != #{expect_limit}" unless start == expect_limit
pts << [start, start * flat_rate / 100.0, flat_rate]
end
# AI: Art. 38 StG
write_table('taxCH_AI2026', staircase([[3_000, 0], [3_000, 1], [3_000, 2], [3_000, 3], [3_000, 4], [3_000, 5], [4_000, 6],
[4_000, 7], [4_000, 7.5], [10_000, 8], [34_000, 8.5], [66_000, 9], [60_000, 8.5]], 8, 200_000))
# AR: Art. 39 Abs. 1 lit. b StG (Alleinstehendentarif, Beträge ab Steuerperiode 2024); multiplied by the Steuereinheiten
write_table('taxCH_AR2026', staircase([[8_300, 0], [1_600, 0.6], [1_600, 1.0], [4_200, 1.5], [11_500, 1.8], [14_600, 2.2],
[12_500, 2.4], [19_800, 2.6], [14_600, 2.7], [36_500, 2.8], [135_600, 2.9]], 2.6, 260_800))
# SG: Art. 50 StG (Beträge ab Steuerperiode 2026)
write_table('taxCH_SG2026', staircase([[11_600, 0], [4_200, 4], [18_000, 6], [26_500, 8], [38_100, 9.2], [166_100, 9.4]], 8.5, 264_500))
# GR: Art. 39 Abs. 1 StG (indexierte Beträge ab Steuerperiode 2025)
write_table('taxCH_GR2026', staircase([[16_895, 0], [1_090, 2.5], [1_090, 4], [1_090, 5], [1_090, 6], [1_090, 6.5], [2_180, 7],
[6_540, 8], [4_360, 8.5], [4_360, 9], [4_360, 9.5], [21_800, 10.3], [21_800, 10.6],
[21_800, 10.7], [109_000, 11.2], [109_000, 11.3], [109_000, 11.4], [343_895, 11.6]], 11.0, 780_440))