# Phase 7 — Devis clients

## Installation

Importer `database/migrations/202608050005_phase7_quotes.sql` après les migrations précédentes.

## Tables

`quote_sequences`, `quotes`, `quote_lines`, `quote_status_history`, `quote_rejection_reasons`, `quote_attachments`, `quote_emails`, `quote_signatures`, `quote_followups`.

## Principes

- numérotation verrouillée `DEV-AAAA-000001`, configurable et réinitialisable annuellement ;
- prix, taxes, unités, descriptions et données client copiés dans le devis ;
- calculs HT, remises, TVA, frais, acompte et net à payer refaits côté serveur ;
- aucune réservation ni mouvement de stock ;
- modification directe limitée aux brouillons ;
- statuts et chronologie append-only ;
- anciennes données inchangées après modification du catalogue ou du client.

## Permissions

`quotes.view`, `create`, `update`, `validate`, `send`, `accept`, `reject`, `cancel`, `archive`, `duplicate`, `revise`, `print`, `export`, `manage_discount`, `override_discount_limit`, `edit_price`, `view_margin`, `manage_signature`, `manage_attachments`.

## Recette

1. Créer un devis avec produit, service et ligne libre.
2. Contrôler plusieurs TVA, remise par ligne et globale.
3. Valider puis vérifier que l’édition directe est refusée.
4. Modifier le client et le produit, puis contrôler les snapshots du devis.
5. Dupliquer, accepter/refuser, annuler et archiver.
6. Tester un produit archivé, un prix modifié sans permission et une remise excessive.
7. Générer le PDF et contrôler les totaux.
8. Tester CSRF, accès direct, recherche et filtres.

## Limites

- La structure de versions, signatures, emails, pièces jointes et relances est créée. Les écrans principaux livrés couvrent devis, transitions, duplication, PDF et chronologie ; les écrans spécialisés de signature manuscrite, SMTP, pièces jointes et relances restent à enrichir.
- Le PDF est une édition simple ; la pagination et les deux thèmes détaillé/simplifié nécessitent un moteur PDF spécialisé.
- L’envoi SMTP réel n’est pas activé sans configuration de transport.
- La conversion reste désactivée jusqu’aux modules Commandes/Factures.
