# How the Cart Validation Works in the Frontend

#### 1) Basic Requirements

* The product must be configured as a rental item (tab Specifications → Rental).
* All relevant plugin settings (e.g. net/gross calculation, calendar, opening hours) must be saved.
* Afterwards, clear the cache if necessary.

***

#### 2) When clicking “Add to cart,” the plugin performs the following checks — in this order:

<br>

**A. Date Overlap (always active, regardless of parallel rentals)**

* The plugin checks whether the selected rental period overlaps with any existing reservation.
* If yes, and parallel rentals are not allowed (or Max. Parallel = 0/empty),

  the item cannot be added to the cart.
* The frontend displays an error message (snippet e.g. notAvailable).

***

**B. Parallel Rentals (only if enabled)**

* If “Check parallel rentals” is enabled for the product, the plugin determines:
  * the already reserved quantity during the requested period (from the reservation table),
  * the quantity already in the current cart,
  * and the currently requested quantity.
* These values are added up to form the total planned quantity.
* If the total planned quantity exceeds the product’s setting for “Max. parallel rentals,”

  the addition to the cart is rejected.
* The error message shows the allowed maximum (snippet e.g. maxParallelDays).

***

**C. Quantity Limit per Add-to-Cart**

* If the customer increases the quantity (e.g. “30 items”), this quantity is also included in the total planned quantity.
* Even if there are no items yet in the cart, the system blocks the addition if

  requested quantity + existing reservations > Max. Parallel.

***

#### 3) Examples

* Parallel rentals disabled

  An existing reservation: Oct 22 – Oct 28

  Requested period: Oct 21 – Oct 29 → Overlaps → Rejected (regardless of quantity).
* Parallel rentals = 2

  One reservation already exists.

  Customer adds quantity 2 → total = 1 + 2 = 3 > 2 → Rejected.

  Customer adds quantity 1 → total = 1 + 1 = 2 → Allowed.

***

#### 4) Display and Messages

* All error and info texts are managed via snippets (e.g. notAvailable, maxParallelDays, minDays, maxDays).
* This means all messages are fully translatable.

***

#### 5) Technical Overview (no code)

* The logic runs before the actual add-to-cart process.
* It considers both:
  * existing reservations in the requested period, and
  * items already in the current cart.
* Only if all checks pass will the rental item be added successfully.

***

> 💡 Tester Tip:

> Ensure the product is correctly configured as a rental item (prices, min/max days, parallel settings, etc.)

> and clear the shop cache before testing — this ensures all configuration and snippet changes are applied properly.


---

# 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/english/documentation-of-our-shopware-6-plugins/product-rental-and-reservations-for-shopware-6/how-the-cart-validation-works-in-the-frontend.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.
