diff --git a/docs/features/csv-bookings.md b/docs/features/csv-bookings.md index 1398397..cba43fe 100644 --- a/docs/features/csv-bookings.md +++ b/docs/features/csv-bookings.md @@ -60,14 +60,30 @@ Expiry : 1 heure. Si expiré, l'admin doit renvoyer un nouveau lien. ## Statuts des réservations CSV +Valeurs réelles de l'énumération `CsvBookingStatus` (`domain/entities/csv-booking.entity.ts`) : + | Statut | Description | |--------|-------------| -| pending | En attente d'assignation carrier | -| sent | Lien magique envoyé au carrier | -| accepted | Carrier a accepté | -| rejected | Carrier a refusé | -| in_transit | En cours de transport | -| delivered | Livré | +| PENDING_PAYMENT | Réservation créée, commission non payée | +| PENDING_BANK_TRANSFER | Virement déclaré, en attente de validation par l'administration | +| PENDING | Commission payée, en attente de réponse du transporteur | +| ACCEPTED | Le transporteur a accepté | +| REJECTED | Le transporteur a refusé | +| CANCELLED | Annulée par l'utilisateur | + +--- + +## Suppression d'une réservation impayée + +`DELETE /api/v1/csv-bookings/:id` supprime définitivement une réservation **dont la commission n'a pas été payée**, c'est-à-dire au seul statut `PENDING_PAYMENT`. Seul le propriétaire peut le faire ; une réservation appartenant à quelqu'un d'autre répond `404`, sans se distinguer d'une réservation inexistante. + +Une fois la commission payée, la réservation est partie chez le transporteur et porte une trace comptable : elle ne peut plus qu'être **annulée** (`PATCH :id/cancel`), jamais effacée. L'API répond alors `400`. + +`PENDING_BANK_TRANSFER` est volontairement exclu : le virement déclaré peut être en cours d'acheminement, et supprimer la réservation priverait l'administration de ce qu'elle doit rapprocher à sa réception. Étendre la règle à ce statut est une décision comptable, pas technique — il suffit d'ajouter le statut à `DELETABLE_STATUSES` dans l'entité. + +Les documents déjà téléversés restent dans le stockage objet, conformément à la politique appliquée à la suppression d'un document isolé (conservation pour l'audit). Le quota de réservations n'est pas affecté : il ne compte que les expéditions payées. + +Côté interface, l'action « Supprimer » n'apparaît dans le menu d'une ligne que pour les réservations impayées, à côté de « Modifier » et « Payer ». Elle demande une confirmation qui nomme la réservation concernée. --- @@ -75,6 +91,7 @@ Expiry : 1 heure. Si expiré, l'admin doit renvoyer un nouveau lien. | Route | Description | |-------|-------------| +| /dashboard/bookings | Liste des réservations (voir, modifier, payer, supprimer) | | /dashboard/csv-bookings | Liste admin des réservations CSV | | /carrier/auth | Page d'auth carrier (via magic link) | | /carrier/booking | Dashboard carrier (accept/reject) |