# Wie die Warenkorb-Prüfung funktioniert

1. Basis-Voraussetzungen

* Der Artikel ist als Mietartikel konfiguriert (Reiter Spezifikationen → Miete).
* Relevante Plugin-Einstellungen (z. B. Netto/Brutto, Kalender, Öffnungszeiten) sind gesetzt.
* Danach ggf. Cache leeren.<br>

2. Beim Klick auf „In den Warenkorb“ prüft das Plugin in dieser Reihenfolge

A. Datumsüberlappung (immer, unabhängig von Parallel-Prüfung)

* Es wird geprüft, ob der gewünschte Zeitraum irgendeine vorhandene Reservierung überlappt.
* Wenn ja und keine parallelen Vermietungen erlaubt sind (bzw. Max. Parallel = 0/leer), wird das Hinzufügen abgelehnt.
* Fehlermeldung im Frontend (z. B. notAvailable).<br>

B. Parallele Vermietungen (nur wenn aktiviert)

* Ist „Prüfung paralleler Vermietungen“ am Produkt aktiv, ermittelt das Plugin:
  * bereits reservierte Menge im gewünschten Zeitraum (aus der Reservierungstabelle),
  * bereits im aktuellen Warenkorb liegende Menge dieses Produkts,
  * die aktuell angefragte Menge.
* Aus diesen drei Werten wird die Gesamt-Planmenge berechnet.
* Liegt die Gesamt-Planmenge über der im Produkt hinterlegten Grenze „Max. parallele Vermietungen“, wird das Hinzufügen abgelehnt.
* Die Fehlermeldung nennt die erlaubte Obergrenze (z. B. maxParallelDays).<br>

C. Mengen-Grenze pro Add-to-Cart

* Erhöht der Kunde die Menge (z. B. „30 Stück“), fließt genau diese Menge in die Gesamt-Planmenge ein.
* Auch ohne bereits vorhandene Warenkorb-Positionen wird der Vorgang blockiert, wenn die angefragte Menge + bestehende Reservierungen > Max. Parallel ist.

3. Beispiele

* Keine parallelen Vermietungen erlaubt

  Es existiert bereits eine Reservierung 22.–28.10.

  Wunsch: 21.–29.10. → überlappt → Abbruch (unabhängig von Menge).
* Parallele Vermietungen = 2

  Es existiert 1 Reservierung im Zeitraum; Kunde legt Menge 2 in den Warenkorb → Gesamt-Planmenge = 1+2 = 3 > 2 → Abbruch.

  Kunde legt Menge 1 → Gesamt-Planmenge = 1+1 = 2 → erlaubt.<br>

4. Hinweise zur Darstellung/Meldungen

* Alle Fehl- und Hinweistexte kommen aus Snippets (z. B. notAvailable, maxParallelDays, minDays, maxDays).
* Dadurch sind die Meldungen vollständig übersetzbar.<br>

5. Technischer Kurzüberblick (ohne Code)<br>

* Die Logik greift vor dem eigentlichen Add-to-Cart.
* Es werden Reservierungen im Zeitraum (Überlappung) sowie bereits im Warenkorb befindliche Mengen berücksichtigt.
* Erst wenn alle Prüfungen erfolgreich sind, wird die Position in den Warenkorb gelegt.

{% hint style="info" %}
Tipp für Tester:\
\
Bitte sicherstellen, dass der Artikel korrekt als Mietartikel konfiguriert ist (Preise/Min-/Max-Tage, Parallelen, etc.) und ggf. den Shop-Cache leeren, damit alle Snippets/Einstellungen greifen.
{% endhint %}
