# Phase 9 — Bons de livraison clients

## Livraison réalisée

- Liste responsive, recherche, filtres et pagination.
- Création depuis une commande livrable avec copie du client, entrepôt et restant des lignes.
- Modification des quantités tant que le BL est brouillon.
- Préparation logistique sans mouvement de stock.
- Validation atomique et idempotente.
- Sorties physiques dans `stock_movements`.
- Réduction/consommation des réservations.
- Mise à jour des quantités livrées et recalcul du statut de commande.
- PDF sans prix par défaut, PDF avec prix sous permission et liste de picking.
- Exports CSV et PDF.
- Historique et permissions serveur.

## Tables

`delivery_sequences`, `delivery_notes`, `delivery_note_lines`, `delivery_preparations`, `delivery_preparation_lines`, `delivery_status_history`, `delivery_signatures`, `delivery_proofs`, `delivery_refusals`, `delivery_refusal_lines`, `delivery_attachments`, `delivery_emails`.

Migration : `database/migrations/202608050007_phase9_delivery_notes.sql`.

## Recette

1. Créer client, produit stockable et entrepôt.
2. Entrer du stock physique.
3. Créer et valider une commande afin de réserver le stock.
4. Ouvrir **Bons de livraison**, sélectionner la commande puis créer le BL.
5. Ajuster les quantités pour une livraison partielle ou conserver tout le restant.
6. Préparer, imprimer le picking puis valider.
7. Contrôler le mouvement `delivery`, la réservation restante et le statut de la commande.

La validation répétée est sans effet : un BL déjà validé ne crée pas un second mouvement.

## Limites de cette livraison

Le schéma prépare signatures, preuves, refus, retours, pièces jointes et emails. Leurs écrans de saisie spécialisés et l’envoi SMTP ne sont pas encore exposés dans l’interface. L’annulation inverse d’un BL validé doit être ajoutée comme opération dédiée avant utilisation en production.
