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()
 |