feat(frontend): module Articles complet (liste, création, modification, suppression)
- Article model (MP/PSF/PF, stock, seuil alerte) - ArticleService : fetchAll, fetchByType, create, update, delete - ArticleProvider : filtrage par type + recherche temps réel - ArticlesScreen : liste, chips filtres, barre recherche, alertes stock - ArticleFormScreen : formulaire création/édition avec validation - Rapport PFE : section 5.6 module Articles Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -555,3 +555,63 @@ Le drawer affiche le rôle de l'utilisateur connecté et met en surbrillance la
|
||||
---
|
||||
|
||||
*[Section à compléter avec captures d'écran lors de la finalisation du rapport]*
|
||||
|
||||
---
|
||||
|
||||
## 5.6 Module Articles
|
||||
|
||||
### Objectif
|
||||
|
||||
Le module Articles permet de gérer le **catalogue complet** des références de l'entreprise, organisé en trois catégories correspondant au cycle industriel de SUARL Rayhan :
|
||||
|
||||
| Type | Code | Description |
|
||||
|------|------|-------------|
|
||||
| Matière Première | MP | Granulés PEHD/LDPE, colorants, additifs |
|
||||
| Produit Semi-Fini | PSF | Film tubulaire non découpé |
|
||||
| Produit Fini | PF | Sacs Bertel, sacs poubelles, film rétractable |
|
||||
|
||||
### Fonctionnalités
|
||||
|
||||
- **Liste filtrée** : affichage de tous les articles avec filtre par type (MP / PSF / PF) et barre de recherche en temps réel
|
||||
- **Indicateur d'alerte** : les articles dont le stock est inférieur au seuil minimum sont signalés en rouge avec icône d'avertissement
|
||||
- **Création** : formulaire complet (référence, désignation, type, unité de mesure, prix unitaire, stock initial, seuil d'alerte)
|
||||
- **Modification** : édition de tous les champs sauf la référence (clé métier immuable)
|
||||
- **Archivage** : suppression logique (l'article est marqué `actif=false`, pas effacé de la base)
|
||||
|
||||
### Architecture technique
|
||||
|
||||
```
|
||||
ArticleService (Dio) ArticleProvider (ChangeNotifier)
|
||||
├── fetchAll() ─────► ├── _articles: List<Article>
|
||||
├── fetchByType() ├── _filterType: String
|
||||
├── create() ├── _search: String
|
||||
├── update() └── articles (getter filtré)
|
||||
└── delete()
|
||||
│
|
||||
ArticlesScreen
|
||||
├── _SearchBar
|
||||
├── _FilterChips (TOUS / MP / PSF / PF)
|
||||
└── ListView → _ArticleCard
|
||||
└── PopupMenu (Modifier / Supprimer)
|
||||
|
||||
ArticleFormScreen (création + édition)
|
||||
├── Section Identification (ref, désignation, type)
|
||||
├── Section Unité & Prix
|
||||
└── Section Stock (actuel + seuil minimum)
|
||||
```
|
||||
|
||||
### Modèle de données
|
||||
|
||||
```dart
|
||||
class Article {
|
||||
int? id;
|
||||
String reference; // Clé unique (ex: MP-001)
|
||||
String designation; // Libellé
|
||||
String type; // MP | PSF | PF
|
||||
String? uniteMesure; // kg, unité, rouleau, m
|
||||
double prixUnitaire; // En TND
|
||||
double stockActuel; // Quantité en stock
|
||||
double stockMinimum; // Seuil d'alerte
|
||||
bool actif; // Soft delete
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user