> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Prüfung der Ausweisnummer und Altersnachweis

> Wie Sie in WEBSALE V8s die Nummer eines deutschen Personalausweises oder Reisepasses abfragen, auf Gültigkeit prüfen und daraus die Volljährigkeit des Käufers ableiten.

Wer altersbeschränkte Ware verkauft, muss wissen, wie alt der Käufer ist. Eine Abfrage des Geburtsdatums hilft dabei wenig, denn sie lässt sich beliebig beantworten.

WEBSALE V8s geht deshalb über die Ausweisnummer. In der Nummer eines deutschen Personalausweises oder Reisepasses steckt das Geburtsdatum, und jeder Block der Nummer trägt eine Prüfziffer. Der Shop rechnet diese Prüfziffern nach und liest das Geburtsdatum aus. Eine ausgedachte Nummer fällt dabei mit hoher Wahrscheinlichkeit durch.

![Personalausweisnummer Eingabe](https://mintcdn.com/websaleag-44ee7ea6/qbW8uRSswcI46vuk/images/personalausweisnummer_eingabe.png?fit=max\&auto=format\&n=qbW8uRSswcI46vuk\&q=85\&s=cb8f35e613dc543c78a0086b9a1ec570)

> [!WARNING]
>
> Das ist eine Plausibilitätsprüfung, keine Identitätsprüfung. Der Shop rechnet nach, ob die Nummer aufgebaut ist wie eine echte. Er prüft nicht, ob dieser Ausweis existiert und ob er der Person gehört, die gerade bestellt. Wo ein belastbarer Altersnachweis gefordert ist, reicht dieses Verfahren allein nicht aus.

Die Prüfung kostet nichts und muss nicht freigeschaltet werden. Sie richten sie vollständig über die `shop.config` und Ihre Templates ein.

## Wie die Prüfung arbeitet

### Personalausweis

Die Personalausweisnummer besteht aus vier Blöcken, und jeder Block trägt am Ende seine eigene Prüfziffer. Entsprechend fragt der Shop sie in vier Feldern ab.

![Hmfile Hash 0c33afdd](https://mintcdn.com/websaleag-44ee7ea6/LS0r3yDDNtTzNzIH/images/hmfile_hash_0c33afdd.png?fit=max\&auto=format\&n=LS0r3yDDNtTzNzIH\&q=85\&s=88059a5529f9b001c418673a22971cbe)

| Feld | Inhalt | Länge |
| - | - | - |
| `IdentityCard1` | Behördenkennzahl und Seriennummer mit Prüfziffer | 11 |
| `IdentityCard2` | Geburtsdatum als `JJMMTT` mit Prüfziffer | 7 |
| `IdentityCard3` | Ablaufdatum als `JJMMTT` mit Prüfziffer | 8 |
| `IdentityCard4` | Gesamtprüfziffer | 1 |
| `IdentityCard5` | die vier Blöcke zusammengesetzt | wird nicht angezeigt |

Das fünfte Feld gibt es nur intern. Der Shop setzt darin die Eingaben zusammen, um die Gesamtprüfziffer nachzurechnen. Sie legen es an, bauen aber kein Eingabefeld dafür.

Bei neueren Personalausweisen steht vor der Gesamtprüfziffer noch eine vierstellige Versionsnummer. In diesem Fall ist `IdentityCard4` nicht ein, sondern fünf Zeichen lang. Der Shop erkennt beide Bauarten.

### Reisepass

Die Reisepassnummer besteht ebenfalls aus mehreren Blöcken, wird aber in einem einzigen Feld `PassportNumber1` abgefragt. Der Käufer überträgt die untere Zeile aus seinem Pass, ohne Leerzeichen.

![20181017 Reisepassnummerpruefung](https://mintcdn.com/websaleag-44ee7ea6/LS0r3yDDNtTzNzIH/images/20181017_reisepassnummerpruefung.png?fit=max\&auto=format\&n=LS0r3yDDNtTzNzIH\&q=85\&s=c45fb7a1c638be8597d3d04495eff172)

| Stelle | Inhalt |
| - | - |
| 1 bis 10 | Seriennummer mit Prüfziffer |
| 11 | Länderkennzeichen, muss `D` sein |
| 12 bis 18 | Geburtsdatum als `JJMMTT` mit Prüfziffer |
| 19 | Geschlecht, `M` oder `F` |
| 20 bis 26 | Ablaufdatum als `JJMMTT` mit Prüfziffer |
| letzte Stelle | Gesamtprüfziffer |

> [!WARNING]
>
> Der Buchstabe `D` und das `M` beziehungsweise `F` gehören mit ins Eingabefeld. Eine Reisepassnummer ohne diese beiden Zeichen weist der Shop zurück. Weisen Sie den Käufer im Beschriftungstext darauf hin, sonst scheitern korrekte Eingaben an einem Missverständnis.

Kürzer als 26 Zeichen wird die Nummer nicht angenommen. Ab 28 Zeichen behandelt der Shop sie als Nummer der neueren Bauart.

### Altersprüfung

Das Geburtsdatum steckt in der Nummer, deshalb kann der Shop daraus das Alter ausrechnen.

> [!WARNING]
>
> Die Altersgrenze ist fest auf **18 Jahre** eingestellt und lässt sich nicht konfigurieren. Andere Grenzen wie 16 Jahre sind mit dieser Prüfung nicht abbildbar.

### Was ein leeres Feld bedeutet

Ein leeres Feld besteht jede inhaltliche Prüfung. Gültigkeitsprüfung, Altersprüfung und Höchstlängenprüfung greifen nur, wenn überhaupt etwas eingetragen wurde.

Zur Pflicht wird ein Feld allein durch eine Mindestlängenprüfung mit `Type = minlen` und `Len = 1`. Diese eine Prüfung ist der Grund, warum in den Konfigurationsbeispielen unten so viele Blöcke stehen.

### Fehlermeldungen: allgemein statt genau

Sie können dem Käufer anzeigen lassen, welcher Block seiner Eingabe nicht stimmt. Das erleichtert die Korrektur, macht aber auch das Ausprobieren leichter: Wer blockweise Rückmeldung bekommt, kann sich Ziffer für Ziffer an eine formal gültige Nummer herantasten.

Die Beispiele auf dieser Seite verzichten deshalb auf blockgenaue Rückmeldung und geben nur einen allgemeinen Hinweis aus.

## Voraussetzung: Abfrage auf deutsche Kunden beschränken

Geprüft werden können nur deutsche Ausweise. Käufern mit ausländischer Rechnungsadresse dürfen die Felder deshalb gar nicht erst erscheinen. Dafür brauchen Sie drei Dinge, unabhängig davon, ob Sie den Personalausweis, den Reisepass oder beides abfragen.

**Erstens** muss das Länderfeld aktiv sein, denn die Sichtbarkeitsregel fragt es ab.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressFields-Txt>
   CountryISO = Länder-ISO-Code
</AddressFields-Txt>
```

**Zweitens** braucht das Land eine Vorbelegung, damit die Regel schon beim ersten Aufruf des Formulars greift.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressFields-Standards>
   CountryISO = DEU
</AddressFields-Standards>
```

**Drittens** hängen Sie die Ausweisfelder an dieses Land.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressFields-InputVisibility>
   <+FieldVisibility>
      AddressField  = IdentityCard1,IdentityCard2,IdentityCard3,IdentityCard4,IdentityCard5
      AddressType   = bill
      Visible       = yes
      ResetIfHidden = yes

      <+Condition>
         Field = CountryISO
         Type  = value
         Value = DEU
      </+Condition>
   </+FieldVisibility>
</AddressFields-InputVisibility>
```

`ResetIfHidden = yes` leert die Felder, sobald der Käufer sein Land wechselt. Ohne diese Einstellung bliebe eine bereits eingegebene Ausweisnummer in den Daten stehen, obwohl das Formular sie nicht mehr zeigt.

Damit das Ein- und Ausblenden schon während der Eingabe passiert und nicht erst nach dem Absenden, gehört zum Länderfeld das Nachladen der Adressfelder. Wie das eingerichtet wird, steht bei der eingabeabhängigen Adressdatensteuerung.

Referenz: [Abschnitt AddressFields-Txt](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#addressfields-txt) · [Abschnitt AddressFields-Standards](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md) · [Abschnitt AddressFields-InputVisibility](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#addressfields-inputvisibility)

## Personalausweisnummer abfragen

### Schritt 1: Felder anlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressFields-Txt>
   IdentityCard1 = Seriennummer
   IdentityCard2 = Geburtsdatum
   IdentityCard3 = Ablaufdatum
   IdentityCard4 = Prüfziffer
   IdentityCard5 = Prüfnummer
</AddressFields-Txt>
```

Der Text hinter `IdentityCard5` erscheint nirgends. Er muss nur dastehen, damit das Feld aktiv ist.

### Schritt 2: Höchstlänge der Eingabefelder

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressMaxInputLen>
   IdentityCard1 = 11
   IdentityCard2 = 7
   IdentityCard3 = 8
   IdentityCard4 = 1
</AddressMaxInputLen>
```

Setzen Sie `IdentityCard4` auf `5`, wenn Sie auch Ausweise der neueren Bauart mit vierstelliger Versionsnummer aufnehmen wollen.

Referenz: [Abschnitt AddressMaxInputLen](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#addressmaxinputlen)

### Schritt 3: Fehlertexte hinterlegen

Fehlertexte bekommen eine Kennung, auf die sich die Prüfungen später berufen. Sie stehen im Abschnitt `<ErrorMessages>` innerhalb von `<InputCheck>`.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<InputCheck>
   <ErrorMessages>
      emptyerror             = Bitte füllen Sie das Feld ~FieldName~ aus.
      checksumerror          = Ihre Ausweisnummer ist nicht gültig.
      agetooyoung            = Sie können erst ab 18 Jahren bestellen.
      maxlengthErrorIdentity = Es wurden zu viele Zeichen eingegeben. Bitte korrigieren Sie Ihre Eingabe.
   </ErrorMessages>
</InputCheck>
```

`~FieldName~` ersetzt der Shop durch die Beschriftung des Feldes, das den Fehler ausgelöst hat.

Findet der Shop zu einer `ErrorMessageID` keinen Eintrag, greift er auf den Text unter `Default` zurück. Ein Tippfehler in der Kennung fällt deshalb nicht als Fehler auf, sondern als unerwartet allgemeine Meldung.

### Schritt 4: Prüfungen festlegen

Die Feldnamen in `AddressField` sind fest vorgegeben und dürfen nicht geändert werden.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<InputCheck>
   <+InputCheck>                              # Pflichtfelder für deutsche Rechnungsadressen
      AddressField   = IdentityCard1,IdentityCard2,IdentityCard3,IdentityCard4
      AddressType    = bill
      Type           = minlen
      Len            = 1
      ErrorMessageID = emptyerror
      <+Condition>
         Field = CountryISO
         Type  = value
         Value = DEU
      </+Condition>
   </+InputCheck>

   <+InputCheck>                              # Prüfziffern nachrechnen
      AddressField   = IdentityCard1,IdentityCard2,IdentityCard3,IdentityCard5
      AddressType    = bill
      Type           = idcheck
      ErrorMessageID = checksumerror
   </+InputCheck>

   <+InputCheck>                              # Volljährigkeit, optional
      AddressField   = IdentityCard2
      AddressType    = bill
      Type           = agecheck
      ErrorMessageID = agetooyoung
   </+InputCheck>
</InputCheck>
```

Drei Punkte zu diesem Beispiel:

* Die Gültigkeitsprüfung läuft über **vier** Felder, aber nicht über dieselben vier wie die Pflichtfeldprüfung. `IdentityCard1`, `IdentityCard2` und `IdentityCard3` tragen je eine eigene Blockprüfziffer, die einzeln nachgerechnet wird. `IdentityCard5` trägt die Gesamtprüfziffer. `IdentityCard4` ist diese Gesamtprüfziffer selbst und wird deshalb nicht geprüft, sondern zum Prüfen verwendet.
* Die Altersprüfung gehört auf `IdentityCard2`, denn nur dort steht das Geburtsdatum. Auf ein anderes Feld gesetzt, liest sie sinnlose Werte.
* Soll nur die Gültigkeit geprüft werden und nicht das Alter, lassen Sie den dritten Block weg.

Ergänzen Sie nach demselben Muster je einen Block mit `Type = maxlen` für `IdentityCard1` bis `IdentityCard4`, mit denselben Längen wie in Schritt 2.

Referenz: [Abschnitt InputCheck](https://dokumentation.websale.de/v8s/referenz/konfigurationen/shopkonfiguration-shop-config/adressen-und-eingabepruefung.md#inputcheck)

### Schritt 5: Eingabefelder ins Template

Die Felder gehören innerhalb des `<form>` auf die Adressseite im Bestellablauf (`ws_address_combined.htm`) und auf die Adressverwaltung im Kundenkonto (`ws_address_manage.htm`).

Der Fehlertext zur Gültigkeitsprüfung erscheint an `A-IdentityCard5_errormessage`, weil nur dieses Feld die vollständige Nummer kennt. Deshalb steht er einmal unter der Vierergruppe und nicht viermal einzeln.

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{A-IdentityCard1_visible}
   <label for="~A-IdentityCard1_input~">~A-IdentityCard1_text~</label>
   <input type="text" name="~A-IdentityCard1_input~" id="~A-IdentityCard1_input~"
      maxlength="~A-IdentityCard1_max~" value="~A-IdentityCard1~"
      class="addr_text_input~A-IdentityCard1_error~">
{/A-IdentityCard1_visible}

{A-IdentityCard2_visible}
   <label for="~A-IdentityCard2_input~">~A-IdentityCard2_text~</label>
   <input type="text" name="~A-IdentityCard2_input~" id="~A-IdentityCard2_input~"
      maxlength="~A-IdentityCard2_max~" value="~A-IdentityCard2~"
      class="addr_text_input~A-IdentityCard2_error~">
{/A-IdentityCard2_visible}

{A-IdentityCard3_visible}
   <label for="~A-IdentityCard3_input~">~A-IdentityCard3_text~</label>
   <input type="text" name="~A-IdentityCard3_input~" id="~A-IdentityCard3_input~"
      maxlength="~A-IdentityCard3_max~" value="~A-IdentityCard3~"
      class="addr_text_input~A-IdentityCard3_error~">
{/A-IdentityCard3_visible}

{A-IdentityCard4_visible}
   <label for="~A-IdentityCard4_input~">~A-IdentityCard4_text~</label>
   <input type="text" name="~A-IdentityCard4_input~" id="~A-IdentityCard4_input~"
      maxlength="~A-IdentityCard4_max~" value="~A-IdentityCard4~"
      class="addr_text_input~A-IdentityCard4_error~">
{/A-IdentityCard4_visible}

{A-IdentityCard5_errormessage}
   <p class="error">~A-IdentityCard5_errormessage~</p>
{/A-IdentityCard5_errormessage}
```

Referenz: `A-technischer Name` mit den Endungen `_text`, `_input`, `_max`, `_error`, `_errormessage`, `_visible`

### Schritt 6: Eingegebene Nummer anzeigen

Sinnvoll auf der Bestellübersicht (`ws_place_order.htm`) und der Bestelleingangsbestätigung (`ws_confirm.htm`).

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{A-IdentityCard1}~A-IdentityCard1_text~: ~A-IdentityCard1~{/A-IdentityCard1}
{A-IdentityCard2}~A-IdentityCard2_text~: ~A-IdentityCard2~{/A-IdentityCard2}
{A-IdentityCard3}~A-IdentityCard3_text~: ~A-IdentityCard3~{/A-IdentityCard3}
{A-IdentityCard4}~A-IdentityCard4_text~: ~A-IdentityCard4~{/A-IdentityCard4}
```

## Reisepassnummer abfragen

Der Ablauf entspricht dem oben beschriebenen. Es gibt nur ein Feld, und die Prüftypen heißen anders.

### Schritt 1: Feld anlegen und Länge festlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<AddressFields-Txt>
   PassportNumber1 = Reisepassnummer
</AddressFields-Txt>

<AddressMaxInputLen>
   PassportNumber1 = 28
</AddressMaxInputLen>
```

> [!WARNING]
>
> Setzen Sie die Höchstlänge nicht unter 28. Ab 28 Zeichen behandelt der Shop die Nummer als neuere Bauart. Eine Begrenzung auf 27 schneidet solche Nummern ab, und der Käufer bekommt eine Fehlermeldung, obwohl seine Eingabe richtig war.

Die Sichtbarkeitsregel für `PassportNumber1` bauen Sie wie oben, mit einem eigenen `<+FieldVisibility>`-Block im selben Abschnitt.

### Schritt 2: Fehlertexte ergänzen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ErrorMessages>
   emptyerrorpassport = Bitte füllen Sie das Feld für die Reisepassnummer aus.
   invalidpassport    = Die eingegebene Reisepassnummer ist nicht gültig.
</ErrorMessages>
```

### Schritt 3: Prüfungen festlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>                              # Pflichtfeld
   AddressField   = PassportNumber1
   AddressType    = bill
   Type           = minlen
   Len            = 1
   ErrorMessageID = emptyerrorpassport
   <+Condition>
      Field = CountryISO
      Type  = value
      Value = DEU
   </+Condition>
</+InputCheck>

<+InputCheck>                              # Aufbau und Prüfziffern
   AddressField   = PassportNumber1
   AddressType    = bill
   Type           = passportcheck
   ErrorMessageID = invalidpassport
</+InputCheck>

<+InputCheck>                              # Höchstlänge
   AddressField   = PassportNumber1
   AddressType    = bill
   Type           = maxlen
   Len            = 28
   ErrorMessageID = maxlengthErrorIdentity
</+InputCheck>

<+InputCheck>                              # Volljährigkeit, optional
   AddressField   = PassportNumber1
   AddressType    = bill
   Type           = agecheckpassport
   ErrorMessageID = agetooyoung
</+InputCheck>
```

Für den Reisepass heißt die Altersprüfung `agecheckpassport`, nicht `agecheck`. Sie sucht das Geburtsdatum an einer anderen Stelle, nämlich mitten in der Nummer statt an ihrem Anfang.

### Schritt 4: Eingabefeld ins Template

```html theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{A-PassportNumber1_visible}
   <label for="~A-PassportNumber1_input~">~A-PassportNumber1_text~</label>
   <input type="text" name="~A-PassportNumber1_input~" id="~A-PassportNumber1_input~"
      maxlength="~A-PassportNumber1_max~" value="~A-PassportNumber1~"
      class="addr_text_input~A-PassportNumber1_error~">
   {A-PassportNumber1_errormessage}
      <p class="error">~A-PassportNumber1_errormessage~</p>
   {/A-PassportNumber1_errormessage}
{/A-PassportNumber1_visible}
```

Die Anzeige der eingegebenen Nummer funktioniert wie beim Personalausweis, mit `{A-PassportNumber1}`.

## Beides gleichzeitig anbieten

Bieten Sie beide Nummern an, soll der Käufer eine von beiden ausfüllen dürfen, nicht beide. Genau das ist der schwierige Teil, denn die Pflichtfeldprüfungen aus den Abschnitten oben würden sich gegenseitig blockieren.

Die Lösung besteht aus Bedingungen: Jede Pflichtfeldprüfung wird an die Bedingung geknüpft, dass die jeweils andere Nummer leer ist.

> [!WARNING]
>
> Trägt der Käufer in beide Nummern etwas ein, werden auch beide geprüft, und beide müssen gültig sein. Er kommt also nicht weiter, solange eine der beiden Nummern fehlerhaft ist, selbst wenn die andere stimmt. Er muss die fehlerhafte Eingabe dann vollständig löschen. Weisen Sie im Formular darauf hin, dass **eine** Nummer genügt.

### Schritt 1: Zusätzlichen Fehlertext anlegen

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<ErrorMessages>
   emptyerroridentity = Bitte füllen Sie die Felder für die Ausweisnummer aus.
</ErrorMessages>
```

### Schritt 2: Pflichtfeldprüfung des Personalausweises ergänzen

Erweitern Sie die Pflichtfeldprüfung aus dem Personalausweis-Abschnitt um eine zweite Bedingung und tauschen Sie die Fehlerkennung aus.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = IdentityCard1,IdentityCard2,IdentityCard3,IdentityCard4
   AddressType    = bill
   Type           = minlen
   Len            = 1
   ErrorMessageID = emptyerroridentity
   <+Condition>
      Field = CountryISO
      Type  = value
      Value = DEU
   </+Condition>
   <+Condition>                            # nur prüfen, wenn kein Reisepass eingetragen ist
      Field = PassportNumber1
      Type  = empty
   </+Condition>
</+InputCheck>
```

Mehrere `<+Condition>`-Blöcke in einer Prüfung wirken zusammen: Die Prüfung läuft nur, wenn alle Bedingungen zutreffen.

Die Pflichtfeldprüfung des Reisepasses bekommt spiegelbildlich vier Bedingungen, je eine pro Personalausweisfeld, alle mit `Type = empty`.

### Schritt 3: Angefangene Personalausweiseingabe vollständig einfordern

Hat der Käufer auch nur eines der vier Personalausweisfelder ausgefüllt, sollen alle vier ausgefüllt sein. Dafür brauchen Sie vier weitere Prüfungen, die sich nur im Feld ihrer Bedingung unterscheiden.

```ini theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
<+InputCheck>
   AddressField   = IdentityCard1,IdentityCard2,IdentityCard3,IdentityCard4
   AddressType    = bill
   Type           = minlen
   Len            = 1
   ErrorMessageID = emptyerroridentity
   <+Condition>
      Field = IdentityCard1
      Type  = filled
   </+Condition>
</+InputCheck>
```

Wiederholen Sie diesen Block für `IdentityCard2`, `IdentityCard3` und `IdentityCard4` in der Bedingung. Der Rest bleibt jeweils gleich.

### Bedingungstypen im Überblick

`Type` in einem `<+Condition>`-Block kennt diese Werte:

| Wert | Bedingung trifft zu, wenn das Feld |
| - | - |
| `filled` | gefüllt ist |
| `empty` | leer ist |
| `value` | genau `Value` enthält |
| `notvalue` | etwas anderes als `Value` enthält |
| `inlist` | einen der Werte aus der Liste `Value` enthält |
| `notinlist` | keinen der Werte aus `Value` enthält |
| `prefix` | mit `Value` beginnt |
| `notprefix` | nicht mit `Value` beginnt |
| `greater` | als Zahl größer ist als `Value` |
| `smaller` | als Zahl kleiner ist als `Value` |

> [!WARNING]
>
> Ein `Type`, den der Shop nicht kennt, führt nicht zu einer Fehlermeldung. Er wird stillschweigend wie `filled` behandelt. Ein Tippfehler an dieser Stelle fällt deshalb erst auf, wenn eine Prüfung im Betrieb anders greift als gedacht.

## Verwandte Themen

* Wegweiser: [Prüfungen von Adressdaten festlegen, für alle weiteren Prüftypen im Abschnitt `<InputCheck>`](https://dokumentation.websale.de/v8s/adressdaten/pruefungen-von-adressdaten-festlegen)
* Wegweiser: [Auswahl zwischen Privat- und Geschäftsadresse, für das Nachladen der Adressfelder](https://dokumentation.websale.de/v8s/adressdaten/auswahl-zwischen-privat-und-geschaeftsadresse.md)
* Wegweiser: [Rechnungsadresse abfragen](https://dokumentation.websale.de/v8s/adressdaten/rechnungsadresse-abfragen.md)
* Wegweiser: [Prüfung von Kundendaten festlegen](https://dokumentation.websale.de/v8s/adressdaten/pruefung-von-kundendaten-festlegen.md)


## Related topics

- [Prüfungen von Adressdaten festlegen](https://dokumentation.websale.de/v8s/adressdaten/pruefungen-von-adressdaten-festlegen.md)
- [Spezielle Versandarten](https://dokumentation.websale.de/v8s/versandarten-anlegen/spezielle-versandarten.md)
- [Bestellprozess, Adressen und Prüfungen](https://dokumentation.websale.de/v8s/referenz/tags/ws/bestellprozess-adressen-und-pruefungen.md)
- [Prüfung von Kundendaten festlegen](https://dokumentation.websale.de/v8s/adressdaten/pruefung-von-kundendaten-festlegen.md)
- [Anmeldung und Registrierung](https://dokumentation.websale.de/v8s/kundenkonto/anmeldung-registrierung.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.