feat(repairs): add repair estimates
This commit is contained in:
parent
6e7e75f864
commit
4436fe5f73
25 changed files with 1802 additions and 9 deletions
|
|
@ -380,6 +380,66 @@ RBAC:
|
|||
|
||||
Athena ruft diese Endpunkte ausschliesslich ueber `/api/repairs/[id]/documents...` auf. Mutierende Requests verwenden den Same-Origin-Schutz.
|
||||
|
||||
### Kostenvoranschläge
|
||||
|
||||
Ab v0.8.6 verwaltet Olympus Kostenvoranschlaege direkt im Repair-Modul. Es gibt keinen Kundenlogin und keine neue Website-App. Kundenentscheidungen laufen ueber den bestehenden sicheren Public-Statuslink.
|
||||
|
||||
Datenmodell:
|
||||
|
||||
- `repair_estimates`
|
||||
- `repair_estimate_items`
|
||||
- `repair_estimate_events`
|
||||
|
||||
Kostenvoranschlagsnummern folgen `KV<jahr>-000001`. Positionstypen sind `labor`, `part`, `flat_rate`, `shipping` und `other`. Statuswerte sind `draft`, `sent`, `approved`, `declined`, `expired` und `cancelled`.
|
||||
|
||||
Hermes berechnet alle Summen serverseitig:
|
||||
|
||||
- `subtotal_cents` aus Positionen
|
||||
- `tax_cents` aus `tax_rate_percent`
|
||||
- `total_cents` als Summe aus netto und Steuer
|
||||
|
||||
Interne Hermes-Endpunkte:
|
||||
|
||||
- `GET /repairs/{repair_id}/estimates`
|
||||
- `POST /repairs/{repair_id}/estimates`
|
||||
- `GET /repairs/{repair_id}/estimates/{estimate_id}`
|
||||
- `PUT /repairs/{repair_id}/estimates/{estimate_id}`
|
||||
- `DELETE /repairs/{repair_id}/estimates/{estimate_id}`
|
||||
- `POST /repairs/{repair_id}/estimates/{estimate_id}/send`
|
||||
- `POST /repairs/{repair_id}/estimates/{estimate_id}/cancel`
|
||||
- `GET /repairs/{repair_id}/estimates/{estimate_id}/events`
|
||||
|
||||
RBAC:
|
||||
|
||||
- `repair_estimates.read`
|
||||
- `repair_estimates.create`
|
||||
- `repair_estimates.update`
|
||||
- `repair_estimates.delete`
|
||||
- `repair_estimates.send`
|
||||
|
||||
Administrator bekommt alle Rechte. Management und Technik bekommen Lesen/Erstellen/Bearbeiten/Senden. Support bekommt Lesen/Senden.
|
||||
|
||||
Public API:
|
||||
|
||||
- `GET /public/repairs/status/{token}` liefert bei aktivem gesendetem KV ein Feld `estimate`.
|
||||
- `POST /public/repairs/status/{token}/estimate/approve`
|
||||
- `POST /public/repairs/status/{token}/estimate/decline`
|
||||
- `POST /public/repairs/status/{token}/estimate/question`
|
||||
|
||||
Die Public-Antwort enthaelt keine internen Notizen, keine internen Events und keine Tokens. Bei Freigabe setzt Olympus den KV auf `approved` und den Reparaturstatus auf `approved`. Bei Ablehnung oder Rueckfrage bleibt der Prozess bei `waiting_for_customer`.
|
||||
|
||||
Der KV-Versand nutzt die bestehende SMTP-Konfiguration aus `system_settings` mit Env-Fallback. Fehler beim Mailversand zerstoeren den KV nicht; der Versandversuch wird als Notification Event dokumentiert.
|
||||
|
||||
Nicht enthalten in v0.8.6:
|
||||
|
||||
- PDF-Erzeugung
|
||||
- Lexoffice
|
||||
- Rechnungserstellung
|
||||
- Kundenlogin
|
||||
- Anzeige/Freigabe in der oeffentlichen Website
|
||||
|
||||
Die Website kann spaeter, z. B. in `funktechnik-schubert-website` v0.4.3, die bereits vorhandenen Public-API-Daten anzeigen und die Entscheidungsendpunkte aufrufen.
|
||||
|
||||
### Website Repair Intake
|
||||
|
||||
Hermes stellt `POST /public/repair-intake` fuer eine spaetere serverseitige Website-Anbindung bereit.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue