52 lines
1.1 KiB
Python
Executable file
52 lines
1.1 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import configparser
|
|
import argparse
|
|
|
|
class TaxRates:
|
|
def __init__(self, config = "einkommenssteuer.ini"):
|
|
self.rates = {}
|
|
|
|
if config:
|
|
self.read_file(config)
|
|
|
|
def read_file(self, config, replace = True):
|
|
if replace:
|
|
self.rates = {}
|
|
|
|
parser = configparser.ConfigParser()
|
|
parser.read(config)
|
|
|
|
levels = [level for level in parser.sections() if level.startswith("tax")]
|
|
|
|
for level in levels:
|
|
self.add_rate(parser[level]["above"], parser[level]["rate"])
|
|
|
|
def add_rate(self, above, rate):
|
|
self.rates[int(above)] = int(rate)
|
|
|
|
def get_rate(self, income):
|
|
rate = 0
|
|
|
|
for level in sorted(self.rates.items()):
|
|
if level[0] < income:
|
|
rate = level[1]
|
|
else:
|
|
break
|
|
|
|
return rate
|
|
|
|
def get_taxes(self, income):
|
|
return income / 100 * self.get_rate(income)
|
|
|
|
def get_taxes(income):
|
|
return TaxRates().get_taxes(income)
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("income", help="income to calculate taxes for", type=float)
|
|
args = parser.parse_args()
|
|
|
|
print(get_taxes(args.income))
|
|
|