# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.pixeleyes.de/anleitungen-instructions/deutsch/dokumentation-unserer-shopware-6-plugins/vermietung-and-reservierungen-fur-shopware-6/wie-die-warenkorb-prufung-funktioniert.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
