Zum Hauptinhalt springen

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

- Berechtigung `view:Customer` und `view:ProductSpecialCondition`. - Bestehende Produkte oder Produkt-Gruppen.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_Customer, CustomerDetail aufrufbar
view/create/update/deleteProductSpecialConditionPflegenAPP_SPEAMCORE_VIEW/CREATE/UPDATE/DELETE_PRODUCT_SPECIAL_CONDITION

Schritt-für-Schritt-Anleitung

  1. Kunde (/customers/:id) → Tab Sonderkonditionen.
  2. + 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.
  3. Wirkungs-Felder pflegen:
    • priceNet (absoluter Sonderpreis) oder discountPercent (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.
  4. 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.
**Prioritaet bei mehreren matching Conditions**: produktspezifische Bedingung (`productId`) schlaegt Gruppen-Bedingung (`productGroupId`); spezifische Mengen-Staffel-Bedingung schlaegt allgemeine. Bei zeitueberlappenden Bedingungen mit identischer Spezifizitaet wird die zuletzt angelegte (`createdAt DESC`) genommen.

Listenansicht — customers-product-special-conditions

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

MethodeEndpointZweckCASL
GET/api/product-special-conditions?filter[customerId]Listeview ProductSpecialCondition
POST/api/product-special-conditionsAnlegencreate ProductSpecialCondition
PATCH/api/product-special-conditions/:idÄndernupdate ProductSpecialCondition
DELETE/api/product-special-conditions/:idSoft-Deletedelete ProductSpecialCondition

Versionshinweise

  • 2026-04-30: Initiale Veroeffentlichung.