Kunden — Sonderkonditionen (Sub-Route)
Zweck
Sub-Route /customers/:id/product-special-conditions pflegt individuelle Preisvereinbarungen zwischen dem Kunden und einzelnen Produkten oder ganzen Produkt-Gruppen. Pro Eintrag werden Preis-Override (absolut oder prozentual) und Gültigkeit gepflegt — beim Erstellen eines Verkaufsbelegs greift die Sonderkondition automatisch.
Identische Sub-Route auch pro Standort verfuegbar (/customers/:id/locations/:locId/product-special-conditions) — für standortspezifische Rabatte.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_Customer, Customer | Detail aufrufbar | — |
view/create/update/delete | ProductSpecialCondition | Pflegen | APP_SPEAMCORE_VIEW/CREATE/UPDATE/DELETE_PRODUCT_SPECIAL_CONDITION |
Schritt-für-Schritt-Anleitung
- Kunde (
/customers/:id) → Tab Sonderkonditionen. - + Neu öffnet einen Auswahl-Workflow:
- Pro einzelnes Produkt (
productId) — diese Sonderkondition gilt nur für dieses spezifische Produkt. - Pro Produkt-Gruppe (
productGroupId) — gilt für alle Produkte der Gruppe.
- Pro einzelnes Produkt (
- Wirkungs-Felder pflegen:
priceNet(absoluter Sonderpreis) oderdiscountPercent(relativer Rabatt) — eines von beiden.quantityFrom(Mengen-Staffel-Untergrenze, optional) — Sonderkondition gilt erst ab dieser Menge.validFrom/validTo(Gueltigkeitszeitraum, optional) — sonst gilt die Bedingung dauerhaft.
- Speichern. Beim Anlegen einer Verkaufsbeleg-Position für den Kunden greift die Bedingung automatisch, sofern Produkt + Menge + Datum matchen. Die Position zeigt dann den Sonderpreis statt des Listenpreises.

Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- Kunden — Eltern-Modul.
- Produkte und Produkt-Gruppen — Ziel der Sonderkondition.
- Verkaufsbelege — Belege werden mit aktiven Sonderkonditionen vorbefuellt.
- Identische Sub-Route auf Standort-Ebene (
/customers/:id/locations/:locId/product-special-conditions).
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/product-special-conditions?filter[customerId] | Liste | view ProductSpecialCondition |
POST | /api/product-special-conditions | Anlegen | create ProductSpecialCondition |
PATCH | /api/product-special-conditions/:id | Ändern | update ProductSpecialCondition |
DELETE | /api/product-special-conditions/:id | Soft-Delete | delete ProductSpecialCondition |
Versionshinweise
- 2026-04-30: Initiale Veroeffentlichung.