diff --git a/src/pretix/base/services/tax.py b/src/pretix/base/services/tax.py index 70446dfdc7..5d442c504d 100644 --- a/src/pretix/base/services/tax.py +++ b/src/pretix/base/services/tax.py @@ -62,6 +62,9 @@ class VATIDTemporaryError(VATIDError): def _validate_vat_id_NO(vat_id, country_code): # Inspired by vat_moss library + if not vat_id.startswith("NO"): + # prefix is not usually used in Norway, but expected by vat_moss library + vat_id = "NO" + vat_id try: vat_id = vat_moss.id.normalize(vat_id) except ValueError: diff --git a/src/tests/base/test_vat_id_validation.py b/src/tests/base/test_vat_id_validation.py index e51935c1d2..36602d9caf 100644 --- a/src/tests/base/test_vat_id_validation.py +++ b/src/tests/base/test_vat_id_validation.py @@ -195,4 +195,27 @@ def test_NO_id_valid(): assert validate_vat_id('NO974760673 MVA', 'NO') == 'NO974760673MVA' + +@responses.activate +def test_NO_id_valid_without_prefix(): + responses.add( + responses.GET, + 'https://data.brreg.no/enhetsregisteret/api/enheter/974760673', + body='{"organisasjonsnummer":"974760673","navn":"REGISTERENHETEN I BRØNNØYSUND","organisasjonsform":{"kode":' + '"ORGL","beskrivelse":"Organisasjonsledd","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/' + 'organisasjonsformer/ORGL"}}},"hjemmeside":"www.brreg.no","postadresse":{"land":"Norge","landkode":"NO","postn' + 'ummer":"8910","poststed":"BRØNNØYSUND","adresse":["Postboks 900"],"kommune":"BRØNNØY","kommunenummer":"1813"}' + ',"registreringsdatoEnhetsregisteret":"1995-08-09","registrertIMvaregisteret":false,"naeringskode1":{"beskrivels' + 'e":"Generell offentlig administrasjon","kode":"84.110"},"antallAnsatte":455,"overordnetEnhet":"912660680","for' + 'retningsadresse":{"land":"Norge","landkode":"NO","postnummer":"8900","poststed":"BRØNNØYSUND","adresse":["Havn' + 'egata 48"],"kommune":"BRØNNØY","kommunenummer":"1813"},"institusjonellSektorkode":{"kode":"6100","beskrivelse' + '":"Statsforvaltningen"},"registrertIForetaksregisteret":false,"registrertIStiftelsesregisteret":false,"registr' + 'ertIFrivillighetsregisteret":false,"konkurs":false,"underAvvikling":false,"underTvangsavviklingEllerTvangsopp' + 'losning":false,"maalform":"Bokmål","_links":{"self":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter' + '/974760673"},"overordnetEnhet":{"href":"https://data.brreg.no/enhetsregisteret/api/enheter/912660680"}}}', + status=200 + ) + + assert validate_vat_id('974 760 673 MVA', 'NO') == 'NO974760673MVA' + # No tests for CH currently since it's harder to mock Zeep