feat(frontend): module Ventes complet (commandes, livraison, stock)

- Modèles Client, SalesOrder, SalesOrderLine
- ClientService + SalesOrderService (create, deliver)
- VentesProvider : chargement parallèle commandes + clients
- VentesScreen : liste avec badges statut colorés
- SalesOrderFormScreen : lignes dynamiques, calcul HT/TVA/TTC temps réel
- SalesOrderDetailScreen : détail + bouton livrer + confirmation
- Rapport PFE : section 5.7 module Ventes (cycle, statuts, UI)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-20 20:26:48 +01:00
co-authored by Claude Sonnet 4.6
parent ed21c3cb80
commit 78063c4925
10 changed files with 1320 additions and 1 deletions
+67
View File
@@ -615,3 +615,70 @@ class Article {
bool actif; // Soft delete
}
```
---
## 5.7 Module Ventes
### Objectif
Le module Ventes couvre le **cycle de vente complet** de SUARL Rayhan, de la prise de commande client jusqu'à la livraison et la mise à jour automatique du stock.
### Cycle de vente
```
Client passe commande
POST /api/sales-orders
Vérification stock disponible (backend)
Calcul automatique HT / TVA 19% / TTC
Commande → statut CONFIRMEE
POST /api/sales-orders/{id}/deliver
Bon de livraison généré (BL-XXXX-XXX)
Sortie de stock automatique
Commande → statut COMPLETEMENT_LIVREE
```
### Statuts d'une commande
| Statut | Description | Couleur |
|--------|-------------|---------|
| CONFIRMEE | Commande validée, stock vérifié | Bleu |
| EN_PREPARATION | En cours de préparation | Orange |
| PARTIELLEMENT_LIVREE | Livraison partielle effectuée | Violet |
| COMPLETEMENT_LIVREE | Toutes les lignes livrées | Vert |
| ANNULEE | Commande annulée | Rouge |
### Fonctionnalités Flutter
**Écran liste (`VentesScreen`) :**
- Liste de toutes les commandes avec badge statut coloré
- Montant TTC visible directement sur la carte
- Accès au détail par tap
**Formulaire création (`SalesOrderFormScreen`) :**
- Sélection du client (dropdown)
- Date de livraison souhaitée (sélecteur de date)
- Lignes dynamiques : ajout / suppression d'articles
- Sélection article (avec pré-remplissage du prix)
- Quantité + prix unitaire HT
- Calcul en temps réel du total HT / TVA / TTC
- Notes optionnelles
**Écran détail (`SalesOrderDetailScreen`) :**
- Toutes les informations de la commande
- Liste des lignes avec quantités et montants
- Récapitulatif financier HT / TVA / TTC
- Bouton **Livrer** (affiché uniquement si la commande est livrable)
- Confirmation de livraison avec mise à jour automatique du stock
### Sécurité stock
Le backend valide avant chaque création de commande que le stock disponible est suffisant pour chaque ligne. En cas d'insuffisance, l'API retourne une erreur explicite affichée à l'utilisateur.