- Neuer Workflow-Step "Zahlung" zeigt ausgelieferte Artikel mit Menge und Preis, Betragsaufstellung, Zahlungsstatus und einen grossen Button "Zahlung abwickeln" (fest unten) - Zahlungs-Modal: grosser offener Betrag, Methoden als Cards aus den Backend-Stammdaten, bei EC-Karte gross die Kundennummer; schliesst nur ueber Abbrechen, "Zahlung erhalten" oder "Lieferung abbrechen" (mit Grund) - Bestaetigung wird am Server protokolliert (RecordDeliveryPayment); bis dahin sind "Weiter" und die Uebersicht gesperrt, ausser es ist nichts offen (bereits bezahlt). Aendert sich der Betrag danach, wird die Zahlung als veraltet markiert und muss erneut abgewickelt werden - Uebersicht zeigt die abgewickelte Zahlung statt eigener Methodenauswahl; Unterschrift-Flow ohne doppelte Inkasso-Stufe; Abschluss sendet Methode und Inkasso-Flag der gueltigen Zahlung - DeliveryPaymentStatus als einzige Quelle fuer offenen Betrag (gleiche Formel wie Backend); Artikelliste/Betragskarte als geteilte Widgets; Begruendungs-Dialog geteilt mit Info-Step - API-Client aus aktueller Backend-Spec neu generiert - Tests fuer Zahlungsstatus und Modal Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 KiB
17 KiB
holzleitner_api (EXPERIMENTAL)
Backend für die Holzleitner-Lieferservice-App — Tour, Beladung, Ausführung.
This Dart package is automatically generated by the OpenAPI Generator project:
- API version: 0.1.0
- Generator version: 7.10.0
- Build package: org.openapitools.codegen.languages.DartDioClientCodegen
Requirements
- Dart 2.15.0+ or Flutter 2.8.0+
- Dio 5.0.0+ (https://pub.dev/packages/dio)
Installation & Usage
pub.dev
To use the package from pub.dev, please include the following in pubspec.yaml
dependencies:
holzleitner_api: 1.0.0
Github
If this Dart package is published to Github, please include the following in pubspec.yaml
dependencies:
holzleitner_api:
git:
url: https://github.com/GIT_USER_ID/GIT_REPO_ID.git
#ref: main
Local development
To use the package from your local drive, please include the following in pubspec.yaml
dependencies:
holzleitner_api:
path: /path/to/holzleitner_api
Getting Started
Please follow the installation procedure and then run the following:
import 'package:holzleitner_api/holzleitner_api.dart';
final api = HolzleitnerApi().getAccountsApi();
final int personalnummer = 789; // int | Personalnummer des Accounts
try {
final response = await api.getAccount(personalnummer);
print(response);
} catch on DioException (e) {
print("Exception when calling AccountsApi->getAccount: $e\n");
}
Documentation for API Endpoints
All URIs are relative to http://localhost
| Class | Method | HTTP request | Description |
|---|---|---|---|
| AccountsApi | getAccount | GET /accounts/{personalnummer} | Liest den Account zu einer Personalnummer. |
| AdminApi | belegeDetails | GET /admin/belege/{belegnummer} | Liefert das volle Detail-Paket zu einer ERP-Belegnummer: die Lieferung mit Positionen (inkl. Scan-Ständen), Kunde + Ansprechpartner, referenzierte Artikel/Lager, Notizen, Geld-Gutschrift, Dienstleistungswerte und Kontakte — destilliert aus dem Tour-Aggregat. Jede Lieferung, unabhängig vom Status. `404`, wenn die Belegnummer unbekannt ist. |
| AdminApi | completedDeliveries | GET /admin/completed-deliveries | Liefert alle abgeschlossenen (ausgelieferten) Lieferungen — optional auf einen Datumsbereich eingegrenzt, unabhängig vom Mail-Versand-Status. Gefiltert wird über den Berliner Kalendertag des Abschluss-Zeitpunkts (`completed_at`). |
| AdminApi | deliveredBelegnummern | GET /admin/delivered-belegnummern | Liefert die Belegnummern ausgelieferter (abgeschlossener) Lieferungen, deren Liefermail noch nicht versendet wurde (`mail_sent_at IS NULL`). „Ausgeliefert" = es existiert ein Abschluss. Mit `day` (DD-MM-YYYY) nur Abschlüsse dieses Berliner Kalendertages; ohne `day` alle offenen (über alle Tage) — so bleiben Belege über Mitternacht nicht hängen. |
| AdminApi | importErp | POST /admin/import-erp | Stößt den ERP-Import für ein Datum an und liefert die Zusammenfassung. |
| AdminApi | listReviews | GET /admin/reviews | Listet alle geänderten Lieferscheine, die noch auf eine manuelle Bestätigung (Vier-Augen) warten — Entfernungen und/oder Geld-Gutschriften. |
| AdminApi | markMailSent | POST /admin/mark-mail-sent | Markiert die Liefermails der angegebenen Belegnummern als versendet (`mail_sent_at = now()`, nur wo noch offen). Vom Mailclient aufzurufen, NACHDEM ERPframe die Mails erfolgreich verschickt hat — danach erscheinen die Belege nicht mehr in `GET /admin/delivered-belegnummern`. |
| AdminApi | positionsModified | GET /admin/belege/{belegnummer}/positions-modified | Liefert zu einer ERP-Belegnummer, ob an der Lieferung Positionen verändert wurden (Menge reduziert/Zeile entfernt oder Geld-Gutschrift) — unabhängig vom Zustand der Lieferung. `404`, wenn die Belegnummer unbekannt ist. Gibt es mehrere Lieferungen mit derselben Belegnummer, ist das Flag `true`, sobald eine davon verändert ist. |
| AdminApi | pushCompletion | POST /admin/push-completion | Stößt das ERP-Rückschreiben eines bereits lokal abgeschlossenen Lieferabschlusses erneut an (idempotenter Retry, falls der automatische Push beim Abschluss fehlschlug). |
| AdminApi | resolveReview | POST /admin/reviews/{delivery_id}/resolve | Bestätigt die Prüfung einer geänderten Lieferung (Vier-Augen) — die Lieferung verschwindet danach aus `GET /admin/reviews` (sofern nicht erneut geändert). |
| AttachmentsApi | getAttachment | GET /attachments/{id} | Liefert ein gerendertes Vorschaubild des Attachments (Bytes), geladen aus DOCUframe. Auflösung/Format über Query-Parameter steuerbar (`?w=&h=&q=&ext=&page=`). |
| CarsApi | createMyCar | POST /me/cars | Legt ein neues Fahrzeug für den angemeldeten Fahrer an. |
| CarsApi | listMyCars | GET /me/cars | Listet die Fahrzeuge des angemeldeten Fahrers. |
| CarsApi | updateMyCar | PATCH /me/cars/{car_id} | Aktualisiert ein Fahrzeug (Kennzeichen ändern / deaktivieren). |
| DeliveriesApi | applyCredit | POST /deliveries/{delivery_id}/credit | Wendet ein Betrags-Gutschrift-Ereignis an (`set`/`remove`). Append-only, idempotent über `clientEventId`. Nur bei aktiver Lieferung; bei `set` sind Betrag (0 < x ≤ 150 €, 10-€-Schritte) und Grund Pflicht. Antwort: der aktuelle Gutschrift-Stand (`null`, wenn entfernt). |
| DeliveriesApi | assignCar | PUT /deliveries/{delivery_id}/assigned-car | Setzt das `assigned_car_id` einer Lieferung. `carId: null` löst die Zuordnung wieder. Der Use Case stellt sicher, dass das Fahrzeug zum angemeldeten Account gehört. |
| DeliveriesApi | cancel | POST /deliveries/{delivery_id}/cancel | Setzt die Lieferung auf `canceled` — endgültig. Erlaubt aus `active` und `held`. |
| DeliveriesApi | complete | POST /deliveries/{delivery_id}/complete | Schließt die Lieferung ab — `state = completed`. Nur aus `active`. |
| DeliveriesApi | createNote | POST /deliveries/{delivery_id}/notes | Legt eine neue Notiz an einer Lieferung an. Mindestens eines von `text` und `imageAttachment` muss inhaltlich gefüllt sein (Leerstrings werden serverseitig getrimmt und als leer behandelt). |
| DeliveriesApi | deleteNote | DELETE /deliveries/{delivery_id}/notes/{note_id} | Löscht eine Notiz. Antwortet mit `204 No Content`. |
| DeliveriesApi | deleteServiceValue | DELETE /deliveries/{delivery_id}/services/{service_id} | Entfernt den Service-Wert einer Lieferung (Service „nicht gesetzt"). Nur bei aktiver Lieferung. Antwort `204`. |
| DeliveriesApi | hold | POST /deliveries/{delivery_id}/hold | Setzt die Lieferung auf `held`. Nur aus `active` zulässig. |
| DeliveriesApi | recordPayment | POST /deliveries/{delivery_id}/payment | Protokolliert die Zahlungsabwicklung („Abkassieren") einer Lieferung. Append-only, idempotent über `clientEventId`. Der Server berechnet den offenen Betrag selbst; er muss > 0 sein und `expectedAmountCents` entsprechen. Nur bei aktiver Lieferung und aktiver Zahlungsmethode. |
| DeliveriesApi | resume | POST /deliveries/{delivery_id}/resume | Setzt die Lieferung zurück auf `active`. Nur aus `held` zulässig. |
| DeliveriesApi | setService | PUT /deliveries/{delivery_id}/services/{service_id} | Setzt (Upsert) den Wert eines Service für eine Lieferung. Genau das zum Service-Typ passende Feld (`boolValue`/`numericValue`) muss gesetzt sein; numerische Werte werden gegen min/max geprüft. Nur bei aktiver Lieferung. |
| DeliveriesApi | updateNote | PATCH /deliveries/{delivery_id}/notes/{note_id} | Ändert Text/Bild einer Notiz. Innerhalb des (geteilten) Accounts darf jeder Fahrer Notizen pflegen — kein Autor-Check. `delivery_id` ist Teil des Pfads (REST-Konsistenz), die Notiz wird über `note_id` adressiert. |
| DeliveriesApi | uploadNoteImage | POST /deliveries/{delivery_id}/notes/image | Lädt ein Bild zu einer Lieferung hoch (multipart/form-data, Feld `file`) und legt dafür eine Bild-Notiz an. Das Bild geht in den DOCUframe-Dokumentenspeicher; gespeichert wird die zurückgelieferte Referenz (`~ObjectID`) als `image_attachment` der Notiz. |
| HealthApi | health | GET /health | Health-Endpoint für Load-Balancer und Container-Probes. Bewusst kein Auth — eine `200 ok`-Antwort darf nicht von der Auth abhängen. |
| PaymentMethodsApi | createPaymentMethod | POST /payment-methods | Legt eine neue Zahlungsmethode an. |
| PaymentMethodsApi | deletePaymentMethod | DELETE /payment-methods/{id} | Hartes Löschen. `409 Conflict`, wenn die Methode von einer Lieferung referenziert wird — der Admin soll dann den `active = false`-Pfad nutzen. |
| PaymentMethodsApi | listPaymentMethods | GET /payment-methods | Listet die Zahlungsmethoden. |
| PaymentMethodsApi | updatePaymentMethod | PATCH /payment-methods/{id} | Patcht Anzeige-Name und/oder Aktiv-Flag. |
| ScansApi | applyScans | POST /scans | Wendet eine Liste von Scan-Events idempotent an. |
| ServicesApi | createService | POST /services | Legt einen neuen Service an. |
| ServicesApi | deleteService | DELETE /services/{id} | Hartes Löschen. `409 Conflict`, wenn der Service noch von einer Lieferung referenziert wird — dann stattdessen deaktivieren. |
| ServicesApi | listServices | GET /services | Listet die Services (sortiert nach `sortOrder`). |
| ServicesApi | updateService | PATCH /services/{id} | Patcht Name/Grenzen/Aktiv-Flag/Sortierung. `kind` ist nicht änderbar. |
| SyncApi | syncTour | POST /sync/tour | Sync-Endpoint für das ERP: legt eine Tagestour samt Lieferungen und Positionen idempotent an. Identität pro Tour `(driver_personalnummer, tour_date)`, pro Lieferung `(belegart_id, belegnummer)`. |
| ToursApi | getTour | GET /tours/{tour_id} | Lädt eine Tour mit allen Lieferungen, Positionen und referenzierten Stammdaten — die App nutzt das als einzigen großen Read. |
| ToursApi | listMyTours | GET /me/tours | Listet die Touren des angemeldeten Fahrers (Filter aus dem JWT) für ein Ziel-Datum. Ohne `?date=` gilt „heute". Der Fahrer wählt das Datum aktiv im Kopf-Kalender der App (z. B. um die Tour von morgen vorab zu sehen). |
| ToursApi | setDeliveryOrder | PUT /tours/{tour_id}/delivery-order | Schreibt die Sortier-Reihenfolge aller Lieferungen einer Tour neu. Der Client schickt die vollständige neue Reihenfolge; fehlende oder fremde Lieferungs-Ids werden mit `400 validation` abgelehnt. |
Documentation For Models
- Account
- Address
- ApplyScansRequest
- ApplyScansResponse
- Article
- AssignCarRequest
- AuditAction
- CancelDeliveryRequest
- Car
- CarResponse
- CarsList
- CompleteDeliveryAcknowledgements
- CompletedDeliveriesResponse
- CompletedDeliveryItem
- ContactChannel
- ContactKind
- ContactRole
- ContactSource
- CreateCarRequest
- CreateDeliveryNoteRequest
- CreatePaymentMethodRequest
- CreateServiceRequest
- CreditAction
- Customer
- CustomerContact
- DeliveredBelegnummernResponse
- Delivery
- DeliveryCredit
- DeliveryCreditEventRequest
- DeliveryCreditResponse
- DeliveryDetails
- DeliveryItem
- DeliveryNote
- DeliveryNoteResponse
- DeliveryOrderEntry
- DeliveryPayment
- DeliveryPaymentResponse
- DeliveryResponse
- DeliveryServiceResponse
- DeliveryServiceValue
- DeliveryState
- DeliveryWithItems
- HoldDeliveryRequest
- ImportSummary
- MarkMailSentRequest
- MarkMailSentResponse
- PaymentMethod
- PaymentMethodResponse
- PaymentMethodsList
- PendingReviewResponse
- PositionsModifiedResponse
- RecordDeliveryPaymentRequest
- ResolveReviewRequest
- ReviewedItemResponse
- ScanEvent
- ScanResult
- ScanResultStatus
- ScanState
- ScanStatus
- Service
- ServiceKind
- ServiceResponse
- ServicesList
- SetDeliveryOrderRequest
- SetDeliveryOrderResponse
- SetDeliveryServiceRequest
- SyncContactChannel
- SyncContactSource
- SyncDelivery
- SyncDeliveryItem
- SyncTourRequest
- SyncTourResponse
- Tour
- TourDetails
- TourSummary
- TourSummaryList
- UpdateCarRequest
- UpdateDeliveryNoteRequest
- UpdatePaymentMethodRequest
- UpdateServiceRequest
- Warehouse
Documentation For Authorization
Authentication schemes defined for the API:
admin_api_key
- Type: API key
- API key parameter name: X-Admin-Api-Key
- Location: HTTP header
bearer_auth
- Type: HTTP Bearer Token authentication (JWT)