feat(zahlung): eigener Step "Zahlung" vor der Uebersicht
- 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>
This commit is contained in:
@ -9,12 +9,113 @@ All URIs are relative to *http://localhost*
|
||||
|
||||
Method | HTTP request | Description
|
||||
------------- | ------------- | -------------
|
||||
[**belegeDetails**](AdminApi.md#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.
|
||||
[**completedDeliveries**](AdminApi.md#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`).
|
||||
[**deliveredBelegnummern**](AdminApi.md#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.
|
||||
[**importErp**](AdminApi.md#importerp) | **POST** /admin/import-erp | Stößt den ERP-Import für ein Datum an und liefert die Zusammenfassung.
|
||||
[**listReviews**](AdminApi.md#listreviews) | **GET** /admin/reviews | Listet alle geänderten Lieferscheine, die noch auf eine manuelle Bestätigung (Vier-Augen) warten — Entfernungen und/oder Geld-Gutschriften.
|
||||
[**markMailSent**](AdminApi.md#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`.
|
||||
[**positionsModified**](AdminApi.md#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.
|
||||
[**pushCompletion**](AdminApi.md#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).
|
||||
[**resolveReview**](AdminApi.md#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).
|
||||
|
||||
|
||||
# **belegeDetails**
|
||||
> DeliveryDetails belegeDetails(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.
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
// TODO Configure API key authorization: admin_api_key
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKey = 'YOUR_API_KEY';
|
||||
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKeyPrefix = 'Bearer';
|
||||
|
||||
final api = HolzleitnerApi().getAdminApi();
|
||||
final String belegnummer = belegnummer_example; // String | ERP-Belegnummer, z. B. V-30690291
|
||||
|
||||
try {
|
||||
final response = api.belegeDetails(belegnummer);
|
||||
print(response);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling AdminApi->belegeDetails: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**belegnummer** | **String**| ERP-Belegnummer, z. B. V-30690291 |
|
||||
|
||||
### Return type
|
||||
|
||||
[**DeliveryDetails**](DeliveryDetails.md)
|
||||
|
||||
### Authorization
|
||||
|
||||
[admin_api_key](../README.md#admin_api_key)
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: Not defined
|
||||
- **Accept**: application/json
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **completedDeliveries**
|
||||
> CompletedDeliveriesResponse completedDeliveries(day, from, to)
|
||||
|
||||
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`).
|
||||
|
||||
Parameter (alle `DD-MM-YYYY`, alle optional): `day` = Einzeltag (Kurzform `from=to=day`), sonst `from`/`to` als **inklusive** Bereichsgrenzen (je offen). **Ohne jeden Parameter → ALLE ausgelieferten Belege** (kein Datumsfilter). Pro Lieferung: Belegnummer + `positions_modified` (Menge reduziert/Zeile entfernt oder Geld-Gutschrift). Die Halb-Grenzen-Variante ist für Range-Filter gedacht: `?from=…` und `?to=…` liefern je eine Menge, deren SQL-`AND`-Schnitt den Zeitraum ergibt.
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
// TODO Configure API key authorization: admin_api_key
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKey = 'YOUR_API_KEY';
|
||||
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKeyPrefix = 'Bearer';
|
||||
|
||||
final api = HolzleitnerApi().getAdminApi();
|
||||
final String day = day_example; // String | Einzeltag DD-MM-YYYY (Kurzform from=to)
|
||||
final String from = from_example; // String | Untere Grenze DD-MM-YYYY (inklusive)
|
||||
final String to = to_example; // String | Obere Grenze DD-MM-YYYY (inklusive)
|
||||
|
||||
try {
|
||||
final response = api.completedDeliveries(day, from, to);
|
||||
print(response);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling AdminApi->completedDeliveries: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**day** | **String**| Einzeltag DD-MM-YYYY (Kurzform from=to) | [optional]
|
||||
**from** | **String**| Untere Grenze DD-MM-YYYY (inklusive) | [optional]
|
||||
**to** | **String**| Obere Grenze DD-MM-YYYY (inklusive) | [optional]
|
||||
|
||||
### Return type
|
||||
|
||||
[**CompletedDeliveriesResponse**](CompletedDeliveriesResponse.md)
|
||||
|
||||
### Authorization
|
||||
|
||||
[admin_api_key](../README.md#admin_api_key)
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: Not defined
|
||||
- **Accept**: application/json
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **deliveredBelegnummern**
|
||||
> DeliveredBelegnummernResponse deliveredBelegnummern(day)
|
||||
|
||||
@ -105,6 +206,47 @@ Name | Type | Description | Notes
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **listReviews**
|
||||
> BuiltList<PendingReviewResponse> listReviews()
|
||||
|
||||
Listet alle geänderten Lieferscheine, die noch auf eine manuelle Bestätigung (Vier-Augen) warten — Entfernungen und/oder Geld-Gutschriften.
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
// TODO Configure API key authorization: admin_api_key
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKey = 'YOUR_API_KEY';
|
||||
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKeyPrefix = 'Bearer';
|
||||
|
||||
final api = HolzleitnerApi().getAdminApi();
|
||||
|
||||
try {
|
||||
final response = api.listReviews();
|
||||
print(response);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling AdminApi->listReviews: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
This endpoint does not need any parameter.
|
||||
|
||||
### Return type
|
||||
|
||||
[**BuiltList<PendingReviewResponse>**](PendingReviewResponse.md)
|
||||
|
||||
### Authorization
|
||||
|
||||
[admin_api_key](../README.md#admin_api_key)
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: Not defined
|
||||
- **Accept**: application/json
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **markMailSent**
|
||||
> MarkMailSentResponse markMailSent(markMailSentRequest)
|
||||
|
||||
@ -150,6 +292,51 @@ Name | Type | Description | Notes
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **positionsModified**
|
||||
> PositionsModifiedResponse positionsModified(belegnummer)
|
||||
|
||||
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.
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
// TODO Configure API key authorization: admin_api_key
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKey = 'YOUR_API_KEY';
|
||||
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKeyPrefix = 'Bearer';
|
||||
|
||||
final api = HolzleitnerApi().getAdminApi();
|
||||
final String belegnummer = belegnummer_example; // String | ERP-Belegnummer, z. B. V-30690291
|
||||
|
||||
try {
|
||||
final response = api.positionsModified(belegnummer);
|
||||
print(response);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling AdminApi->positionsModified: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**belegnummer** | **String**| ERP-Belegnummer, z. B. V-30690291 |
|
||||
|
||||
### Return type
|
||||
|
||||
[**PositionsModifiedResponse**](PositionsModifiedResponse.md)
|
||||
|
||||
### Authorization
|
||||
|
||||
[admin_api_key](../README.md#admin_api_key)
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: Not defined
|
||||
- **Accept**: application/json
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **pushCompletion**
|
||||
> pushCompletion(deliveryId)
|
||||
|
||||
@ -194,3 +381,49 @@ void (empty response body)
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **resolveReview**
|
||||
> resolveReview(deliveryId, resolveReviewRequest)
|
||||
|
||||
Bestätigt die Prüfung einer geänderten Lieferung (Vier-Augen) — die Lieferung verschwindet danach aus `GET /admin/reviews` (sofern nicht erneut geändert).
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
// TODO Configure API key authorization: admin_api_key
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKey = 'YOUR_API_KEY';
|
||||
// uncomment below to setup prefix (e.g. Bearer) for API key, if needed
|
||||
//defaultApiClient.getAuthentication<ApiKeyAuth>('admin_api_key').apiKeyPrefix = 'Bearer';
|
||||
|
||||
final api = HolzleitnerApi().getAdminApi();
|
||||
final String deliveryId = deliveryId_example; // String | UUID der Lieferung
|
||||
final ResolveReviewRequest resolveReviewRequest = ; // ResolveReviewRequest |
|
||||
|
||||
try {
|
||||
api.resolveReview(deliveryId, resolveReviewRequest);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling AdminApi->resolveReview: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**deliveryId** | **String**| UUID der Lieferung |
|
||||
**resolveReviewRequest** | [**ResolveReviewRequest**](ResolveReviewRequest.md)| |
|
||||
|
||||
### Return type
|
||||
|
||||
void (empty response body)
|
||||
|
||||
### Authorization
|
||||
|
||||
[admin_api_key](../README.md#admin_api_key)
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: application/json
|
||||
- **Accept**: Not defined
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
18
packages/holzleitner_api/doc/CompletedDeliveriesResponse.md
Normal file
18
packages/holzleitner_api/doc/CompletedDeliveriesResponse.md
Normal file
@ -0,0 +1,18 @@
|
||||
# holzleitner_api.model.CompletedDeliveriesResponse
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**count** | **int** | Anzahl der abgeschlossenen Lieferungen im Bereich. |
|
||||
**deliveries** | [**BuiltList<CompletedDeliveryItem>**](CompletedDeliveryItem.md) | Die abgeschlossenen Lieferungen, aufsteigend nach Abschluss-Zeitpunkt. |
|
||||
**from** | **String** | Wirksame untere Grenze (ISO `YYYY-MM-DD`) oder `null` (offen). | [optional]
|
||||
**to** | **String** | Wirksame obere Grenze (ISO `YYYY-MM-DD`) oder `null` (offen). | [optional]
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
16
packages/holzleitner_api/doc/CompletedDeliveryItem.md
Normal file
16
packages/holzleitner_api/doc/CompletedDeliveryItem.md
Normal file
@ -0,0 +1,16 @@
|
||||
# holzleitner_api.model.CompletedDeliveryItem
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**belegnummer** | **String** | ERP-Belegnummer der Lieferung. |
|
||||
**positionsModified** | **bool** | `true`, wenn an der Lieferung Positionen verändert wurden — eine Zeile wurde entfernt oder in der Menge reduziert (Stück-Gutschrift) **oder** es liegt eine aktive Geld-Gutschrift vor. |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ Method | HTTP request | Description
|
||||
[**deleteNote**](DeliveriesApi.md#deletenote) | **DELETE** /deliveries/{delivery_id}/notes/{note_id} | Löscht eine Notiz. Antwortet mit `204 No Content`.
|
||||
[**deleteServiceValue**](DeliveriesApi.md#deleteservicevalue) | **DELETE** /deliveries/{delivery_id}/services/{service_id} | Entfernt den Service-Wert einer Lieferung (Service „nicht gesetzt\"). Nur bei aktiver Lieferung. Antwort `204`.
|
||||
[**hold**](DeliveriesApi.md#hold) | **POST** /deliveries/{delivery_id}/hold | Setzt die Lieferung auf `held`. Nur aus `active` zulässig.
|
||||
[**recordPayment**](DeliveriesApi.md#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.
|
||||
[**resume**](DeliveriesApi.md#resume) | **POST** /deliveries/{delivery_id}/resume | Setzt die Lieferung zurück auf `active`. Nur aus `held` zulässig.
|
||||
[**setService**](DeliveriesApi.md#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.
|
||||
[**updateNote**](DeliveriesApi.md#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.
|
||||
@ -365,6 +366,49 @@ Name | Type | Description | Notes
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **recordPayment**
|
||||
> DeliveryPaymentResponse recordPayment(deliveryId, recordDeliveryPaymentRequest)
|
||||
|
||||
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.
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
|
||||
final api = HolzleitnerApi().getDeliveriesApi();
|
||||
final String deliveryId = 38400000-8cf0-11bd-b23e-10b96e4ef00d; // String |
|
||||
final RecordDeliveryPaymentRequest recordDeliveryPaymentRequest = ; // RecordDeliveryPaymentRequest |
|
||||
|
||||
try {
|
||||
final response = api.recordPayment(deliveryId, recordDeliveryPaymentRequest);
|
||||
print(response);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling DeliveriesApi->recordPayment: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**deliveryId** | **String**| |
|
||||
**recordDeliveryPaymentRequest** | [**RecordDeliveryPaymentRequest**](RecordDeliveryPaymentRequest.md)| |
|
||||
|
||||
### Return type
|
||||
|
||||
[**DeliveryPaymentResponse**](DeliveryPaymentResponse.md)
|
||||
|
||||
### Authorization
|
||||
|
||||
[bearer_auth](../README.md#bearer_auth)
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: application/json
|
||||
- **Accept**: application/json
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **resume**
|
||||
> DeliveryResponse resume(deliveryId)
|
||||
|
||||
|
||||
27
packages/holzleitner_api/doc/DeliveryDetails.md
Normal file
27
packages/holzleitner_api/doc/DeliveryDetails.md
Normal file
@ -0,0 +1,27 @@
|
||||
# holzleitner_api.model.DeliveryDetails
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**articles** | [**BuiltList<Article>**](Article.md) | Nur die von den Positionen referenzierten Artikel. |
|
||||
**contactChannels** | [**BuiltList<ContactChannel>**](ContactChannel.md) | Die zu `contactSources` gehörenden Einzel-Kanäle. Join per `sourceId`. |
|
||||
**contactSources** | [**BuiltList<ContactSource>**](ContactSource.md) | Kontaktquellen der Lieferung (Liefer-/Rechnungsadresse, Ansprechpartner …). |
|
||||
**credit** | [**DeliveryCredit**](DeliveryCredit.md) | Aktuelle Betrags-Gutschrift (`null`, wenn keine aktiv). | [optional]
|
||||
**customer** | [**Customer**](Customer.md) | Der Kunde der Lieferung (`null`, falls unauffindbar — sollte nicht vorkommen). | [optional]
|
||||
**customerContacts** | [**BuiltList<CustomerContact>**](CustomerContact.md) | Ansprechpartner des Kunden. |
|
||||
**delivery** | [**DeliveryWithItems**](DeliveryWithItems.md) | Die Lieferung selbst inkl. Positionen (mit Scan-Ständen) und `sortOrder`. |
|
||||
**deliveryServices** | [**BuiltList<DeliveryServiceValue>**](DeliveryServiceValue.md) | Für diese Lieferung gesetzte Service-Werte. |
|
||||
**notes** | [**BuiltList<DeliveryNote>**](DeliveryNote.md) | Notizen der Lieferung, aufsteigend nach `createdAt`. |
|
||||
**payment** | [**DeliveryPayment**](DeliveryPayment.md) | Jüngste protokollierte Zahlungsabwicklung (`None` = keine). | [optional]
|
||||
**services** | [**BuiltList<Service>**](Service.md) | Aktive Service-Definitionen (Stammdaten). |
|
||||
**tour** | [**Tour**](Tour.md) | Die Tour, zu der die Lieferung gehört. |
|
||||
**warehouses** | [**BuiltList<Warehouse>**](Warehouse.md) | Nur die von den Positionen referenzierten Lager. |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
22
packages/holzleitner_api/doc/DeliveryPayment.md
Normal file
22
packages/holzleitner_api/doc/DeliveryPayment.md
Normal file
@ -0,0 +1,22 @@
|
||||
# holzleitner_api.model.DeliveryPayment
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**amountCents** | **int** | Abgewickelter Betrag in Cent (offener Betrag bei Bestätigung). |
|
||||
**deliveryId** | **String** | |
|
||||
**id** | **String** | |
|
||||
**paymentMethodCode** | **String** | Snapshot des Methoden-Codes (`cash`, `ec_card`, `invoice`, …). |
|
||||
**paymentMethodId** | **String** | |
|
||||
**recordedAt** | [**DateTime**](DateTime.md) | |
|
||||
**recordedByCarId** | **String** | | [optional]
|
||||
**recordedByPersonalnummer** | **int** | |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
15
packages/holzleitner_api/doc/DeliveryPaymentResponse.md
Normal file
15
packages/holzleitner_api/doc/DeliveryPaymentResponse.md
Normal file
@ -0,0 +1,15 @@
|
||||
# holzleitner_api.model.DeliveryPaymentResponse
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**payment** | [**DeliveryPayment**](DeliveryPayment.md) | |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
23
packages/holzleitner_api/doc/PendingReviewResponse.md
Normal file
23
packages/holzleitner_api/doc/PendingReviewResponse.md
Normal file
@ -0,0 +1,23 @@
|
||||
# holzleitner_api.model.PendingReviewResponse
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**creditedItems** | [**BuiltList<ReviewedItemResponse>**](ReviewedItemResponse.md) | Entfernte/teil-gutgeschriebene Positionen. |
|
||||
**customerName** | **String** | |
|
||||
**deliveryId** | **String** | |
|
||||
**erpBelegartId** | **int** | |
|
||||
**erpBelegnummer** | **String** | |
|
||||
**lastChangeAt** | **String** | Zeitpunkt der letzten beleg-ändernden Aktion (RFC 3339). |
|
||||
**moneyCreditCents** | **int** | Geld-Gutschrift in Cent (0 = keine). |
|
||||
**moneyCreditReason** | **String** | | [optional]
|
||||
**tourDate** | **String** | Tourdatum (ISO `YYYY-MM-DD`). |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
16
packages/holzleitner_api/doc/PositionsModifiedResponse.md
Normal file
16
packages/holzleitner_api/doc/PositionsModifiedResponse.md
Normal file
@ -0,0 +1,16 @@
|
||||
# holzleitner_api.model.PositionsModifiedResponse
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**belegnummer** | **String** | ERP-Belegnummer, nach der gefragt wurde. |
|
||||
**positionsModified** | **bool** | `true`, wenn an der Lieferung Positionen verändert wurden — eine Zeile wurde entfernt oder in der Menge reduziert (Stück-Gutschrift) **oder** es liegt eine aktive Geld-Gutschrift vor. |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
18
packages/holzleitner_api/doc/RecordDeliveryPaymentRequest.md
Normal file
18
packages/holzleitner_api/doc/RecordDeliveryPaymentRequest.md
Normal file
@ -0,0 +1,18 @@
|
||||
# holzleitner_api.model.RecordDeliveryPaymentRequest
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**authorCarId** | **String** | Fahrzeug des Akteurs (Audit-Spur). Muss zum Account gehören. | [optional]
|
||||
**clientEventId** | **String** | Idempotenz-Schlüssel — pro Bestätigung genau einmal vergeben. |
|
||||
**expectedAmountCents** | **int** | Betrag in Cent, den der Fahrer in der App gesehen und bestätigt hat. Der Server berechnet den offenen Betrag selbst und lehnt ab, wenn er davon abweicht — so landet nie ein Betrag im Protokoll, den der Fahrer nicht gesehen hat. |
|
||||
**paymentMethodId** | **String** | Gewählte Zahlungsmethode. Muss existieren und aktiv sein. |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
16
packages/holzleitner_api/doc/ResolveReviewRequest.md
Normal file
16
packages/holzleitner_api/doc/ResolveReviewRequest.md
Normal file
@ -0,0 +1,16 @@
|
||||
# holzleitner_api.model.ResolveReviewRequest
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**note** | **String** | Optionale Notiz zur getroffenen Entscheidung. | [optional]
|
||||
**resolvedBy** | **String** | Bearbeiter (Name/Kürzel), der die Prüfung bestätigt. |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
20
packages/holzleitner_api/doc/ReviewedItemResponse.md
Normal file
20
packages/holzleitner_api/doc/ReviewedItemResponse.md
Normal file
@ -0,0 +1,20 @@
|
||||
# holzleitner_api.model.ReviewedItemResponse
|
||||
|
||||
## Load the model package
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
```
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**articleName** | **String** | |
|
||||
**artikelNr** | **String** | |
|
||||
**belegzeilenNr** | **int** | |
|
||||
**creditedQuantity** | **int** | |
|
||||
**reason** | **String** | | [optional]
|
||||
**requiredQuantity** | **int** | |
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ Name | Type | Description | Notes
|
||||
**deliveries** | [**BuiltList<DeliveryWithItems>**](DeliveryWithItems.md) | |
|
||||
**deliveryServices** | [**BuiltList<DeliveryServiceValue>**](DeliveryServiceValue.md) | Pro-Lieferung gesetzte Service-Werte. Join per `delivery_id` + `service_id`. |
|
||||
**notes** | [**BuiltList<DeliveryNote>**](DeliveryNote.md) | Alle Notizen aller Lieferungen dieser Tour, in einer Liste. Die App joint clientseitig per `delivery_id`. Reihenfolge: pro Lieferung aufsteigend nach `created_at`. |
|
||||
**payments** | [**BuiltList<DeliveryPayment>**](DeliveryPayment.md) | Jüngste protokollierte Zahlungsabwicklung pro Lieferung (nur Lieferungen mit mindestens einem Eintrag). Join per `delivery_id`. |
|
||||
**services** | [**BuiltList<Service>**](Service.md) | Aktive Service-Definitionen (Stammdaten) — die App rendert daraus Phase 4. Bewusst hier mitgeliefert, damit die Detailseite alles aus dem Tour-Aggregat hat. |
|
||||
**tour** | [**Tour**](Tour.md) | |
|
||||
**warehouses** | [**BuiltList<Warehouse>**](Warehouse.md) | |
|
||||
|
||||
@ -10,7 +10,7 @@ All URIs are relative to *http://localhost*
|
||||
Method | HTTP request | Description
|
||||
------------- | ------------- | -------------
|
||||
[**getTour**](ToursApi.md#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.
|
||||
[**listMyToursToday**](ToursApi.md#listmytourstoday) | **GET** /me/tours/today | Listet heutige Touren des angemeldeten Fahrers (Filter aus dem JWT).
|
||||
[**listMyTours**](ToursApi.md#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).
|
||||
[**setDeliveryOrder**](ToursApi.md#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.
|
||||
|
||||
|
||||
@ -55,27 +55,31 @@ Name | Type | Description | Notes
|
||||
|
||||
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
|
||||
|
||||
# **listMyToursToday**
|
||||
> TourSummaryList listMyToursToday()
|
||||
# **listMyTours**
|
||||
> TourSummaryList listMyTours(date)
|
||||
|
||||
Listet heutige Touren des angemeldeten Fahrers (Filter aus dem JWT).
|
||||
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).
|
||||
|
||||
### Example
|
||||
```dart
|
||||
import 'package:holzleitner_api/api.dart';
|
||||
|
||||
final api = HolzleitnerApi().getToursApi();
|
||||
final String date = date_example; // String | Ziel-Tourdatum YYYY-MM-DD (Default: heute)
|
||||
|
||||
try {
|
||||
final response = api.listMyToursToday();
|
||||
final response = api.listMyTours(date);
|
||||
print(response);
|
||||
} catch on DioException (e) {
|
||||
print('Exception when calling ToursApi->listMyToursToday: $e\n');
|
||||
print('Exception when calling ToursApi->listMyTours: $e\n');
|
||||
}
|
||||
```
|
||||
|
||||
### Parameters
|
||||
This endpoint does not need any parameter.
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**date** | **String**| Ziel-Tourdatum YYYY-MM-DD (Default: heute) | [optional]
|
||||
|
||||
### Return type
|
||||
|
||||
|
||||
Reference in New Issue
Block a user