forked from uncloud/uncloud
55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
"""
|
|
investigate into a simple python function that maps an ldap user to a vat percentage. Basically you need to
|
|
lookup the customer address, check if she is a business/registered tax number and if not apply the local
|
|
vat
|
|
"""
|
|
|
|
import iso3166
|
|
import datetime
|
|
|
|
from csv import DictReader
|
|
|
|
|
|
def get_vat(street_address, city, postal_code, country, vat_number=None):
|
|
vat = {
|
|
'Austria': [
|
|
{'period': '1984-01-01/', 'rate': 0.2},
|
|
{'period': '1976-01-01/1984-01-01', 'rate': 0.18},
|
|
{'period': '1973-01-01/1976-01-01', 'rate': 0.16},
|
|
]
|
|
}
|
|
return iso3166.countries.get(country)
|
|
|
|
# return iso3166.countries_by_name[country]
|
|
|
|
|
|
def main():
|
|
# vat = get_vat(
|
|
# street_address='82 Nasheman-e-Iqbal near Wapda Town',
|
|
# city='Lahore',
|
|
# postal_code=53700,
|
|
# country='Pakistan',
|
|
# )
|
|
# print(vat)
|
|
vat_rates = {}
|
|
with open('vat_rates.csv', newline='') as csvfile:
|
|
reader = DictReader(csvfile)
|
|
for row in reader:
|
|
territory_codes = row['territory_codes'].split('\n')
|
|
for code in territory_codes:
|
|
if code not in vat_rates:
|
|
vat_rates[code] = {}
|
|
|
|
start_date = row['start_date']
|
|
stop_data = row['stop_date']
|
|
time_period = f'{start_date}|{stop_data}'
|
|
r = row.copy()
|
|
del r['start_date']
|
|
del r['stop_date']
|
|
del r['territory_codes']
|
|
vat_rates[code][time_period] = r
|
|
print(vat_rates)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|