wir haben ab und an das Problem das Kunden die UST-ID ohne fehlendem Länderkenner eingibt. Wie kann man das am besten verhindert? Es sollte auch sehr sicher sein, also wenn der Kunde hin und herspringt in dem Registrierungsprozess sollte das immer geprüft werden. Wir brauchen die Nummer mit führendem Länderkenner.
Ist gesetzt. Trotzdem schaffen es die Kunden trotzdem mit Nummern ohne führendem Länderkenner durchzukommen, bzw. die Registrierung ohne Länderkenner abzuschließen.
Im Shopware-Standard findet lediglich eine Plausibilitätsprüfung statt. Andere Plugins bieten eine echte Anbindung an die zentrale Dateninstanz in Europa.
ja, aber wenn Du wirklich auf eine händische Prüfung verzichten willst, führt ohnehin kein Weg an einem Plugin mit Schnittstelle vorbei. Die Händler tragen ja auch Leerzeichen ein.
Naja, bei uns ist es so, dass die UST-ID auch akzeptiert wird, wenn die Länderkennung davor fehlt (in Shopware 6.5.8.6). Das verwirft zurecht unser ERP! Das hat nichts mit Plausibilitätsprüfung zu tun. Es sollte einfach mal die Definition von Umsatzsteuer-Identifikationsnummer – Wikipedia beachtet werden. Gerne kann per Plugin auch noch tiefer gegangen werden, ob die UST-ID auch zum eingegeben Unternehmensstandort passt. Uns würde schon reichen, wenn laut Definition auf Umsatzsteuer-Identifikationsnummer – Wikipedia korrekt funktionieren würde.
Habs mir mal genauer angesehen: Im 6.5 waren die Validierungsmuster noch so:
(DE)?[0-9]{9}
im 6.6 aber so
DE\d{9}
Für die, die keine „regex“ sprechen: Bei der alten Variante sind die beiden ersten Buchstaben optional, bei der neuen nicht mehr. Also am besten in der DB das Feld „vat_id_pattern“ in country anpassen, da es, soweit ich sehen kann, dafür kein Feld im Admin gibt.
Wer sein 6.5 auf die Pattern von 6.6 ändern möchte, hier mal die Datenbankanweisungen dafür:
UPDATE country SET vat_id_pattern="DE\\d{9}" WHERE iso="DE";
UPDATE country SET vat_id_pattern="(EL|GR)?[0-9]{9}" WHERE iso="GR";
UPDATE country SET vat_id_pattern="(GB)?([0-9]{9}([0-9]{3})?|[A-Z]{2}[0-9]{3})" WHERE iso="GB";
UPDATE country SET vat_id_pattern="IE\\d{7}[A-WY][A-I]?|IE[0-9+][A-Z+][0-9]{5}[A-WY]" WHERE iso="IE";
UPDATE country SET vat_id_pattern="IT\\d{11}" WHERE iso="IT";
UPDATE country SET vat_id_pattern="LU\\d{8}" WHERE iso="LU";
UPDATE country SET vat_id_pattern="NL\\d{9}B\\d{2}" WHERE iso="NL";
UPDATE country SET vat_id_pattern="ATU\\d{8}" WHERE iso="AT";
UPDATE country SET vat_id_pattern="PT\\d{9}" WHERE iso="PT";
UPDATE country SET vat_id_pattern="SE\\d{12}" WHERE iso="SE";
UPDATE country SET vat_id_pattern="ES[A-Z]\\d{7}[A-Z]$|^ES[A-Z][0-9]{7}[0-9A-Z]$|^ES[0-9]{8}[A-Z]" WHERE iso="ES";
UPDATE country SET vat_id_pattern="PL\\d{10}" WHERE iso="PL";
UPDATE country SET vat_id_pattern="HU\\d{8}" WHERE iso="HU";
UPDATE country SET vat_id_pattern="CZ\\d{8,10}" WHERE iso="CZ";
UPDATE country SET vat_id_pattern="SK\\d{10}" WHERE iso="SK";
UPDATE country SET vat_id_pattern="RO\\d{2,10}" WHERE iso="RO";
UPDATE country SET vat_id_pattern="BE0\\d{9}" WHERE iso="BE";
UPDATE country SET vat_id_pattern="DK\\d{8}" WHERE iso="DK";
UPDATE country SET vat_id_pattern="FI\\d{8}" WHERE iso="FI";
UPDATE country SET vat_id_pattern="FR[A-HJ-NP-Z0-9]{2}\\d{9}" WHERE iso="FR";
UPDATE country SET vat_id_pattern="BG\\d{9,10}" WHERE iso="BG";
UPDATE country SET vat_id_pattern="EE\\d{9}" WHERE iso="EE";
UPDATE country SET vat_id_pattern="LV\\d{11}" WHERE iso="LV";
UPDATE country SET vat_id_pattern="LT\\d{9,12}" WHERE iso="LT";
UPDATE country SET vat_id_pattern="MT\\d{8}" WHERE iso="MT";
UPDATE country SET vat_id_pattern="SI\\d{8}" WHERE iso="SI";
UPDATE country SET vat_id_pattern="CY\\d{8}L" WHERE iso="CY";
Die Tabelle country sicherheitshalber vorher sichern.
Das interessiert mich auch. Unser ERP würde Leerzeichen akzeptieren. Einige Kunden von uns kopieren jedoch die UST-ID von ihrer Webseite und hier sind oftmals Leerzeichen enthalten (nicht nur nach dem Ländercode).
Müssten somit dann den Fehlermeldungenstext erweitern, damit Kunden verstehen, warum die eingegebene UST-ID als ungültig angesehen wird.
Cool wäre es daher, wenn die UST-ID mit Leerzeichen eingegeben werden kann aber in Shopware dann ohne Leerzeichen geschrieben wird (Leerzeichen werden automatisch entfernt).
Also wir hatten tatsächlich auch das Problem mal, ich habe aber einfach im TWIG ein Script mit eingefügt dass die Leerzeichen dann einfach entfernt. Heißt als Endkunde, kannst du zwar ein Leerzeichen eingeben aber wird direkt weggeschnitten. Auch wenn ich z.B. DE 123 4 5 678 kopiert habe als Endkunde und möchte es im UST-ID eintragen kann er das tun, nur dass dann im Feld eben alles weggeschnitten wird und somit DE12345678 stehen bleibt.