|
|
@ -5,33 +5,43 @@ import fulcrmpy.apiv2
|
|
|
|
import settings
|
|
|
|
import settings
|
|
|
|
import datetime
|
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
|
|
def __main__():
|
|
|
|
reduced_map = { "accommodation": "accommodation",
|
|
|
|
now = datetime.datetime.now()
|
|
|
|
"admission to cultural events": "cultural_event",
|
|
|
|
now_s = now.strftime( "%Y%m%d_%H%M%S" )
|
|
|
|
"admission to entertainment events": "entertainment_event",
|
|
|
|
now_fulcrm = now.strftime( "%Y-%m-%dT%H:%M:%S.%f" )
|
|
|
|
"admission to sporting events": "sporting_event",
|
|
|
|
|
|
|
|
"advertising": "advertising",
|
|
|
|
|
|
|
|
"agricultural supplies": "argi_supplies",
|
|
|
|
|
|
|
|
"baby foodstuffs": "baby_food",
|
|
|
|
|
|
|
|
"bikes": "bike",
|
|
|
|
|
|
|
|
"books": "book",
|
|
|
|
|
|
|
|
"childrens clothing": "clothing_child",
|
|
|
|
|
|
|
|
"domestic fuel": "fuel_domestic",
|
|
|
|
|
|
|
|
"domestic services": "services_domestic",
|
|
|
|
|
|
|
|
"e-books": "ebook",
|
|
|
|
|
|
|
|
"foodstuffs": "food",
|
|
|
|
|
|
|
|
"hotels": "hotel",
|
|
|
|
|
|
|
|
"medical": "medical",
|
|
|
|
|
|
|
|
"newspapers": "news",
|
|
|
|
|
|
|
|
"passenger transport": "transport",
|
|
|
|
|
|
|
|
"pharmaceuticals": "pharma",
|
|
|
|
|
|
|
|
"property renovations": "renovation",
|
|
|
|
|
|
|
|
"restaurants": "restaurant",
|
|
|
|
|
|
|
|
"social housing": "social_housing",
|
|
|
|
|
|
|
|
"water": "water",
|
|
|
|
|
|
|
|
"wine": "wine",
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
fulcrm = fulcrmpy.apiv2.APIv2( settings.FULCRM_USER, settings.FULCRM_API_KEY )
|
|
|
|
def check_or_update( fulcrm, country_code, rate, taxtype_name, slug, archived, archived_suffix, fulcrm_rate ):
|
|
|
|
fulcrm_data = {}
|
|
|
|
if fulcrm_rate is not None:
|
|
|
|
for taxtype in fulcrm.get_many( "taxtype/", no_d = True ):
|
|
|
|
if ( "%0.2f" % ( fulcrm_rate[ "rate" ] * 100.0 ) ) != ( "%0.2f" % rate ):
|
|
|
|
fulcrm_data[ taxtype[ 's' ] ] = taxtype
|
|
|
|
print( "RATE CHANGE: %s standard from %0.2f to %0.2f" % ( country_code, fulcrm_data[ 'rate' ] * 100, rate ) )
|
|
|
|
|
|
|
|
fulcrm.patch( fulcrm_rate[ 'url' ], { "archived": archived,
|
|
|
|
api_data = requests.get( settings.VATLAYER_API_URL ).json()
|
|
|
|
"s": "%s_%s" % ( slug, archived_suffix ),
|
|
|
|
if not api_data[ 'success' ]:
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
for ( country_code, country_data ) in api_data[ 'rates' ].items():
|
|
|
|
|
|
|
|
standard_name = "vatmoss_%s_standard" % ( country_code, )
|
|
|
|
|
|
|
|
taxtype_name = "VATMOSS %s %.1f%%" % ( country_code, country_data[ 'standard_rate' ] )
|
|
|
|
|
|
|
|
if standard_name in fulcrm_data:
|
|
|
|
|
|
|
|
fulcrm_rate = fulcrm_data[ standard_name ]
|
|
|
|
|
|
|
|
if ( "%0.2f" % ( fulcrm_rate[ "rate" ] * 100.0 ) ) != ( "%0.2f" % country_data[ 'standard_rate' ] ):
|
|
|
|
|
|
|
|
print( "RATE CHANGE: %s standard from %0.2f to %0.2f" % ( country_code, fulcrm_data[ 'rate' ] * 100, country_data[ 'standard_rate' ] ) )
|
|
|
|
|
|
|
|
fulcrm.patch( fulcrm_rate[ 'url' ], { "archived": now_fulcrm,
|
|
|
|
|
|
|
|
"s": "%s_%s" % ( standard_name, now_s ),
|
|
|
|
|
|
|
|
},
|
|
|
|
},
|
|
|
|
no_d = True )
|
|
|
|
no_d = True )
|
|
|
|
fulcrm.post( 'taxtype/',
|
|
|
|
fulcrm.post( 'taxtype/',
|
|
|
|
{ "s": standard_name,
|
|
|
|
{ "s": slug,
|
|
|
|
"rate": country_data[ 'standard_rate' ] / 100.0,
|
|
|
|
"rate": rate / 100.0,
|
|
|
|
"name": taxtype_name,
|
|
|
|
"name": taxtype_name,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
no_d = True )
|
|
|
|
no_d = True )
|
|
|
@ -41,11 +51,37 @@ def __main__():
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
print( 'MISSING RATE: "%s"' % ( taxtype_name, ) )
|
|
|
|
print( 'MISSING RATE: "%s"' % ( taxtype_name, ) )
|
|
|
|
fulcrm.post( 'taxtype',
|
|
|
|
fulcrm.post( 'taxtype',
|
|
|
|
{ "s": standard_name,
|
|
|
|
{ "s": slug,
|
|
|
|
"rate": country_data[ 'standard_rate' ] / 100.0,
|
|
|
|
"rate": rate / 100.0,
|
|
|
|
"name": taxtype_name,
|
|
|
|
"name": taxtype_name,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
no_d = True )
|
|
|
|
no_d = True )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __main__():
|
|
|
|
|
|
|
|
now = datetime.datetime.now()
|
|
|
|
|
|
|
|
now_s = now.strftime( "%Y%m%d_%H%M%S" )
|
|
|
|
|
|
|
|
now_fulcrm = now.strftime( "%Y-%m-%dT%H:%M:%S.%f" )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fulcrm = fulcrmpy.apiv2.APIv2( settings.FULCRM_USER, settings.FULCRM_API_KEY )
|
|
|
|
|
|
|
|
fulcrm_data = {}
|
|
|
|
|
|
|
|
for taxtype in fulcrm.get_many( "taxtype/", no_d = True ):
|
|
|
|
|
|
|
|
fulcrm_data[ taxtype[ 's' ] ] = taxtype
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
api_data = requests.get( settings.VATLAYER_API_URL ).json()
|
|
|
|
|
|
|
|
if not api_data[ 'success' ]:
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
for ( country_code, country_data ) in api_data[ 'rates' ].items():
|
|
|
|
|
|
|
|
slug = "vatmoss_%s_standard" % ( country_code, )
|
|
|
|
|
|
|
|
taxtype_name = "%s VAT @ %.1f%%" % ( country_code, country_data[ 'standard_rate' ] )
|
|
|
|
|
|
|
|
check_or_update( fulcrm, country_code, country_data[ 'standard_rate' ], taxtype_name, slug, now_fulcrm, now_s, fulcrm_data.get( slug, None ) )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if country_data[ 'reduced_rates' ]:
|
|
|
|
|
|
|
|
for ( reduced_name, reduced_rate ) in country_data[ 'reduced_rates' ].items():
|
|
|
|
|
|
|
|
reduced_slug = reduced_map[ reduced_name ]
|
|
|
|
|
|
|
|
slug = "vatmoss_%s_reduced_%s" % ( country_code, reduced_slug )
|
|
|
|
|
|
|
|
taxtype_name = "%s (%s) VAT @ %.1f%%" % ( country_code, reduced_name, country_data[ 'standard_rate' ] )
|
|
|
|
|
|
|
|
check_or_update( fulcrm, country_code, reduced_rate, taxtype_name, slug, now_fulcrm, now_s, fulcrm_data.get( slug, None ) )
|
|
|
|
|
|
|
|
print( "vat2ful: COMPLETED" )
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
if __name__ == '__main__':
|
|
|
|
__main__()
|
|
|
|
__main__()
|
|
|
|