Zahlungsbedingungen
Zweck
Zahlungsbedingungen (PaymentTarget) sind Stammdaten-Vorlagen für Faelligkeit und Skonto. Sie werden auf Belegen (SalesDocument.paymentTargetId, PurchaseDocument.paymentTargetId) und Kunden-Stammdaten referenziert. Standard-Set wird über Setup-Wizard Schritt 8 angelegt — kann hier nachgepflegt werden.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Wirkung | Keycloak-Rolle |
|---|---|---|---|
view | FE_PaymentTarget, PaymentTarget | Liste/Details aufrufbar | — |
create/update/delete | PaymentTarget | Pflegen | APP_SPEAMCORE_CREATE/UPDATE/DELETE_PAYMENT_TARGET |
Schritt-für-Schritt-Anleitung
Zahlungsbedingung anlegen
- Zahlungsbedingungen (
/payment-targets) → + Neu. - Name vergeben (z. B. „14 Tage 2 % Skonto, 30 Tage netto").
- Werte für
paymentTermDays,discountDays,discountPercentagesetzen. - Änderungen werden automatisch gespeichert (
formik.handleSubmit()on change).


Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
UI-Elemente
Button: „+ Neu"
Listenseite. Erfordert create:PaymentTarget. Erzeugt leeren Datensatz und navigiert auf Details.
Button: „FinancialAccountInfoButton"
Detail-Seite, neben financialAccount. Öffnet ein Info-Panel zur verbundenen Finanzbuchhaltungs-Verknuepfung.
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Beschreibung | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|---|
name | ja | String | Bezeichnung der Zahlungsbedingung. | Erscheint in Auswahl-Selects auf Belegen und Kundenstamm. | — |
paymentTermDays | nein | Integer | Standard-Zahlungsfrist in Tagen. | Bestimmt dueDate auf Belegen: documentDate + paymentTermDays. | — |
discountDays | nein | Integer | Tage, innerhalb derer Skonto gewährt wird. | Wenn der Beleg innerhalb dieser Frist bezahlt wird, wird discountPercentage als Nachlass gewährt. | — |
discountPercentage | nein | Float | Prozentualer Nachlass bei Skonto-Zahlung. | Reduziert die Zahlungssumme bei rechtzeitigem Eingang. | Wert zwischen 0 und ca. 5 % marktueblich. |
financialAccount | — | String (read-only) | Verknuepfung zur Finanzbuchhaltung. | Wird im FE als Text-Input gerendert, ist aber disabled. | — |
Validierung im Live-Walkthrough getestet: keine FE-Validierung. Beim Demo-Eintrag „10 Tage 2 % Skonto, 30 Tage netto" wurde discountDays testweise auf 50 gesetzt (größer als paymentTermDays 30) — Form akzeptiert den Wert ohne Fehler oder Warnung. Auch keine Validierung von discountPercentage auf 0–100. Wenn ihr dort harte Plausibilitaetspruefung wollt, muss sie im Frontend (paymentTargetFieldsConfig.ts oder Formik-Validation) ergaenzt werden — der Backend-Service hat ebenfalls keine Range-Prüfung.
Workflows und Zustaende
PaymentTargets haben kein Status-Feld — Aktivität über paranoid Soft-Delete.
Verknuepfungen zu anderen Modulen
- Verkaufsbelege —
SalesDocument.paymentTargetId. Pflicht ausser beicreditNote. - Bestellbelege —
PurchaseDocument.paymentTargetId. Pflicht ausser beipriceRequest. - Kunden — Default-Zahlungsbedingung pro Kunde möglich.
- OP-Liste —
dueDate-Berechnung haengt vonpaymentTermDaysab. - Setup-Wizard Schritt 8 — Standard-Set wird dort angelegt (Sofort, 14 Tage netto, 10/2 30 netto, 30 Tage netto).
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/payment-targets | Liste | view PaymentTarget |
GET | /api/payment-targets/:id | Detail | view PaymentTarget |
POST | /api/payment-targets | Anlegen | create PaymentTarget |
PUT | /api/payment-targets/:id | Ändern | update PaymentTarget |
DELETE | /api/payment-targets/:id | Soft-Delete | delete PaymentTarget |
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung.