def test_invalid_user(self): address = Mock() address.country = Mock() address.country.code = 'AT' address.line4 = 'Vienna' address.postcode = '1010' address.phone_number = '+49 911 234 5678' address.line1 = 'hastexo Professional Services GmbH' address.vatin = '' user = Mock() user.addresses = Mock() user.addresses.order_by = Mock(return_value=[address]) with self.assertRaises(vat.VATAssessmentException): result_rate = vat.lookup_vat_for_user(user) address.vatin = 'ATU66688999' with self.assertRaises(vat.VATAssessmentException): result_rate = vat.lookup_vat_for_user(user)
def test_valid_user(self): address = Mock() address.country = Mock() address.country.code = 'AT' address.line4 = 'Vienna' address.postcode = '1010' address.phone_number = '+43 1 234 5678' address.line1 = 'hastexo Professional Services GmbH' address.vatin = '' user = Mock() user.addresses = Mock() user.addresses.order_by = Mock(return_value=[address]) result_rate = vat.lookup_vat_for_user(user) self.assertEqual(result_rate, D('0.20')) address.vatin = 'ATU66688202' result_rate = vat.lookup_vat_for_user(user) self.assertEqual(result_rate, D('0.00'))
def test_valid_user_reverse_charge(self): address = Mock() address.country = Mock() address.country.code = 'AT' address.line4 = 'Vienna' address.postcode = '1010' address.phone_number = '+43 1 234 5678' address.line1 = 'hastexo Professional Services GmbH' address.vatin = '' user = Mock() user.addresses = Mock() user.addresses.order_by = Mock(return_value=[address]) # No VATIN, different country? Standard rate applies. result_rate = vat.lookup_vat_for_user(user) self.assertEqual(result_rate, D('0.20')) # Valid VATIN, different country? Reverse charge applies. address.vatin = 'ATU66688202' result_rate = vat.lookup_vat_for_user(user) self.assertEqual(result_rate, D('0.00'))
def test_valid_user_no_reverse_charge(self): address = Mock() address.country = Mock() address.country.code = 'AT' address.line4 = 'Vienna' address.postcode = '1010' address.phone_number = '+43 1 234 5678' address.line1 = 'hastexo Professional Services GmbH' address.vatin = '' user = Mock() user.addresses = Mock() user.addresses.order_by = Mock(return_value=[address]) # No VATIN? Standard rate applies. result_rate = vat.lookup_vat_for_user(user) self.assertEqual(result_rate, D('0.20')) # Do they have a VATIN? Doesn't matter if they're in the same # country as the store; VAT still applies. address.vatin = 'ATU66688202' result_rate = vat.lookup_vat_for_user(user) self.assertEqual(result_rate, D('0.20'))
def get_rate(self, product, stockrecord): """Fetches a tax rate, given a product and stockrecord""" # The strategy.Base superclass sets self.user only if the user # is authenticated try: return vat.lookup_vat_for_user(self.user) except: # Unable to look up user address or VAT rate, use defaults pass # We haven't been able to lookup a VAT rate for the user, use # store defaults instead. If all fails, revert to a tax rate of 0. try: return vat.lookup_vat_by_city(settings.VAT_MOSS_STORE_COUNTRY_CODE, settings.VAT_MOSS_STORE_POSTCODE, settings.VAT_MOSS_STORE_CITY) except NameError: logging.warn('Unable to set default VAT rate for store, ' 'defaulting to 0.') return D('0.00')
def get_rate(self, product, stockrecord): """Fetches a tax rate, given a product and stockrecord""" # The strategy.Base superclass sets self.user only if the user # is authenticated try: return vat.lookup_vat_for_user(self.user) except: # Unable to look up user address or VAT rate, use defaults pass # We haven't been able to lookup a VAT rate for the user, use # store defaults instead. If all fails, revert to a tax rate of 0. try: return vat.lookup_vat_by_city( settings.VAT_MOSS_STORE_COUNTRY_CODE, settings.VAT_MOSS_STORE_POSTCODE, settings.VAT_MOSS_STORE_CITY) except NameError: logging.warn('Unable to set default VAT rate for store, ' 'defaulting to 0.') return D('0.00')