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