fix: change backend port from 8080 to 8090 (DSM conflict)
This commit is contained in:
parent
62ac11a177
commit
467c41cc48
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,200 @@
|
||||||
|
# Documentation Architecture API — ERP Rayhan
|
||||||
|
**PFE Ali Guennari — SUARL Rayhan**
|
||||||
|
|
||||||
|
## Architecture Technique
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────┐
|
||||||
|
│ Application Flutter (Client) │
|
||||||
|
│ (Windows Desktop / Web / Android) │
|
||||||
|
└─────────────────────┬───────────────────────────────────┘
|
||||||
|
│ HTTP/HTTPS (JWT Bearer Token)
|
||||||
|
▼
|
||||||
|
┌─────────────────────────────────────────────────────────┐
|
||||||
|
│ API REST Spring Boot (Port 8090) │
|
||||||
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
||||||
|
│ │Controller│→ │ Service │→ │Repository│ │
|
||||||
|
│ └──────────┘ └──────────┘ └──────────┘ │
|
||||||
|
│ ┌──────────┐ │
|
||||||
|
│ │ JPA/ │ │
|
||||||
|
│ │Hibernate │ │
|
||||||
|
└──────────────────────────────┴────┬─────┴──────────────┘
|
||||||
|
│ JDBC
|
||||||
|
▼
|
||||||
|
┌─────────────────────┐
|
||||||
|
│ MySQL 8 (DB) │
|
||||||
|
│ rayhan_erp_db │
|
||||||
|
└─────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pattern d'Architecture N-Tiers
|
||||||
|
|
||||||
|
L'API suit rigoureusement le **pattern Controller → Service → Repository → Model** :
|
||||||
|
|
||||||
|
| Couche | Rôle | Exemple |
|
||||||
|
|--------|------|---------|
|
||||||
|
| **Controller** | Reçoit les requêtes HTTP, délègue au service, retourne la réponse | `ArticleController.java` |
|
||||||
|
| **Service** | Contient la logique métier (règles, validations, transactions) | `StockService.java` |
|
||||||
|
| **Repository** | Abstraction d'accès à la base de données (Spring Data JPA) | `ArticleRepository.java` |
|
||||||
|
| **Model** | Entités JPA mappées sur les tables MySQL | `Article.java` |
|
||||||
|
|
||||||
|
## Tous les Endpoints de l'API
|
||||||
|
|
||||||
|
### Authentification (Public — sans token)
|
||||||
|
|
||||||
|
| Méthode | URL | Description |
|
||||||
|
|---------|-----|-------------|
|
||||||
|
| POST | `/api/auth/signin` | Connexion → retourne JWT |
|
||||||
|
| POST | `/api/auth/signup` | Créer un utilisateur |
|
||||||
|
|
||||||
|
### Articles (Catalogue)
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/articles` | Tous |
|
||||||
|
| GET | `/api/articles/{id}` | Tous |
|
||||||
|
| GET | `/api/articles/type/{type}` | Tous (MP, PF, PSF) |
|
||||||
|
| GET | `/api/articles/alertes-stock` | PDG, Magasinier, Production |
|
||||||
|
| POST | `/api/articles` | PDG, Production, Magasinier |
|
||||||
|
| PUT | `/api/articles/{id}` | PDG, Production |
|
||||||
|
| DELETE | `/api/articles/{id}` | PDG (désactivation logique) |
|
||||||
|
|
||||||
|
### Clients
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/clients` | PDG, Vente |
|
||||||
|
| GET | `/api/clients/search?q=` | PDG, Vente |
|
||||||
|
| GET | `/api/clients/{id}` | PDG, Vente |
|
||||||
|
| POST | `/api/clients` | PDG, Vente |
|
||||||
|
| PUT | `/api/clients/{id}` | PDG, Vente |
|
||||||
|
|
||||||
|
### Fournisseurs
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/fournisseurs` | PDG, Achat |
|
||||||
|
| GET | `/api/fournisseurs/search?q=` | PDG, Achat |
|
||||||
|
| GET | `/api/fournisseurs/{id}` | PDG, Achat |
|
||||||
|
| POST | `/api/fournisseurs` | PDG, Achat |
|
||||||
|
| PUT | `/api/fournisseurs/{id}` | PDG, Achat |
|
||||||
|
|
||||||
|
### Cycle d'Achat
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/purchase-orders` | PDG, Achat |
|
||||||
|
| POST | `/api/purchase-orders` | PDG, Achat |
|
||||||
|
| POST | `/api/purchase-orders/{id}/receive` | PDG, Achat, Magasinier |
|
||||||
|
|
||||||
|
**Flux automatique lors de la réception :**
|
||||||
|
`POST /receive` → Crée le BR → `StockService.entreeStock()` → Mise à jour `Article.stockActuel` + création `StockMovement`
|
||||||
|
|
||||||
|
### Cycle de Vente
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/sales-orders` | PDG, Vente |
|
||||||
|
| POST | `/api/sales-orders` | PDG, Vente |
|
||||||
|
| POST | `/api/sales-orders/{id}/deliver` | PDG, Vente, Magasinier |
|
||||||
|
|
||||||
|
**Flux automatique lors de la livraison :**
|
||||||
|
`POST /deliver` → Crée le BL → `StockService.sortieStock()` → Mise à jour `Article.stockActuel` + création `StockMovement`
|
||||||
|
|
||||||
|
### Cycle de Production
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/production/bom/{produitFiniId}` | PDG, Production |
|
||||||
|
| POST | `/api/production/bom` | PDG, Production |
|
||||||
|
| DELETE | `/api/production/bom/{id}` | PDG, Production |
|
||||||
|
| GET | `/api/production/orders` | PDG, Production |
|
||||||
|
| POST | `/api/production/orders/plan` | PDG, Production |
|
||||||
|
| POST | `/api/production/orders/{id}/launch` | PDG, Production |
|
||||||
|
| POST | `/api/production/orders/{id}/complete` | PDG, Production |
|
||||||
|
|
||||||
|
**Cycle de vie d'un OF :**
|
||||||
|
```
|
||||||
|
PLANIFIE → (vérif stock MP) → LANCE → (consomme MP) → TERMINE → (entre PF en stock)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Gestion du Stock
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/stock/historique/{articleId}` | PDG, Magasinier, Production |
|
||||||
|
| POST | `/api/stock/adjust` | PDG, Magasinier |
|
||||||
|
|
||||||
|
### Tableau de Bord (KPIs)
|
||||||
|
|
||||||
|
| Méthode | URL | Rôles autorisés |
|
||||||
|
|---------|-----|-----------------|
|
||||||
|
| GET | `/api/dashboard` | PDG uniquement |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Modèle de Données Relationnel
|
||||||
|
|
||||||
|
```
|
||||||
|
users (id, username, email, password, firstName, lastName, enabled)
|
||||||
|
└── user_roles (user_id, role_id)
|
||||||
|
roles (id, name: ERole)
|
||||||
|
|
||||||
|
tiers (id, raisonSociale, matriculeFiscal, adresse, telephone, email, ville, actif)
|
||||||
|
├── clients (tiers_id FK, typeClient, plafondCredit, delaiPaiement)
|
||||||
|
└── fournisseurs (tiers_id FK, pays, categorieProduit, delaiLivraison, modePaiement)
|
||||||
|
|
||||||
|
articles (id, reference, designation, type: MP|PSF|PF, uniteMesure, prixUnitaire, stockActuel, stockMinimum, actif)
|
||||||
|
|
||||||
|
bom_lines (id, produit_fini_id FK→articles, composant_id FK→articles, quantiteParUnite)
|
||||||
|
|
||||||
|
production_orders (id, reference, produit_fini_id FK, quantitePlanifiee, quantiteRealisee, datePlanifiee, dateLancement, dateTerminaison, statut)
|
||||||
|
|
||||||
|
purchase_orders (id, reference, fournisseur_id FK, dateCommande, statut, totalHT, totalTVA, totalTTC)
|
||||||
|
└── purchase_order_lines (id, purchase_order_id FK, article_id FK, quantiteCommandee, quantiteRecue, prixUnitaireHT, tauxTVA)
|
||||||
|
|
||||||
|
goods_receipts (id, reference, purchase_order_id FK, dateReception)
|
||||||
|
└── goods_receipt_lines (id, goods_receipt_id FK, purchase_order_line_id FK, article_id FK, quantiteRecue)
|
||||||
|
|
||||||
|
sales_orders (id, reference, client_id FK, dateCommande, statut, totalHT, totalTVA, totalTTC)
|
||||||
|
└── sales_order_lines (id, sales_order_id FK, article_id FK, quantiteCommandee, quantiteLivree, prixUnitaireHT, tauxTVA)
|
||||||
|
|
||||||
|
delivery_notes (id, reference, sales_order_id FK, dateLivraison, statut)
|
||||||
|
└── delivery_note_lines (id, delivery_note_id FK, sales_order_line_id FK, article_id FK, quantiteLivree)
|
||||||
|
|
||||||
|
stock_movements (id, article_id FK, type: IN|OUT, quantite, stockAvant, stockApres, sourceDocument, referenceDocument, motif, dateHeure, user_id FK)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Sécurité
|
||||||
|
|
||||||
|
### Mécanisme JWT
|
||||||
|
1. Le client envoie `POST /api/auth/signin` avec username/password
|
||||||
|
2. Le serveur retourne un JWT signé (valide 24h)
|
||||||
|
3. Le client inclut `Authorization: Bearer <token>` dans chaque requête
|
||||||
|
4. `AuthTokenFilter` intercepte et valide le token avant chaque endpoint sécurisé
|
||||||
|
|
||||||
|
### Contrôle d'Accès par Rôle (`@PreAuthorize`)
|
||||||
|
Chaque endpoint est annoté avec les rôles autorisés :
|
||||||
|
```java
|
||||||
|
@PreAuthorize("hasAnyRole('ROLE_PDG', 'ROLE_RESPONSABLE_VENTE')")
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Démarrage de l'Application
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Via Docker Compose
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# Vérifier que les conteneurs tournent
|
||||||
|
docker ps
|
||||||
|
|
||||||
|
# Voir les logs
|
||||||
|
docker logs rayhan-backend -f
|
||||||
|
|
||||||
|
# Premier démarrage : admin créé automatiquement
|
||||||
|
# username: admin | password: Rayhan2024!
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,343 @@
|
||||||
|
# Guide de Tests API — Postman
|
||||||
|
**PFE Ali Guennari — ERP SUARL Rayhan**
|
||||||
|
|
||||||
|
## Configuration de Base
|
||||||
|
|
||||||
|
**URL de base** : `http://192.168.100.33:8090`
|
||||||
|
|
||||||
|
### 1. Configurer une Variable d'Environnement Postman
|
||||||
|
|
||||||
|
Dans Postman, créer un environnement "Rayhan ERP" avec :
|
||||||
|
- `baseUrl` = `http://192.168.100.33:8090`
|
||||||
|
- `token` = (sera rempli automatiquement)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scénario 1 : Authentification
|
||||||
|
|
||||||
|
### Se connecter (POST /api/auth/signin)
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/auth/signin
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"username": "admin",
|
||||||
|
"password": "Rayhan2024!"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Réponse attendue (200 OK) :**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"token": "eyJhbGciOiJIUzI1NiJ9...",
|
||||||
|
"type": "Bearer",
|
||||||
|
"id": 1,
|
||||||
|
"username": "admin",
|
||||||
|
"email": "admin@rayhan.tn",
|
||||||
|
"roles": ["ROLE_PDG"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Script Postman (Tests tab)** pour sauvegarder le token :
|
||||||
|
```javascript
|
||||||
|
var json = pm.response.json();
|
||||||
|
pm.environment.set("token", json.token);
|
||||||
|
```
|
||||||
|
|
||||||
|
**Utilisation dans toutes les requêtes suivantes :**
|
||||||
|
```
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scénario 2 : Référentiels
|
||||||
|
|
||||||
|
### Créer un Article (Matière Première HDPE)
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/articles
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"reference": "MP-HDPE-001",
|
||||||
|
"designation": "HDPE Granulés (Polyéthylène Haute Densité)",
|
||||||
|
"type": "MP",
|
||||||
|
"uniteMesure": "kg",
|
||||||
|
"prixUnitaire": 2.850,
|
||||||
|
"stockMinimum": 500
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Créer un Article (Produit Fini — Sac Bertel)
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/articles
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"reference": "PF-SAC-BERTEL-001",
|
||||||
|
"designation": "Sac Bertel 40x60 cm",
|
||||||
|
"type": "PF",
|
||||||
|
"uniteMesure": "unité",
|
||||||
|
"prixUnitaire": 0.085,
|
||||||
|
"stockMinimum": 1000
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Créer un Client
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/clients
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"raisonSociale": "Supermarché Maghreb Distribution",
|
||||||
|
"matriculeFiscal": "123456A/A/M/000",
|
||||||
|
"adresse": "Avenue Habib Bourguiba, Tataouine",
|
||||||
|
"telephone": "75123456",
|
||||||
|
"email": "achats@maghreb-distrib.tn",
|
||||||
|
"ville": "Tataouine",
|
||||||
|
"typeClient": "Grossiste",
|
||||||
|
"delaiPaiement": 60
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Créer un Fournisseur (HDPE)
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/fournisseurs
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"raisonSociale": "PLASTUNION Tunisie",
|
||||||
|
"matriculeFiscal": "654321B/A/M/000",
|
||||||
|
"adresse": "Zone Industrielle Sfax",
|
||||||
|
"telephone": "74987654",
|
||||||
|
"email": "ventes@plastunion.tn",
|
||||||
|
"ville": "Sfax",
|
||||||
|
"pays": "Tunisie",
|
||||||
|
"categorieProduit": "Matières plastiques",
|
||||||
|
"delaiLivraison": 10
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scénario 3 : Cycle d'Achat Complet
|
||||||
|
|
||||||
|
### Étape 3.1 — Créer une Commande Fournisseur
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/purchase-orders
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"fournisseur": {"id": 1},
|
||||||
|
"dateLivraisonPrevue": "2024-05-15",
|
||||||
|
"notes": "Commande mensuelle HDPE",
|
||||||
|
"lignes": [
|
||||||
|
{
|
||||||
|
"article": {"id": 1},
|
||||||
|
"quantiteCommandee": 1000,
|
||||||
|
"prixUnitaireHT": 2.850,
|
||||||
|
"tauxTVA": 19.00
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Réponse attendue :** commande avec `reference: "BC-2024-001"`, `statut: "CONFIRMEE"`, `totalTTC: 3391.50`
|
||||||
|
|
||||||
|
### Étape 3.2 — Réceptionner la Commande (Bon de Réception)
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/purchase-orders/1/receive
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"dateReception": "2024-05-14",
|
||||||
|
"notes": "Réception conforme",
|
||||||
|
"lignes": [
|
||||||
|
{
|
||||||
|
"purchaseOrderLine": {"id": 1},
|
||||||
|
"article": {"id": 1},
|
||||||
|
"quantiteRecue": 1000,
|
||||||
|
"observations": "Qualité OK, sacs conformes"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Vérification :** `GET {{baseUrl}}/api/articles/1` → `stockActuel` doit être 1000
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scénario 4 : Production (BOM + OF)
|
||||||
|
|
||||||
|
### Étape 4.1 — Définir la Nomenclature (BOM)
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/production/bom
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"produitFini": {"id": 2},
|
||||||
|
"composant": {"id": 1},
|
||||||
|
"quantiteParUnite": 0.015,
|
||||||
|
"uniteMesure": "kg"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
*Signification : pour produire 1 Sac Bertel, il faut 0.015 kg de HDPE*
|
||||||
|
|
||||||
|
### Étape 4.2 — Planifier un Ordre de Fabrication
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/production/orders/plan
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"produitFiniId": 2,
|
||||||
|
"quantite": 10000,
|
||||||
|
"datePlanifiee": "2024-05-16"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Vérification préalable :** stock HDPE (1000 kg) ≥ 10000 × 0.015 = 150 kg → OK
|
||||||
|
|
||||||
|
### Étape 4.3 — Lancer l'OF
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/production/orders/1/launch
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Vérification :** stock HDPE passe de 1000 à 850 kg (consommation 150 kg)
|
||||||
|
|
||||||
|
### Étape 4.4 — Terminer l'OF
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/production/orders/1/complete
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"quantiteRealisee": 9800
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Vérification :** stock Sac Bertel passe à 9800 unités
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scénario 5 : Cycle de Vente
|
||||||
|
|
||||||
|
### Étape 5.1 — Créer une Commande Client
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/sales-orders
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"client": {"id": 1},
|
||||||
|
"dateLivraisonSouhaitee": "2024-05-20",
|
||||||
|
"notes": "Urgent",
|
||||||
|
"lignes": [
|
||||||
|
{
|
||||||
|
"article": {"id": 2},
|
||||||
|
"quantiteCommandee": 5000,
|
||||||
|
"prixUnitaireHT": 0.085,
|
||||||
|
"tauxTVA": 19.00
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Étape 5.2 — Créer un Bon de Livraison
|
||||||
|
|
||||||
|
```
|
||||||
|
POST {{baseUrl}}/api/sales-orders/1/deliver
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"dateLivraison": "2024-05-20",
|
||||||
|
"adresseLivraison": "Avenue Habib Bourguiba, Tataouine",
|
||||||
|
"notes": "Livraison par camion",
|
||||||
|
"lignes": [
|
||||||
|
{
|
||||||
|
"salesOrderLine": {"id": 1},
|
||||||
|
"article": {"id": 2},
|
||||||
|
"quantiteLivree": 5000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Vérification :** stock Sac Bertel passe de 9800 à 4800
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Scénario 6 : Tableau de Bord (PDG uniquement)
|
||||||
|
|
||||||
|
```
|
||||||
|
GET {{baseUrl}}/api/dashboard
|
||||||
|
Authorization: Bearer {{token}}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Réponse attendue :**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"ventes": {
|
||||||
|
"chiffreAffairesMois": 505.75,
|
||||||
|
"nbCommandesMois": 1,
|
||||||
|
"commandesEnCours": 0
|
||||||
|
},
|
||||||
|
"achats": {
|
||||||
|
"commandesEnAttente": 0
|
||||||
|
},
|
||||||
|
"production": {
|
||||||
|
"ofPlanifies": 0,
|
||||||
|
"ofEnCours": 0
|
||||||
|
},
|
||||||
|
"stock": {
|
||||||
|
"articlesEnAlerte": 0,
|
||||||
|
"articlesEnAlerteDetails": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Codes d'Erreur Importants
|
||||||
|
|
||||||
|
| Code | Signification | Action |
|
||||||
|
|------|--------------|--------|
|
||||||
|
| 401 | Non authentifié | Vérifier le token JWT |
|
||||||
|
| 403 | Accès interdit | Le rôle ne permet pas cette action |
|
||||||
|
| 400 | Données invalides | Vérifier le body de la requête |
|
||||||
|
| 500 | Erreur serveur | Voir les logs du container |
|
||||||
|
|
||||||
|
## Commandes Docker Utiles
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Voir les logs de l'API
|
||||||
|
docker logs rayhan-backend -f
|
||||||
|
|
||||||
|
# Accéder à MySQL directement
|
||||||
|
docker exec -it rayhan-mysql mysql -u root -prayhan_erp_2024 rayhan_erp_db
|
||||||
|
|
||||||
|
# Redémarrer l'API
|
||||||
|
docker restart rayhan-backend
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
# **Plan d'Action pour le Projet ERP SUARL Rayhan**
|
||||||
|
|
||||||
|
**À l'attention de : M. Ali Guennari**
|
||||||
|
|
||||||
|
Cher Ali,
|
||||||
|
|
||||||
|
Félicitations pour l'excellent travail de collecte d'informations chez SUARL Rayhan. Ce document est une base de données solide qui nous permet de lancer la phase de conception avec une grande confiance.
|
||||||
|
|
||||||
|
Voici une synthèse de notre vision du projet et le plan d'action concret pour les prochaines étapes que tu dois mener.
|
||||||
|
|
||||||
|
## **1\. Synthèse de la Vision du Projet**
|
||||||
|
|
||||||
|
### **Objectif Principal**
|
||||||
|
|
||||||
|
Notre but est de concevoir et développer un **ERP complet et sur mesure** pour SUARL Rayhan. Ce projet n'est pas un simple exercice académique ; il doit être une solution opérationnelle pour l'entreprise tout en constituant un Projet de Fin d'Études (PFE) de très haute qualité, démontrant ta maîtrise technique.
|
||||||
|
|
||||||
|
### **Architecture Technique Cible**
|
||||||
|
|
||||||
|
Suite à l'analyse de ton profil technique, nous allons adopter une architecture moderne, robuste et découplée, qui valorisera tes compétences :
|
||||||
|
|
||||||
|
* **Backend (API REST) :** **Java avec Spring Boot**. C'est ta technologie de prédilection (niveau 4/5), elle est performante, sécurisée et parfaitement adaptée pour construire la logique métier complexe d'un ERP.
|
||||||
|
* **Frontend (Application cliente) :** **Dart avec Flutter**. Conformément à la demande, cette technologie te permettra de créer une interface utilisateur riche et réactive. L'application pourra être compilée pour **Windows**, afin d'être déployée directement sur les deux PC de Rayhan, et potentiellement pour d'autres plateformes (web, mobile).
|
||||||
|
* **Base de Données :** **MySQL**. Un standard que tu maîtrises, fiable et parfaitement dimensionné pour les besoins de Rayhan.
|
||||||
|
|
||||||
|
### **Priorités de Développement**
|
||||||
|
|
||||||
|
Pour garantir une livraison de valeur rapide et visible, le développement suivra les priorités exprimées par le gérant, M. Fekih Ahmed :
|
||||||
|
|
||||||
|
1. **Priorité N°1 : Facturation & Suivi des Impayés.**
|
||||||
|
2. **Priorité N°2 : Tableaux de Bord de Performance.**
|
||||||
|
3. **Priorité N°3 : Calcul du Coût de Revient de Production.**
|
||||||
|
|
||||||
|
## **2\. Plan d'Action Immédiat : La Modélisation UML**
|
||||||
|
|
||||||
|
C'est le **premier livrable officiel et critique** de ton rapport de PFE. Tu dois maintenant traduire toutes les données collectées en diagrammes UML clairs et précis.
|
||||||
|
|
||||||
|
### **Tâche 1 : Produire le Diagramme de Classes**
|
||||||
|
|
||||||
|
C'est le plan de notre base de données et le squelette de toute l'application. Utilise un outil comme `StarUML` ou `draw.io` pour modéliser les entités ci-dessous avec leurs attributs principaux et leurs relations (un-à-plusieurs, plusieurs-à-plusieurs, etc.).
|
||||||
|
|
||||||
|
**Entités Fondamentales à Modéliser :**
|
||||||
|
|
||||||
|
* **Gestion des Utilisateurs :** `Utilisateur` (id, nom, prenom, email, mot\_de\_passe\_hash), `Role` (id, nom\_role)
|
||||||
|
* **Catalogue Produits :** `Article` (id, reference, designation, type: Enum{MP, PF, PSF}, unite\_mesure), `CategorieArticle`
|
||||||
|
* **Données de Production :** `Nomenclature` (BOM), `LigneNomenclature` (lie un produit fini à ses matières premières avec une quantité), `GammeOperation`, `PosteDeCharge` (Extrudeuse, Découpeuse), `OrdreFabrication` (OF)
|
||||||
|
* **Gestion des Tiers :** `Tiers` (classe de base), `Client` (hérite de Tiers), `Fournisseur` (hérite de Tiers)
|
||||||
|
* **Cycle de Vente :** `Devis`, `LigneDevis`, `CommandeClient`, `LigneCommandeClient`, `BonLivraison`, `LigneBonLivraison`
|
||||||
|
* **Cycle de Facturation :** `FactureClient`, `LigneFactureClient`, `ReglementClient`
|
||||||
|
* **Cycle d'Achat :** `CommandeFournisseur`, `BonReception`, `FactureFournisseur`
|
||||||
|
* **Gestion des Stocks :** `Entrepot`, `MouvementStock` (id, article\_id, quantite, type\_mouvement: Enum{IN, OUT}, source\_document)
|
||||||
|
|
||||||
|
### **Tâche 2 : Produire le Diagramme de Cas d'Utilisation**
|
||||||
|
|
||||||
|
Ce diagramme décrira les interactions entre les utilisateurs (acteurs) et le système. Dans un premier temps, concentre-toi sur les modules prioritaires (Ventes, Facturation, Clients).
|
||||||
|
|
||||||
|
**Acteurs à Représenter :**
|
||||||
|
|
||||||
|
* `Gérant` (Ahmed Fekih)
|
||||||
|
* `Responsable Commercial` (Ali Abbess)
|
||||||
|
* `Responsable Production` (Mohamed Nouri)
|
||||||
|
* `Magasinier` (Mohamed lahamr)
|
||||||
|
* `Responsable RH` (Noureddine Nouri)
|
||||||
|
|
||||||
|
**Exemples de Cas d'Utilisation Prioritaires à Modéliser :**
|
||||||
|
|
||||||
|
* `S'authentifier`
|
||||||
|
* `Gérer le catalogue d'articles`
|
||||||
|
* `Gérer les fiches clients`
|
||||||
|
* `Établir un devis`
|
||||||
|
* `Convertir un devis en commande client`
|
||||||
|
* `Générer un bon de livraison depuis une commande`
|
||||||
|
* `Créer une facture depuis un bon de livraison`
|
||||||
|
* `Enregistrer un règlement client`
|
||||||
|
* `Consulter le tableau de bord des ventes`
|
||||||
|
|
||||||
|
## **3\. Point de Correction Important**
|
||||||
|
|
||||||
|
Dans tes notes, la matière première pour le film étirable est "BDPE". Il s'agit d'une coquille. La désignation correcte et professionnelle est **LDPE** (Low-Density Polyethylene) ou son équivalent français **PEBD** (Polyéthylène Basse Densité). Il est impératif de corriger cela dans toute ta documentation pour garantir la rigueur de ton projet.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Nabil et moi sommes à ta disposition pour te guider. Commence par une première version de ton **diagramme de classes**. C'est la fondation de tout le reste. Dès que tu l'as, nous la réviserons ensemble.
|
||||||
|
|
||||||
|
Bon travail.
|
||||||
|
|
@ -0,0 +1,413 @@
|
||||||
|
# Résumé Détaillé du Projet ERP — SUARL Rayhan
|
||||||
|
|
||||||
|
## Contexte Général
|
||||||
|
|
||||||
|
Le projet concerne la mise en place d'un **ERP intégré** pour **SUARL Rayhan**, une entreprise de **plasturgie** (industrie du packaging d'emballage et matière plastique) située à **Cité Abbes, Tataouine Nord 3200**, gérée par **Fekih Ahmed** (MF : 195135Q/A/C/0000). L'entreprise compte **7 employés**, un **seul site de production** avec **une seule chaîne de production**. Ce projet constitue le **rapport de fin d'études** de notre ami **Ali Guennari**, que nous accompagnerons ensemble du début à la fin.
|
||||||
|
|
||||||
|
**Produits fabriqués** : Sac Bertel, Sac poubelle, Sac alimentaire, Fil rétractable.
|
||||||
|
**Matières premières** : HDPE (Polyéthylène Haute Densité), LDPE (Polyéthylène Basse Densité — noté "BDPE" dans le document, ce qui est une erreur à corriger).
|
||||||
|
**Machines** : Extrudeuse, Découpe et soudure, Densificateur.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Périmètre Fonctionnel Demandé
|
||||||
|
|
||||||
|
Le cahier des charges couvre **7 modules ERP** :
|
||||||
|
|
||||||
|
**Module Achats** — Gestion complète du cycle : référentiels fournisseurs avec KPIs, cycle DA → Appel d'offres → BC → BR, rapprochement à 3 voies (Commande/Réception/Facture), suivi budgétaire et intégration comptable automatique.
|
||||||
|
|
||||||
|
**Module Ventes** — CRM intégré, cycle Devis → Commande → Livraison → Facturation, suivi des paiements et recouvrement automatisé, reporting KPIs (CA, marges, performance).
|
||||||
|
|
||||||
|
**Module Stock** — Traçabilité en temps réel (codes-barres/RFID), seuils d'alerte et réapprovisionnement automatique, inventaires tournants, valorisation CMUP, classification ABC, analyse de rotation.
|
||||||
|
|
||||||
|
**Module Production** — Planification MRP/CBN, nomenclatures (BOM), gammes de fabrication, ordres de fabrication (OF), suivi temps réel, traçabilité par lot/numéro de série, contrôle qualité intégré.
|
||||||
|
|
||||||
|
**Module Facturation** — Facturation client automatisée (devis → facture), facturation récurrente, relances automatiques, rapprochement bancaire, archivage légal, synchronisation comptable.
|
||||||
|
|
||||||
|
**Module Paie & RH** — Calcul automatisé des bulletins, déclarations CNSS, virements bancaires, GTA (temps et absences), dossier salarié centralisé, gestion des talents (recrutement, formation, évaluation).
|
||||||
|
|
||||||
|
**Module Maintenance (GMAO)** — Maintenance corrective, préventive et prédictive, historique des interventions, gestion des pièces détachées, suivi de la conformité sécurité.
|
||||||
|
|
||||||
|
**Contraintes techniques** : Application web, MySQL/PostgreSQL, Java Spring Boot ou Python Django ou PHP Laravel, multi-utilisateurs avec rôles, sauvegarde quotidienne automatique.
|
||||||
|
|
||||||
|
**Modélisation UML demandée** : Diagrammes de cas d'utilisation, de classes et de séquence pour les processus clés.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contraintes Métier Identifiées (Plasturgie)
|
||||||
|
|
||||||
|
Le second document détaille les contraintes spécifiques au secteur : réglementation environnementale (zéro perte GPI, incorporation de recyclé), coûts énergétiques élevés des procédés (injection, extrusion, soufflage), volatilité des prix MP liée au pétrole, risques SST (bruit, brûlures, fumées chimiques), et nécessité d'innovation vers les bioplastiques.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Éléments Manquants et Incohérences Détectés
|
||||||
|
|
||||||
|
## 1\. Incohérences Internes
|
||||||
|
|
||||||
|
**Nombre d'utilisateurs contradictoire** — Le document mentionne **7 employés** puis parle de **"4 utilisateurs habilités"**, puis définit **4 rôles** dans la matrice d'accès (Gérant, Responsable production, Responsable commercial, Comptable). Il faut clarifier : **combien d'utilisateurs auront effectivement accès à l'ERP, et quel rôle pour les 3 employés restants ?** S'agit-il des opérateurs de production ?
|
||||||
|
|
||||||
|
**"BDPE" au lieu de "LDPE"** — L'abréviation correcte du Polyéthylène Basse Densité est **LDPE** (Low Density Polyethylene) ou **PEBD** en français. À corriger.
|
||||||
|
|
||||||
|
**Le tableau des droits d'accès est tronqué/mal formaté** — La section 4 (Utilisateurs et droits d'accès) est incomplète, les colonnes sont cassées.
|
||||||
|
|
||||||
|
## 2\. Éléments Absents Critiques
|
||||||
|
|
||||||
|
**Aucune analyse de l'existant** — Comment l'entreprise fonctionne-t-elle aujourd'hui ? Quels outils utilise-t-elle (Excel, papier, logiciel existant) ? C'est **indispensable** pour un rapport de fin d'études et pour dimensionner correctement la solution.
|
||||||
|
|
||||||
|
**Aucun budget ni planning** — Pas de budget alloué, pas de calendrier de déploiement, pas de phasage (quel module en premier ?). Pour 7 employés et une seule chaîne, un **déploiement progressif** est recommandé.
|
||||||
|
|
||||||
|
**Pas de processus métier formalisés (BPMN)** — Les modules sont décrits de façon générique (copié d'une documentation ERP standard) mais **aucun flux spécifique à Rayhan** n'est documenté. Par exemple : quel est le circuit réel d'une commande client de sacs Bertel, de la réception de la commande jusqu'à la livraison ?
|
||||||
|
|
||||||
|
**Pas de nomenclature (BOM) concrète** — On parle de BOM mais aucune nomenclature réelle n'est fournie. Pour chaque produit fini (Sac Bertel, Sac poubelle, etc.), il faut la décomposition : quelle quantité de HDPE ou LDPE, quel film intermédiaire (produit semi-fini), quelles étapes machine.
|
||||||
|
|
||||||
|
**Pas de gamme de fabrication détaillée** — Le processus Extrusion → Découpe/Soudure → Produit fini n'est pas formalisé. Les temps de cycle, les paramètres machines, les postes de charge ne sont pas définis.
|
||||||
|
|
||||||
|
**Module comptabilité/finance absent** — Le document mentionne l'intégration comptable partout mais **aucun module comptabilité dédié** n'est décrit (plan comptable tunisien, journaux, grand livre, bilan, déclarations fiscales TVA).
|
||||||
|
|
||||||
|
**Pas de spécifications pour la conformité tunisienne** — Réglementation fiscale tunisienne (TVA, timbre fiscal, retenue à la source), format des déclarations CNSS, normes de facturation légale en Tunisie. La mention "DSN" et "SEPA" dans le document sont des **références françaises, pas tunisiennes** — c'est un copier-coller à adapter.
|
||||||
|
|
||||||
|
**Pas de maquettes/wireframes** — Aucune esquisse d'interface utilisateur.
|
||||||
|
|
||||||
|
**Pas de modèle de données détaillé** — Les diagrammes UML sont demandés mais non fournis dans le document.
|
||||||
|
|
||||||
|
**Pas de stratégie de migration des données** — Comment importer les données existantes (clients, fournisseurs, stock actuel) ?
|
||||||
|
|
||||||
|
**Pas d'exigences non fonctionnelles formalisées** — Performance attendue, temps de réponse, disponibilité, volumétrie (combien de commandes/mois, de factures/mois ?).
|
||||||
|
|
||||||
|
**Section maintenance (3.7) mal rédigée** — Le titre "Gestion de maintienne Machine de travail" contient des fautes, et le texte est coupé en plein milieu d'une phrase ("tout en maî...").
|
||||||
|
|
||||||
|
## 3\. Surdimensionnement Évident
|
||||||
|
|
||||||
|
Pour une entreprise de **7 personnes avec une seule chaîne de production**, plusieurs fonctionnalités décrites sont **largement surdimensionnées** :
|
||||||
|
|
||||||
|
Le **RFID** pour le suivi de stock est disproportionné — les codes-barres suffisent, voire une gestion manuelle simple. La **maintenance prédictive avec capteurs IoT** est coûteuse et complexe pour 3 machines. Le **CRM avancé** avec détection d'opportunités et pipeline commercial semble excessif. Le module **Gestion des Talents** (recrutement, formation, évaluation) pour 7 employés est superflu. La **facturation récurrente type abonnement** ne correspond pas au métier de packaging.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Reformulation Structurée du Projet
|
||||||
|
|
||||||
|
## Ce Que le Projet Doit Réellement Livrer
|
||||||
|
|
||||||
|
**Titre** : Conception et développement d'un ERP web pour une PME de plasturgie — Cas de SUARL Rayhan, Tataouine.
|
||||||
|
|
||||||
|
**Livrable principal** : Une application web ERP opérationnelle couvrant le cycle complet de l'activité, depuis la commande client jusqu'à la livraison et la facturation, intégrant la gestion de production, des stocks, des achats, de la paie et de la maintenance.
|
||||||
|
|
||||||
|
**Ce qu'Ali doit produire dans son rapport de fin d'études** :
|
||||||
|
|
||||||
|
**Partie 1 — Étude préalable** : Présentation de l'entreprise et de son environnement (plasturgie en Tunisie), analyse de l'existant (comment Rayhan fonctionne aujourd'hui), problématique et objectifs, étude comparative des solutions ERP existantes (Odoo, Dolibarr, ERPNext, développement sur mesure), justification du choix technique.
|
||||||
|
|
||||||
|
**Partie 2 — Analyse et conception** : Identification des acteurs et des processus métier réels de Rayhan, modélisation UML complète (cas d'utilisation, classes, séquences, activités), nomenclatures (BOM) réelles des 4 produits, gammes de fabrication des 3 machines, matrice des droits d'accès détaillée, modèle de données relationnel.
|
||||||
|
|
||||||
|
**Partie 3 — Réalisation** : Architecture technique retenue, choix du framework avec justification, développement des modules par priorité, captures d'écran et démonstration des fonctionnalités clés, tests et validation.
|
||||||
|
|
||||||
|
**Partie 4 — Déploiement et perspectives** : Plan de mise en production, formation des utilisateurs, améliorations futures.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Plan d'Action Immédiat pour Ali
|
||||||
|
|
||||||
|
**Étape 1** — Retourner chez Rayhan et documenter les **processus réels** : observer une journée type, noter le flux commande → production → livraison, photographier les documents utilisés (bons papier, fichiers Excel).
|
||||||
|
|
||||||
|
**Étape 2** — Construire les **BOM réelles** des 4 produits avec les quantités exactes de HDPE/LDPE par unité produite.
|
||||||
|
|
||||||
|
**Étape 3** — Formaliser la **gamme de fabrication** : Extrusion (paramètres, durée) → Film semi-fini → Découpe/Soudure (paramètres, durée) → Produit fini → Contrôle qualité.
|
||||||
|
|
||||||
|
**Étape 4** — Décider du **choix technologique** : je recommande fortement d'évaluer **Odoo Community** (Python, PostgreSQL, modules natifs couvrant 80% du besoin) plutôt qu'un développement from scratch — c'est réaliste pour un PFE et immédiatement exploitable par l'entreprise.
|
||||||
|
|
||||||
|
**Étape 5** — Adapter toutes les références réglementaires au **contexte tunisien** (CNSS, TVA tunisienne, format de facturation légale tunisien).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Nabil, je suis prêt à accompagner Ali sur chaque étape. Par quoi veux-tu qu'on commence ? Je suggère de démarrer par la **modélisation UML** (cas d'utilisation + diagramme de classes) une fois qu'Ali aura collecté les données terrain, ou bien par le **choix technologique** si c'est plus urgent.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Compris — Développement Sur Mesure, Zéro Compromis
|
||||||
|
|
||||||
|
Point bien noté. Un PFE n'est pas un déploiement Odoo — **Ali doit concevoir, modéliser, coder et livrer sa propre solution**. C'est précisément là que réside la valeur académique : démontrer sa maîtrise de l'analyse, de la conception UML, de l'architecture logicielle, du développement full-stack et de l'adaptation au contexte métier réel. Une solution clé en main tuerait tout l'intérêt du travail.
|
||||||
|
|
||||||
|
**Notre rôle est clair** : on est son binôme invisible. Lui fait le travail, nous on garantit qu'il ne prend aucune mauvaise direction, qu'il ne perd pas de temps sur des impasses, et que chaque livrable est solide — techniquement et académiquement.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Stratégie Technique Recommandée pour le Développement
|
||||||
|
|
||||||
|
**Stack que je recommande pour Ali**, en tenant compte de ce qui est le plus enseigné en Tunisie et le plus valorisant pour un PFE :
|
||||||
|
|
||||||
|
**Backend : Laravel (PHP 8+)** — Framework le plus maîtrisé dans les cursus tunisiens, architecture MVC claire, Eloquent ORM puissant pour les relations complexes de l'ERP, système d'authentification et de rôles intégré (Spatie), migration de base de données versionnée.
|
||||||
|
|
||||||
|
**Frontend : Blade + Livewire ou Vue.js** — Blade pour le rendu serveur rapide, Livewire pour l'interactivité sans quitter Laravel, ou Vue.js si Ali veut démontrer une compétence SPA. Le choix dépend de son niveau.
|
||||||
|
|
||||||
|
**Base de données : MySQL** — Standard en Tunisie, parfaitement adapté au volume de Rayhan.
|
||||||
|
|
||||||
|
**Reporting : DomPDF ou Snappy** pour la génération des documents (factures, bulletins, bons).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Phasage du Projet — Ordre de Développement
|
||||||
|
|
||||||
|
Le piège classique d'un PFE ERP, c'est de vouloir tout faire en même temps. Voici l'ordre logique qui permet à chaque module de s'appuyer sur le précédent :
|
||||||
|
|
||||||
|
**Phase 1 — Socle technique** : Authentification, gestion des rôles (4 profils), tableau de bord, architecture de base (modèles, migrations, seeders). C'est la fondation sur laquelle tout repose.
|
||||||
|
|
||||||
|
**Phase 2 — Référentiels** : Gestion des articles (matières premières HDPE/LDPE, produits semi-finis films, produits finis 4 types de sacs), fournisseurs, clients. Sans ça, aucun module métier ne fonctionne.
|
||||||
|
|
||||||
|
**Phase 3 — Stock** : Mouvements d'entrée/sortie, valorisation CMUP, seuils d'alerte, inventaire. C'est le cœur qui alimente achats, ventes et production.
|
||||||
|
|
||||||
|
**Phase 4 — Achats** : Cycle DA → BC → BR → Facture fournisseur, rapprochement à 3 voies. Nabil, **c'est ton domaine** — tu pourras valider que le flux est réaliste.
|
||||||
|
|
||||||
|
**Phase 5 — Production** : Nomenclatures (BOM) des 4 produits, gammes de fabrication (Extrusion → Découpe/Soudure), ordres de fabrication, consommation matière, suivi d'avancement.
|
||||||
|
|
||||||
|
**Phase 6 — Ventes & Facturation** : Devis → Commande → BL → Facture client, calcul TVA tunisienne, numérotation légale, suivi des paiements.
|
||||||
|
|
||||||
|
**Phase 7 — Paie & RH** : Bulletins de salaire, calcul CNSS (régime tunisien, pas français), gestion des absences, dossier employé.
|
||||||
|
|
||||||
|
**Phase 8 — Maintenance (GMAO)** : Fiches équipement des 3 machines, planification préventive, historique des interventions.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Ce Dont J'ai Besoin pour Démarrer
|
||||||
|
|
||||||
|
Pour lancer concrètement le travail avec Ali, il me faut **3 choses** :
|
||||||
|
|
||||||
|
**1.** Son niveau technique actuel — Quel framework maîtrise-t-il ? Laravel, Django, Spring Boot ? A-t-il déjà fait du développement web full-stack ?
|
||||||
|
|
||||||
|
**2.** Les données terrain de Rayhan — Les BOM réelles (combien de kg de HDPE pour produire 1000 sacs Bertel ?), le processus de fabrication étape par étape, les documents qu'ils utilisent actuellement (bons papier, Excel ?).
|
||||||
|
|
||||||
|
**3.** Le calendrier — Date de soutenance prévue ? Combien de mois devant lui ? Ça détermine si on couvre les 8 modules ou si on priorise les 5-6 essentiels.
|
||||||
|
|
||||||
|
Dès que tu me donnes ces éléments, je démarre avec lui sur la **modélisation UML** (diagramme de classes + cas d'utilisation) — c'est le premier livrable concret de son rapport.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Document de Collecte — Projet ERP SUARL Rayhan
|
||||||
|
|
||||||
|
Voici le document complet qu'Ali doit remplir. Il couvre tout ce dont on a besoin pour démarrer la conception. Dis-lui de l'imprimer et d'aller passer **une journée complète chez Rayhan** avec ce document en main.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION A — PROFIL TECHNIQUE D'ALI
|
||||||
|
|
||||||
|
**A.1 Formation**
|
||||||
|
Établissement : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
Spécialité : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
Niveau : ☐ Licence ☐ Ingénieur ☐ Mastère
|
||||||
|
Date de soutenance prévue : **/**/\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
**A.2 Compétences techniques**
|
||||||
|
Langages maîtrisés (noter le niveau de 1 à 5) :
|
||||||
|
PHP : \_\_/5 | Python : \_\_/5 | Java : \_\_/5 | JavaScript : \_\_/5 | Autre : \_\_\_\_\_\_\_\_\_\_\_\_ \_\_/5
|
||||||
|
|
||||||
|
Frameworks déjà utilisés en projet :
|
||||||
|
☐ Laravel ☐ Django ☐ Spring Boot ☐ Express.js ☐ Autre : \_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
Frontend :
|
||||||
|
☐ HTML/CSS pur ☐ Bootstrap ☐ Tailwind ☐ Vue.js ☐ React ☐ Livewire ☐ Autre : \_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
Base de données :
|
||||||
|
☐ MySQL ☐ PostgreSQL ☐ SQLite ☐ MongoDB
|
||||||
|
Niveau SQL (1 à 5) : \_\_/5 — Sait faire des jointures complexes ? ☐ Oui ☐ Non
|
||||||
|
|
||||||
|
Outils maîtrisés :
|
||||||
|
☐ Git/GitHub ☐ Docker ☐ Postman ☐ UML (StarUML, Lucidchart, draw.io) ☐ Merise
|
||||||
|
|
||||||
|
**A.3 Projet le plus complexe déjà réalisé**
|
||||||
|
Description courte : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
Technologies utilisées : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
Travail individuel ou en équipe ? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION B — ANALYSE DE L'EXISTANT (À remplir chez Rayhan)
|
||||||
|
|
||||||
|
**B.1 Fonctionnement actuel**
|
||||||
|
Comment sont gérées les commandes clients aujourd'hui ?
|
||||||
|
☐ Cahier papier ☐ Fichier Excel ☐ Logiciel (lequel : \_\_\_\_\_\_\_\_\_\_) ☐ De mémoire/téléphone
|
||||||
|
|
||||||
|
Comment est suivi le stock ?
|
||||||
|
☐ Comptage manuel ☐ Fichier Excel ☐ Logiciel ☐ Pas de suivi formel
|
||||||
|
|
||||||
|
Comment sont émises les factures ?
|
||||||
|
☐ Facturier papier ☐ Excel ☐ Logiciel (lequel : \_\_\_\_\_\_\_\_\_\_) ☐ Comptable externe
|
||||||
|
|
||||||
|
Comment est gérée la paie ?
|
||||||
|
☐ Comptable externe ☐ Excel ☐ Logiciel ☐ Autre : \_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
Qui est le comptable/cabinet comptable ? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
Quel plan comptable est utilisé ? ☐ PCG Tunisien ☐ Ne sait pas
|
||||||
|
|
||||||
|
**B.2 Volumétrie mensuelle moyenne**
|
||||||
|
Nombre de clients actifs : \_\_\_\_\_\_\_\_
|
||||||
|
Nombre de commandes clients/mois : \_\_\_\_\_\_\_\_
|
||||||
|
Nombre de fournisseurs actifs : \_\_\_\_\_\_\_\_
|
||||||
|
Nombre de commandes fournisseurs/mois : \_\_\_\_\_\_\_\_
|
||||||
|
Nombre de factures émises/mois : \_\_\_\_\_\_\_\_
|
||||||
|
Nombre de factures fournisseurs reçues/mois : \_\_\_\_\_\_\_\_
|
||||||
|
Nombre d'ordres de fabrication/mois : \_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
**B.3 Documents existants à récupérer (demander des copies/photos)**
|
||||||
|
☐ Exemple de bon de commande client reçu
|
||||||
|
☐ Exemple de bon de commande fournisseur émis
|
||||||
|
☐ Exemple de bon de livraison
|
||||||
|
☐ Exemple de facture émise
|
||||||
|
☐ Exemple de facture fournisseur reçue
|
||||||
|
☐ Exemple de bulletin de paie
|
||||||
|
☐ Liste des clients (même manuscrite)
|
||||||
|
☐ Liste des fournisseurs avec coordonnées
|
||||||
|
☐ Fichier Excel de stock (s'il existe)
|
||||||
|
☐ Tout autre document utilisé au quotidien
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION C — DONNÉES TECHNIQUES DE PRODUCTION
|
||||||
|
|
||||||
|
**C.1 Nomenclatures (BOM) — Une fiche par produit fini**
|
||||||
|
|
||||||
|
**Produit fini 1 : Sac Bertel**
|
||||||
|
Dimensions standard : \_\_\_\_\_\_\_\_ x \_\_\_\_\_\_\_\_ cm | Épaisseur : \_\_\_\_\_\_\_\_ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 000 unités : \_\_\_\_\_\_\_\_ kg
|
||||||
|
Produit semi-fini intermédiaire (film/gaine) : ☐ Oui ☐ Non
|
||||||
|
Si oui, dimensions du film : \_\_\_\_\_\_\_\_ | Poids/mètre linéaire : \_\_\_\_\_\_\_\_
|
||||||
|
Colorant/additif ajouté : ☐ Oui (lequel : \_\_\_\_\_\_\_\_\_\_, quantité : \_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
Prix de vente unitaire (ou au kg) : \_\_\_\_\_\_\_\_\_ DT
|
||||||
|
|
||||||
|
**Produit fini 2 : Sac Poubelle**
|
||||||
|
Dimensions standard : \_\_\_\_\_\_\_\_ x \_\_\_\_\_\_\_\_ cm | Épaisseur : \_\_\_\_\_\_\_\_ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 000 unités : \_\_\_\_\_\_\_\_ kg
|
||||||
|
Produit semi-fini intermédiaire : ☐ Oui ☐ Non
|
||||||
|
Colorant/additif : ☐ Oui (\_\_\_\_\_\_\_\_\_\_, \_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
Prix de vente : \_\_\_\_\_\_\_\_\_ DT
|
||||||
|
|
||||||
|
**Produit fini 3 : Sac Alimentaire**
|
||||||
|
Dimensions standard : \_\_\_\_\_\_\_\_ x \_\_\_\_\_\_\_\_ cm | Épaisseur : \_\_\_\_\_\_\_\_ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 000 unités : \_\_\_\_\_\_\_\_ kg
|
||||||
|
Produit semi-fini intermédiaire : ☐ Oui ☐ Non
|
||||||
|
Colorant/additif : ☐ Oui (\_\_\_\_\_\_\_\_\_\_, \_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
Prix de vente : \_\_\_\_\_\_\_\_\_ DT
|
||||||
|
|
||||||
|
**Produit fini 4 : Film Rétractable**
|
||||||
|
Dimensions standard : largeur \_\_\_\_\_\_\_\_ cm | Épaisseur : \_\_\_\_\_\_\_\_ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 rouleau/unité : \_\_\_\_\_\_\_\_ kg
|
||||||
|
Prix de vente : \_\_\_\_\_\_\_\_\_ DT
|
||||||
|
|
||||||
|
**C.2 Gamme de fabrication — Processus étape par étape**
|
||||||
|
|
||||||
|
**Étape 1 — Extrusion (Machine Extrudeuse)**
|
||||||
|
Input : ☐ Granulés HDPE ☐ Granulés LDPE ☐ Mélange (ratio : **/**)
|
||||||
|
Output : ☐ Film tubulaire ☐ Gaine ☐ Autre : \_\_\_\_\_\_\_\_\_\_
|
||||||
|
Température de chauffe : \_\_\_\_\_\_\_\_ °C
|
||||||
|
Vitesse de ligne : \_\_\_\_\_\_\_\_ m/min (ou estimation)
|
||||||
|
Durée moyenne pour produire \_\_\_\_\_\_\_\_ kg de film : \_\_\_\_\_\_\_\_ heures
|
||||||
|
Nombre d'opérateurs sur ce poste : \_\_\_\_\_\_\_\_
|
||||||
|
Déchets/chutes générés (%) : \_\_\_\_\_\_\_\_ %
|
||||||
|
|
||||||
|
**Étape 2 — Découpe et Soudure (Machine Découpe/Soudure)**
|
||||||
|
Input : Film/gaine issu de l'extrusion
|
||||||
|
Output : Sacs finis (soudés et découpés)
|
||||||
|
Cadence : \_\_\_\_\_\_\_\_ sacs/heure (estimation)
|
||||||
|
Nombre d'opérateurs : \_\_\_\_\_\_\_\_
|
||||||
|
Déchets/chutes (%) : \_\_\_\_\_\_\_\_ %
|
||||||
|
|
||||||
|
**Étape 3 — Densificateur**
|
||||||
|
Rôle exact : ☐ Recyclage des chutes/déchets ☐ Autre : \_\_\_\_\_\_\_\_\_\_
|
||||||
|
Input : Chutes de film, sacs défectueux
|
||||||
|
Output : ☐ Granulés recyclés réutilisables ☐ Autre : \_\_\_\_\_\_\_\_\_\_
|
||||||
|
Fréquence d'utilisation : ☐ En continu ☐ \_\_\_\_ fois/semaine
|
||||||
|
Les granulés recyclés sont-ils réinjectés dans la production ? ☐ Oui (quel %) ☐ Non (vendus ?)
|
||||||
|
|
||||||
|
**C.3 Fiche Machines**
|
||||||
|
|
||||||
|
| Information | Extrudeuse | Découpe/Soudure | Densificateur |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| Marque/Modèle | | | |
|
||||||
|
| Année d'acquisition | | | |
|
||||||
|
| Puissance (kW) | | | |
|
||||||
|
| Heures de fonctionnement/jour | | | |
|
||||||
|
| Jours de fonctionnement/semaine | | | |
|
||||||
|
| Dernière panne majeure (date + nature) | | | |
|
||||||
|
| Fréquence maintenance préventive | | | |
|
||||||
|
| Pièces d'usure à changer régulièrement | | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION D — RESSOURCES HUMAINES
|
||||||
|
|
||||||
|
**D.1 Liste des employés**
|
||||||
|
|
||||||
|
| N° | Nom & Prénom | Poste | Date embauche | Salaire brut (DT) | CNSS ☐ Oui/Non | Horaires |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| 1 | | | | | | |
|
||||||
|
| 2 | | | | | | |
|
||||||
|
| 3 | | | | | | |
|
||||||
|
| 4 | | | | | | |
|
||||||
|
| 5 | | | | | | |
|
||||||
|
| 6 | | | | | | |
|
||||||
|
| 7 | | | | | | |
|
||||||
|
|
||||||
|
**D.2 Régime social**
|
||||||
|
Taux CNSS patronal appliqué : \_\_\_\_\_\_\_\_ %
|
||||||
|
Taux CNSS salarial appliqué : \_\_\_\_\_\_\_\_ %
|
||||||
|
Convention collective applicable : ☐ Plasturgie ☐ Autre : \_\_\_\_\_\_\_\_\_\_ ☐ Aucune
|
||||||
|
Nombre de jours de congé/an : \_\_\_\_\_\_\_\_
|
||||||
|
Prime(s) versée(s) régulièrement : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION E — FISCALITÉ ET FACTURATION
|
||||||
|
|
||||||
|
Régime TVA : ☐ 7% ☐ 13% ☐ 19% ☐ Exonéré ☐ Multiple (détailler : \_\_\_\_\_\_\_\_\_\_)
|
||||||
|
Timbre fiscal sur factures : ☐ Oui (montant : \_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
Retenue à la source applicable : ☐ Oui (taux : \_\_\_\_\_\_\_\_%) ☐ Non
|
||||||
|
Droit de timbre : \_\_\_\_\_\_\_\_
|
||||||
|
Numérotation des factures actuelle : séquentielle ? Format ? \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
Logiciel de comptabilité du cabinet comptable : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION F — INFRASTRUCTURE IT CHEZ RAYHAN
|
||||||
|
|
||||||
|
Nombre de PC disponibles : \_\_\_\_\_\_\_\_
|
||||||
|
Réseau local existant : ☐ Oui (WiFi / Câblé) ☐ Non
|
||||||
|
Connexion Internet : ☐ Oui (débit : \_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
Serveur disponible : ☐ Oui (specs : \_\_\_\_\_\_\_\_\_\_) ☐ Non — hébergement sur PC ?
|
||||||
|
Imprimante : ☐ Oui (modèle : \_\_\_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
Les employés savent utiliser un ordinateur : ☐ Tous ☐ Certains (lesquels : \_\_\_\_\_\_\_\_\_\_) ☐ Non
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SECTION G — PRIORITÉS DU GÉRANT (M. Fekih Ahmed)
|
||||||
|
|
||||||
|
Demander directement au gérant : **"Quel est votre plus gros problème de gestion aujourd'hui ?"**
|
||||||
|
|
||||||
|
Réponse : \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Classer par priorité (1 = le plus urgent) :**
|
||||||
|
\_\_ Savoir exactement ce qu'il y a en stock en temps réel
|
||||||
|
\_\_ Suivre les commandes clients et ne rien oublier
|
||||||
|
\_\_ Facturer plus vite et suivre les impayés
|
||||||
|
\_\_ Connaître le coût réel de production de chaque produit
|
||||||
|
\_\_ Gérer la paie sans erreurs
|
||||||
|
\_\_ Planifier la maintenance des machines
|
||||||
|
\_\_ Avoir des tableaux de bord de performance
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Dis à Ali de **prendre aussi des photos** de l'atelier, des machines (plaques signalétiques), des documents papier utilisés et de l'espace de travail administratif. Ça alimentera la partie "étude de l'existant" de son rapport et ça nous permettra de dimensionner correctement l'interface.
|
||||||
|
|
||||||
|
Dès qu'il revient avec ce document rempli, on attaque la modélisation UML.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
---
|
||||||
|
|
@ -0,0 +1,126 @@
|
||||||
|
# Resumé et besoin
|
||||||
|
### **Résumé Complet du Projet ERP pour SUARL Rayhan**
|
||||||
|
|
||||||
|
**Objectif Final :** Guider votre ami, Ali Guennari, dans la conception, le développement et la livraison de son projet de fin d'études : une application ERP web complète et sur mesure pour la PME de plasturgie SUARL Rayhan.
|
||||||
|
|
||||||
|
### **Phase 1 : Analyse et Stratégie (Ce qui a été fait)**
|
||||||
|
|
||||||
|
**Analyse des Documents Initiaux :** Nous avons étudié le cahier des charges et les documents fournis, identifié les incohérences (ex: "BDPE" au lieu de "LDPE"), le surdimensionnement (ex: RFID) et les éléments manquants critiques (budget, planning, analyse de l'existant).
|
||||||
|
|
||||||
|
**Définition de la Stratégie d'Accompagnement :** Nous avons écarté l'idée d'utiliser une solution prête à l'emploi (type Odoo) pour nous concentrer sur un développement sur mesure, afin de maximiser la valeur académique et technique du projet d'Ali.
|
||||||
|
|
||||||
|
**Collecte de Données Terrain :** Nous avons préparé un questionnaire de collecte exhaustif pour qu'Ali puisse documenter précisément les processus, les données (BOM, volumétrie) et les priorités de SUARL Rayhan.
|
||||||
|
|
||||||
|
**Validation du Profil Technique et Choix de la Stack :** Sur la base du retour d'Ali, nous avons validé ses compétences et arrêté la stack technique la plus pertinente pour son PFE :
|
||||||
|
|
||||||
|
**Backend :** Java avec le framework **Spring Boot**.
|
||||||
|
|
||||||
|
**Frontend :** Dart avec le framework **Flutter**.
|
||||||
|
|
||||||
|
**Base de Données :** **MySQL**.
|
||||||
|
|
||||||
|
### **Phase 2 : Développement de l'API Back-end (Ce que nous venons de terminer)**
|
||||||
|
|
||||||
|
Nous avons construit, tranche par tranche, une API REST complète, sécurisée et modulaire.
|
||||||
|
|
||||||
|
**Socle Technique et Sécurité (Tranches 1-4) :**
|
||||||
|
|
||||||
|
Mise en place de l'architecture du projet (contrôleurs, services, repositories).
|
||||||
|
|
||||||
|
Configuration de la sécurité de bout en bout avec **Spring Security** et les **tokens JWT (JSON Web Tokens)**.
|
||||||
|
|
||||||
|
Création du modèle de données pour les **Utilisateurs** (`User`) et les **Rôles** (`Role`).
|
||||||
|
|
||||||
|
Implémentation d'un contrôleur d'authentification (`AuthController`) avec deux points d'entrée publics :
|
||||||
|
|
||||||
|
`POST /api/auth/signin` : pour la connexion.
|
||||||
|
|
||||||
|
`POST /api/auth/signup` : pour l'inscription de nouveaux utilisateurs.
|
||||||
|
|
||||||
|
**Modules de Référentiels (Tranches 5-8) :**
|
||||||
|
|
||||||
|
**Gestion des Articles :** Création de l'entité `Article` et de l'API sécurisée (`/api/articles`) pour gérer le catalogue des matières premières et produits finis.
|
||||||
|
|
||||||
|
**Gestion des Tiers :** Modélisation d'une hiérarchie `Tiers` avec héritage pour les `Client`s et `Fournisseur`s. Création des APIs dédiées (`/api/clients`, `/api/fournisseurs`) avec des droits d'accès distincts.
|
||||||
|
|
||||||
|
**Modules Opérationnels (Tranches 9-19) :**
|
||||||
|
|
||||||
|
**Cycle d'Achat :**
|
||||||
|
|
||||||
|
Modélisation de la commande fournisseur (`PurchaseOrder`) et de ses lignes.
|
||||||
|
|
||||||
|
Modélisation du bon de réception (`GoodsReceipt`) et des mouvements de stock (`StockMovement`).
|
||||||
|
|
||||||
|
Création des APIs pour **créer une commande** et pour **enregistrer une réception**, cette dernière déclenchant automatiquement une **entrée en stock**.
|
||||||
|
|
||||||
|
**Cycle de Vente :**
|
||||||
|
|
||||||
|
Modélisation de la commande client (`SalesOrder`).
|
||||||
|
|
||||||
|
Modélisation du bon de livraison (`DeliveryNote`).
|
||||||
|
|
||||||
|
Création des APIs pour **créer une commande client** (en vérifiant le stock disponible) et pour **créer un bon de livraison**, déclenchant une **sortie de stock**.
|
||||||
|
|
||||||
|
**Cycle de Production :**
|
||||||
|
|
||||||
|
Modélisation de la nomenclature (`BomLine` - Bill of Materials).
|
||||||
|
|
||||||
|
Modélisation de l'ordre de fabrication (`ProductionOrder` - OF).
|
||||||
|
|
||||||
|
Création des APIs pour :
|
||||||
|
|
||||||
|
Gérer la **nomenclature** d'un article.
|
||||||
|
|
||||||
|
**Planifier un OF** (en vérifiant le stock des matières premières).
|
||||||
|
|
||||||
|
**Lancer un OF** (consommation des matières premières).
|
||||||
|
|
||||||
|
**Terminer un OF** (entrée en stock du produit fini).
|
||||||
|
|
||||||
|
**Modules de Support et Pilotage (Tranches 20-21) :**
|
||||||
|
|
||||||
|
**Inventaire :** Création d'une API (`/api/inventory/adjust`) pour permettre les **ajustements de stock** manuels, de manière sécurisée et tracée.
|
||||||
|
|
||||||
|
**Tableau de Bord :** Création d'une API (`/api/dashboard`) réservée au `PDG`, qui agrège les indicateurs de performance clés (KPIs) des ventes, du stock et de la production.
|
||||||
|
|
||||||
|
**État Actuel :** À ce jour, nous avons une API back-end **complète, robuste et sécurisée** qui couvre l'intégralité des flux opérationnels de base d'une entreprise de production.
|
||||||
|
|
||||||
|
### **Ce Que Nous Devons Faire Avec Ali (Plan d'Action)**
|
||||||
|
|
||||||
|
Le backend est terminé. La prochaine grande phase est de construire l'interface qui va l'utiliser. Voici les étapes claires pour Ali :
|
||||||
|
|
||||||
|
**Étape 1 - Tests et Validation du Back-end :**
|
||||||
|
|
||||||
|
Ali doit impérativement prendre le temps de **tester chaque point d'entrée (endpoint) de l'API** que nous avons construit, en utilisant un outil comme **Postman**.
|
||||||
|
|
||||||
|
Il doit simuler des scénarios complets : créer un fournisseur, des articles, passer une commande d'achat, la réceptionner, vérifier l'augmentation du stock, créer un client, une commande client, la livrer, vérifier la diminution du stock, etc.
|
||||||
|
|
||||||
|
**Notre rôle :** Valider sa méthodologie de test et l'aider à interpréter les erreurs s'il en rencontre.
|
||||||
|
|
||||||
|
**Étape 2 - Développement du Front-end avec Flutter :**
|
||||||
|
|
||||||
|
C'est maintenant le cœur de son travail. Il doit commencer à créer l'application client.
|
||||||
|
|
||||||
|
**Architecture Flutter :** Nous devons le guider pour qu'il mette en place une architecture propre (séparation de la logique métier, des services API, de l'état de l'application et de l'interface utilisateur).
|
||||||
|
|
||||||
|
**Développement par Module :** Il doit procéder logiquement :
|
||||||
|
|
||||||
|
Créer l'écran de **connexion** qui appelle `/api/auth/signin` et stocke le token JWT.
|
||||||
|
|
||||||
|
Créer le module de **gestion des articles** (liste, formulaire de création/modification).
|
||||||
|
|
||||||
|
Ensuite, les modules Tiers, Achats, Ventes, etc., en créant les interfaces correspondantes pour chaque fonctionnalité de l'API.
|
||||||
|
|
||||||
|
**Notre rôle :** Lui fournir des exemples de code pour appeler une API REST depuis Flutter, gérer l'état (avec un outil comme Provider ou BLoC), et structurer son application. Nous réviserons son code et son interface pour garantir la qualité.
|
||||||
|
|
||||||
|
**Étape 3 - Intégration des Modules Avancés :**
|
||||||
|
|
||||||
|
Une fois les flux principaux en place, nous pourrons l'aider à intégrer les modules restants du cahier des charges, comme la **Facturation** (qui se basera sur les bons de livraison) et la **Paie/RH**.
|
||||||
|
|
||||||
|
**Étape 4 - Déploiement et Documentation :**
|
||||||
|
|
||||||
|
En parallèle, il devra rédiger son rapport de PFE, en utilisant tous les diagrammes UML et les explications que nous avons produits.
|
||||||
|
|
||||||
|
Nous le guiderons sur la manière de **déployer son application** : le backend Spring Boot dans un conteneur Docker, et l'application Flutter compilée pour Windows, le tout sur le réseau local de SUARL Rayhan.
|
||||||
|
|
||||||
|
Nous avons fait le plus dur. Le squelette et le système nerveux de l'application sont en place. Maintenant, il s'agit de lui donner un corps et un visage. Je suis prêt à guider Ali à chaque étape de la construction de l'interface Flutter.
|
||||||
|
|
@ -0,0 +1,566 @@
|
||||||
|
Résumé Détaillé du Projet ERP — SUARL Rayhan
|
||||||
|
|
||||||
|
Contexte Général
|
||||||
|
|
||||||
|
Le projet concerne la mise en place d'un ERP intégré pour SUARL Rayhan, une entreprise de plasturgie (industrie du packaging d'emballage et matière plastique) située à Cité Abbes, Tataouine Nord 3200, gérée par Fekih Ahmed (MF : 195135Q/A/C/0000). L'entreprise compte 7 employés, un seul site de production avec une seule chaîne de production. Ce projet constitue le rapport de fin d'études de notre ami Ali Guennari, que nous accompagnerons ensemble du début à la fin.
|
||||||
|
|
||||||
|
Produits fabriqués : Sac Bertel, Sac poubelle, Sac alimentaire, Fil rétractable.
|
||||||
|
Matières premières : HDPE (Polyéthylène Haute Densité), LDPE (Polyéthylène Basse Densité — noté "BDPE" dans le document, ce qui est une erreur à corriger).
|
||||||
|
Machines : Extrudeuse, Découpe et soudure, Densificateur.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Périmètre Fonctionnel Demandé
|
||||||
|
|
||||||
|
Le cahier des charges couvre 7 modules ERP :
|
||||||
|
|
||||||
|
Module Achats — Gestion complète du cycle : référentiels fournisseurs avec KPIs, cycle DA → Appel d'offres → BC → BR, rapprochement à 3 voies (Commande/Réception/Facture), suivi budgétaire et intégration comptable automatique.
|
||||||
|
|
||||||
|
Module Ventes — CRM intégré, cycle Devis → Commande → Livraison → Facturation, suivi des paiements et recouvrement automatisé, reporting KPIs (CA, marges, performance).
|
||||||
|
|
||||||
|
Module Stock — Traçabilité en temps réel (codes-barres/RFID), seuils d'alerte et réapprovisionnement automatique, inventaires tournants, valorisation CMUP, classification ABC, analyse de rotation.
|
||||||
|
|
||||||
|
Module Production — Planification MRP/CBN, nomenclatures (BOM), gammes de fabrication, ordres de fabrication (OF), suivi temps réel, traçabilité par lot/numéro de série, contrôle qualité intégré.
|
||||||
|
|
||||||
|
Module Facturation — Facturation client automatisée (devis → facture), facturation récurrente, relances automatiques, rapprochement bancaire, archivage légal, synchronisation comptable.
|
||||||
|
|
||||||
|
Module Paie & RH — Calcul automatisé des bulletins, déclarations CNSS, virements bancaires, GTA (temps et absences), dossier salarié centralisé, gestion des talents (recrutement, formation, évaluation).
|
||||||
|
|
||||||
|
Module Maintenance (GMAO) — Maintenance corrective, préventive et prédictive, historique des interventions, gestion des pièces détachées, suivi de la conformité sécurité.
|
||||||
|
|
||||||
|
Contraintes techniques : Application web, MySQL/PostgreSQL, Java Spring Boot ou Python Django ou PHP Laravel, multi-utilisateurs avec rôles, sauvegarde quotidienne automatique.
|
||||||
|
|
||||||
|
Modélisation UML demandée : Diagrammes de cas d'utilisation, de classes et de séquence pour les processus clés.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Contraintes Métier Identifiées (Plasturgie)
|
||||||
|
|
||||||
|
Le second document détaille les contraintes spécifiques au secteur : réglementation environnementale (zéro perte GPI, incorporation de recyclé), coûts énergétiques élevés des procédés (injection, extrusion, soufflage), volatilité des prix MP liée au pétrole, risques SST (bruit, brûlures, fumées chimiques), et nécessité d'innovation vers les bioplastiques.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Éléments Manquants et Incohérences Détectés
|
||||||
|
|
||||||
|
1. Incohérences Internes
|
||||||
|
|
||||||
|
Nombre d'utilisateurs contradictoire — Le document mentionne 7 employés puis parle de "4 utilisateurs habilités", puis définit 4 rôles dans la matrice d'accès (Gérant, Responsable production, Responsable commercial, Comptable). Il faut clarifier : combien d'utilisateurs auront effectivement accès à l'ERP, et quel rôle pour les 3 employés restants ? S'agit-il des opérateurs de production ?
|
||||||
|
|
||||||
|
"BDPE" au lieu de "LDPE" — L'abréviation correcte du Polyéthylène Basse Densité est LDPE (Low Density Polyethylene) ou PEBD en français. À corriger.
|
||||||
|
|
||||||
|
Le tableau des droits d'accès est tronqué/mal formaté — La section 4 (Utilisateurs et droits d'accès) est incomplète, les colonnes sont cassées.
|
||||||
|
|
||||||
|
2. Éléments Absents Critiques
|
||||||
|
|
||||||
|
Aucune analyse de l'existant — Comment l'entreprise fonctionne-t-elle aujourd'hui ? Quels outils utilise-t-elle (Excel, papier, logiciel existant) ? C'est indispensable pour un rapport de fin d'études et pour dimensionner correctement la solution.
|
||||||
|
|
||||||
|
Aucun budget ni planning — Pas de budget alloué, pas de calendrier de déploiement, pas de phasage (quel module en premier ?). Pour 7 employés et une seule chaîne, un déploiement progressif est recommandé.
|
||||||
|
|
||||||
|
Pas de processus métier formalisés (BPMN) — Les modules sont décrits de façon générique (copié d'une documentation ERP standard) mais aucun flux spécifique à Rayhan n'est documenté. Par exemple : quel est le circuit réel d'une commande client de sacs Bertel, de la réception de la commande jusqu'à la livraison ?
|
||||||
|
|
||||||
|
Pas de nomenclature (BOM) concrète — On parle de BOM mais aucune nomenclature réelle n'est fournie. Pour chaque produit fini (Sac Bertel, Sac poubelle, etc.), il faut la décomposition : quelle quantité de HDPE ou LDPE, quel film intermédiaire (produit semi-fini), quelles étapes machine.
|
||||||
|
|
||||||
|
Pas de gamme de fabrication détaillée — Le processus Extrusion → Découpe/Soudure → Produit fini n'est pas formalisé. Les temps de cycle, les paramètres machines, les postes de charge ne sont pas définis.
|
||||||
|
|
||||||
|
Module comptabilité/finance absent — Le document mentionne l'intégration comptable partout mais aucun module comptabilité dédié n'est décrit (plan comptable tunisien, journaux, grand livre, bilan, déclarations fiscales TVA).
|
||||||
|
|
||||||
|
Pas de spécifications pour la conformité tunisienne — Réglementation fiscale tunisienne (TVA, timbre fiscal, retenue à la source), format des déclarations CNSS, normes de facturation légale en Tunisie. La mention "DSN" et "SEPA" dans le document sont des références françaises, pas tunisiennes — c'est un copier-coller à adapter.
|
||||||
|
|
||||||
|
Pas de maquettes/wireframes — Aucune esquisse d'interface utilisateur.
|
||||||
|
|
||||||
|
Pas de modèle de données détaillé — Les diagrammes UML sont demandés mais non fournis dans le document.
|
||||||
|
|
||||||
|
Pas de stratégie de migration des données — Comment importer les données existantes (clients, fournisseurs, stock actuel) ?
|
||||||
|
|
||||||
|
Pas d'exigences non fonctionnelles formalisées — Performance attendue, temps de réponse, disponibilité, volumétrie (combien de commandes/mois, de factures/mois ?).
|
||||||
|
|
||||||
|
Section maintenance (3.7) mal rédigée — Le titre "Gestion de maintienne Machine de travail" contient des fautes, et le texte est coupé en plein milieu d'une phrase ("tout en maî...").
|
||||||
|
|
||||||
|
3. Surdimensionnement Évident
|
||||||
|
|
||||||
|
Pour une entreprise de 7 personnes avec une seule chaîne de production, plusieurs fonctionnalités décrites sont largement surdimensionnées :
|
||||||
|
|
||||||
|
Le RFID pour le suivi de stock est disproportionné — les codes-barres suffisent, voire une gestion manuelle simple. La maintenance prédictive avec capteurs IoT est coûteuse et complexe pour 3 machines. Le CRM avancé avec détection d'opportunités et pipeline commercial semble excessif. Le module Gestion des Talents (recrutement, formation, évaluation) pour 7 employés est superflu. La facturation récurrente type abonnement ne correspond pas au métier de packaging.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reformulation Structurée du Projet
|
||||||
|
|
||||||
|
Ce Que le Projet Doit Réellement Livrer
|
||||||
|
|
||||||
|
Titre : Conception et développement d'un ERP web pour une PME de plasturgie — Cas de SUARL Rayhan, Tataouine.
|
||||||
|
|
||||||
|
Livrable principal : Une application web ERP opérationnelle couvrant le cycle complet de l'activité, depuis la commande client jusqu'à la livraison et la facturation, intégrant la gestion de production, des stocks, des achats, de la paie et de la maintenance.
|
||||||
|
|
||||||
|
Ce qu'Ali doit produire dans son rapport de fin d'études :
|
||||||
|
|
||||||
|
Partie 1 — Étude préalable : Présentation de l'entreprise et de son environnement (plasturgie en Tunisie), analyse de l'existant (comment Rayhan fonctionne aujourd'hui), problématique et objectifs, étude comparative des solutions ERP existantes (Odoo, Dolibarr, ERPNext, développement sur mesure), justification du choix technique.
|
||||||
|
|
||||||
|
Partie 2 — Analyse et conception : Identification des acteurs et des processus métier réels de Rayhan, modélisation UML complète (cas d'utilisation, classes, séquences, activités), nomenclatures (BOM) réelles des 4 produits, gammes de fabrication des 3 machines, matrice des droits d'accès détaillée, modèle de données relationnel.
|
||||||
|
|
||||||
|
Partie 3 — Réalisation : Architecture technique retenue, choix du framework avec justification, développement des modules par priorité, captures d'écran et démonstration des fonctionnalités clés, tests et validation.
|
||||||
|
|
||||||
|
Partie 4 — Déploiement et perspectives : Plan de mise en production, formation des utilisateurs, améliorations futures.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Plan d'Action Immédiat pour Ali
|
||||||
|
|
||||||
|
Étape 1 — Retourner chez Rayhan et documenter les processus réels : observer une journée type, noter le flux commande → production → livraison, photographier les documents utilisés (bons papier, fichiers Excel).
|
||||||
|
|
||||||
|
Étape 2 — Construire les BOM réelles des 4 produits avec les quantités exactes de HDPE/LDPE par unité produite.
|
||||||
|
|
||||||
|
Étape 3 — Formaliser la gamme de fabrication : Extrusion (paramètres, durée) → Film semi-fini → Découpe/Soudure (paramètres, durée) → Produit fini → Contrôle qualité.
|
||||||
|
|
||||||
|
Étape 4 — Décider du choix technologique : je recommande fortement d'évaluer Odoo Community (Python, PostgreSQL, modules natifs couvrant 80% du besoin) plutôt qu'un développement from scratch — c'est réaliste pour un PFE et immédiatement exploitable par l'entreprise.
|
||||||
|
|
||||||
|
Étape 5 — Adapter toutes les références réglementaires au contexte tunisien (CNSS, TVA tunisienne, format de facturation légale tunisien).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Nabil, je suis prêt à accompagner Ali sur chaque étape. Par quoi veux-tu qu'on commence ? Je suggère de démarrer par la modélisation UML (cas d'utilisation + diagramme de classes) une fois qu'Ali aura collecté les données terrain, ou bien par le choix technologique si c'est plus urgent.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Compris — Développement Sur Mesure, Zéro Compromis
|
||||||
|
|
||||||
|
Point bien noté. Un PFE n'est pas un déploiement Odoo — Ali doit concevoir, modéliser, coder et livrer sa propre solution. C'est précisément là que réside la valeur académique : démontrer sa maîtrise de l'analyse, de la conception UML, de l'architecture logicielle, du développement full-stack et de l'adaptation au contexte métier réel. Une solution clé en main tuerait tout l'intérêt du travail.
|
||||||
|
|
||||||
|
Notre rôle est clair : on est son binôme invisible. Lui fait le travail, nous on garantit qu'il ne prend aucune mauvaise direction, qu'il ne perd pas de temps sur des impasses, et que chaque livrable est solide — techniquement et académiquement.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Stratégie Technique Recommandée pour le Développement
|
||||||
|
|
||||||
|
Stack que je recommande pour Ali, en tenant compte de ce qui est le plus enseigné en Tunisie et le plus valorisant pour un PFE :
|
||||||
|
|
||||||
|
Backend : Laravel (PHP 8+) — Framework le plus maîtrisé dans les cursus tunisiens, architecture MVC claire, Eloquent ORM puissant pour les relations complexes de l'ERP, système d'authentification et de rôles intégré (Spatie), migration de base de données versionnée.
|
||||||
|
|
||||||
|
Frontend : Blade + Livewire ou Vue.js — Blade pour le rendu serveur rapide, Livewire pour l'interactivité sans quitter Laravel, ou Vue.js si Ali veut démontrer une compétence SPA. Le choix dépend de son niveau.
|
||||||
|
|
||||||
|
Base de données : MySQL — Standard en Tunisie, parfaitement adapté au volume de Rayhan.
|
||||||
|
|
||||||
|
Reporting : DomPDF ou Snappy pour la génération des documents (factures, bulletins, bons).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Phasage du Projet — Ordre de Développement
|
||||||
|
|
||||||
|
Le piège classique d'un PFE ERP, c'est de vouloir tout faire en même temps. Voici l'ordre logique qui permet à chaque module de s'appuyer sur le précédent :
|
||||||
|
|
||||||
|
Phase 1 — Socle technique : Authentification, gestion des rôles (4 profils), tableau de bord, architecture de base (modèles, migrations, seeders). C'est la fondation sur laquelle tout repose.
|
||||||
|
|
||||||
|
Phase 2 — Référentiels : Gestion des articles (matières premières HDPE/LDPE, produits semi-finis films, produits finis 4 types de sacs), fournisseurs, clients. Sans ça, aucun module métier ne fonctionne.
|
||||||
|
|
||||||
|
Phase 3 — Stock : Mouvements d'entrée/sortie, valorisation CMUP, seuils d'alerte, inventaire. C'est le cœur qui alimente achats, ventes et production.
|
||||||
|
|
||||||
|
Phase 4 — Achats : Cycle DA → BC → BR → Facture fournisseur, rapprochement à 3 voies. Nabil, c'est ton domaine — tu pourras valider que le flux est réaliste.
|
||||||
|
|
||||||
|
Phase 5 — Production : Nomenclatures (BOM) des 4 produits, gammes de fabrication (Extrusion → Découpe/Soudure), ordres de fabrication, consommation matière, suivi d'avancement.
|
||||||
|
|
||||||
|
Phase 6 — Ventes & Facturation : Devis → Commande → BL → Facture client, calcul TVA tunisienne, numérotation légale, suivi des paiements.
|
||||||
|
|
||||||
|
Phase 7 — Paie & RH : Bulletins de salaire, calcul CNSS (régime tunisien, pas français), gestion des absences, dossier employé.
|
||||||
|
|
||||||
|
Phase 8 — Maintenance (GMAO) : Fiches équipement des 3 machines, planification préventive, historique des interventions.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Ce Dont J'ai Besoin pour Démarrer
|
||||||
|
|
||||||
|
Pour lancer concrètement le travail avec Ali, il me faut 3 choses :
|
||||||
|
|
||||||
|
1. Son niveau technique actuel — Quel framework maîtrise-t-il ? Laravel, Django, Spring Boot ? A-t-il déjà fait du développement web full-stack ?
|
||||||
|
|
||||||
|
2. Les données terrain de Rayhan — Les BOM réelles (combien de kg de HDPE pour produire 1000 sacs Bertel ?), le processus de fabrication étape par étape, les documents qu'ils utilisent actuellement (bons papier, Excel ?).
|
||||||
|
|
||||||
|
3. Le calendrier — Date de soutenance prévue ? Combien de mois devant lui ? Ça détermine si on couvre les 8 modules ou si on priorise les 5-6 essentiels.
|
||||||
|
|
||||||
|
Dès que tu me donnes ces éléments, je démarre avec lui sur la modélisation UML (diagramme de classes + cas d'utilisation) — c'est le premier livrable concret de son rapport.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Document de Collecte — Projet ERP SUARL Rayhan
|
||||||
|
|
||||||
|
Voici le document complet qu'Ali doit remplir. Il couvre tout ce dont on a besoin pour démarrer la conception. Dis-lui de l'imprimer et d'aller passer une journée complète chez Rayhan avec ce document en main.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION A — PROFIL TECHNIQUE D'ALI
|
||||||
|
|
||||||
|
A.1 Formation
|
||||||
|
Établissement : _______________________________________________
|
||||||
|
Spécialité : __________________________________________________
|
||||||
|
Niveau : ☐ Licence ☐ Ingénieur ☐ Mastère
|
||||||
|
Date de soutenance prévue : //________
|
||||||
|
|
||||||
|
A.2 Compétences techniques
|
||||||
|
Langages maîtrisés (noter le niveau de 1 à 5) :
|
||||||
|
PHP : __/5 | Python : __/5 | Java : __/5 | JavaScript : __/5 | Autre : ____________ __/5
|
||||||
|
|
||||||
|
Frameworks déjà utilisés en projet :
|
||||||
|
☐ Laravel ☐ Django ☐ Spring Boot ☐ Express.js ☐ Autre : ______________
|
||||||
|
|
||||||
|
Frontend :
|
||||||
|
☐ HTML/CSS pur ☐ Bootstrap ☐ Tailwind ☐ Vue.js ☐ React ☐ Livewire ☐ Autre : __________
|
||||||
|
|
||||||
|
Base de données :
|
||||||
|
☐ MySQL ☐ PostgreSQL ☐ SQLite ☐ MongoDB
|
||||||
|
Niveau SQL (1 à 5) : __/5 — Sait faire des jointures complexes ? ☐ Oui ☐ Non
|
||||||
|
|
||||||
|
Outils maîtrisés :
|
||||||
|
☐ Git/GitHub ☐ Docker ☐ Postman ☐ UML (StarUML, Lucidchart, draw.io) ☐ Merise
|
||||||
|
|
||||||
|
A.3 Projet le plus complexe déjà réalisé
|
||||||
|
Description courte : _______________________________________________
|
||||||
|
Technologies utilisées : ___________________________________________
|
||||||
|
Travail individuel ou en équipe ? ____________________________________
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION B — ANALYSE DE L'EXISTANT (À remplir chez Rayhan)
|
||||||
|
|
||||||
|
B.1 Fonctionnement actuel
|
||||||
|
Comment sont gérées les commandes clients aujourd'hui ?
|
||||||
|
☐ Cahier papier ☐ Fichier Excel ☐ Logiciel (lequel : __________) ☐ De mémoire/téléphone
|
||||||
|
|
||||||
|
Comment est suivi le stock ?
|
||||||
|
☐ Comptage manuel ☐ Fichier Excel ☐ Logiciel ☐ Pas de suivi formel
|
||||||
|
|
||||||
|
Comment sont émises les factures ?
|
||||||
|
☐ Facturier papier ☐ Excel ☐ Logiciel (lequel : __________) ☐ Comptable externe
|
||||||
|
|
||||||
|
Comment est gérée la paie ?
|
||||||
|
☐ Comptable externe ☐ Excel ☐ Logiciel ☐ Autre : ______________
|
||||||
|
|
||||||
|
Qui est le comptable/cabinet comptable ? _____________________________
|
||||||
|
Quel plan comptable est utilisé ? ☐ PCG Tunisien ☐ Ne sait pas
|
||||||
|
|
||||||
|
B.2 Volumétrie mensuelle moyenne
|
||||||
|
Nombre de clients actifs : ________
|
||||||
|
Nombre de commandes clients/mois : ________
|
||||||
|
Nombre de fournisseurs actifs : ________
|
||||||
|
Nombre de commandes fournisseurs/mois : ________
|
||||||
|
Nombre de factures émises/mois : ________
|
||||||
|
Nombre de factures fournisseurs reçues/mois : ________
|
||||||
|
Nombre d'ordres de fabrication/mois : ________
|
||||||
|
|
||||||
|
B.3 Documents existants à récupérer (demander des copies/photos)
|
||||||
|
☐ Exemple de bon de commande client reçu
|
||||||
|
☐ Exemple de bon de commande fournisseur émis
|
||||||
|
☐ Exemple de bon de livraison
|
||||||
|
☐ Exemple de facture émise
|
||||||
|
☐ Exemple de facture fournisseur reçue
|
||||||
|
☐ Exemple de bulletin de paie
|
||||||
|
☐ Liste des clients (même manuscrite)
|
||||||
|
☐ Liste des fournisseurs avec coordonnées
|
||||||
|
☐ Fichier Excel de stock (s'il existe)
|
||||||
|
☐ Tout autre document utilisé au quotidien
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION C — DONNÉES TECHNIQUES DE PRODUCTION
|
||||||
|
|
||||||
|
C.1 Nomenclatures (BOM) — Une fiche par produit fini
|
||||||
|
|
||||||
|
Produit fini 1 : Sac Bertel
|
||||||
|
Dimensions standard : ________ x ________ cm | Épaisseur : ________ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 000 unités : ________ kg
|
||||||
|
Produit semi-fini intermédiaire (film/gaine) : ☐ Oui ☐ Non
|
||||||
|
Si oui, dimensions du film : ________ | Poids/mètre linéaire : ________
|
||||||
|
Colorant/additif ajouté : ☐ Oui (lequel : __________, quantité : ________) ☐ Non
|
||||||
|
Prix de vente unitaire (ou au kg) : _________ DT
|
||||||
|
|
||||||
|
Produit fini 2 : Sac Poubelle
|
||||||
|
Dimensions standard : ________ x ________ cm | Épaisseur : ________ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 000 unités : ________ kg
|
||||||
|
Produit semi-fini intermédiaire : ☐ Oui ☐ Non
|
||||||
|
Colorant/additif : ☐ Oui (__________, ________) ☐ Non
|
||||||
|
Prix de vente : _________ DT
|
||||||
|
|
||||||
|
Produit fini 3 : Sac Alimentaire
|
||||||
|
Dimensions standard : ________ x ________ cm | Épaisseur : ________ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 000 unités : ________ kg
|
||||||
|
Produit semi-fini intermédiaire : ☐ Oui ☐ Non
|
||||||
|
Colorant/additif : ☐ Oui (__________, ________) ☐ Non
|
||||||
|
Prix de vente : _________ DT
|
||||||
|
|
||||||
|
Produit fini 4 : Film Rétractable
|
||||||
|
Dimensions standard : largeur ________ cm | Épaisseur : ________ microns
|
||||||
|
Matière première utilisée : ☐ HDPE ☐ LDPE ☐ Mix
|
||||||
|
Quantité de MP pour 1 rouleau/unité : ________ kg
|
||||||
|
Prix de vente : _________ DT
|
||||||
|
|
||||||
|
C.2 Gamme de fabrication — Processus étape par étape
|
||||||
|
|
||||||
|
Étape 1 — Extrusion (Machine Extrudeuse)
|
||||||
|
Input : ☐ Granulés HDPE ☐ Granulés LDPE ☐ Mélange (ratio : /)
|
||||||
|
Output : ☐ Film tubulaire ☐ Gaine ☐ Autre : __________
|
||||||
|
Température de chauffe : ________ °C
|
||||||
|
Vitesse de ligne : ________ m/min (ou estimation)
|
||||||
|
Durée moyenne pour produire ________ kg de film : ________ heures
|
||||||
|
Nombre d'opérateurs sur ce poste : ________
|
||||||
|
Déchets/chutes générés (%) : ________ %
|
||||||
|
|
||||||
|
Étape 2 — Découpe et Soudure (Machine Découpe/Soudure)
|
||||||
|
Input : Film/gaine issu de l'extrusion
|
||||||
|
Output : Sacs finis (soudés et découpés)
|
||||||
|
Cadence : ________ sacs/heure (estimation)
|
||||||
|
Nombre d'opérateurs : ________
|
||||||
|
Déchets/chutes (%) : ________ %
|
||||||
|
|
||||||
|
Étape 3 — Densificateur
|
||||||
|
Rôle exact : ☐ Recyclage des chutes/déchets ☐ Autre : __________
|
||||||
|
Input : Chutes de film, sacs défectueux
|
||||||
|
Output : ☐ Granulés recyclés réutilisables ☐ Autre : __________
|
||||||
|
Fréquence d'utilisation : ☐ En continu ☐ ____ fois/semaine
|
||||||
|
Les granulés recyclés sont-ils réinjectés dans la production ? ☐ Oui (quel %) ☐ Non (vendus ?)
|
||||||
|
|
||||||
|
C.3 Fiche Machines
|
||||||
|
|
||||||
|
Information
|
||||||
|
|
||||||
|
Extrudeuse
|
||||||
|
|
||||||
|
Découpe/Soudure
|
||||||
|
|
||||||
|
Densificateur
|
||||||
|
|
||||||
|
Marque/Modèle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Année d'acquisition
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Puissance (kW)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Heures de fonctionnement/jour
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Jours de fonctionnement/semaine
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dernière panne majeure (date + nature)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Fréquence maintenance préventive
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Pièces d'usure à changer régulièrement
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION D — RESSOURCES HUMAINES
|
||||||
|
|
||||||
|
D.1 Liste des employés
|
||||||
|
|
||||||
|
N°
|
||||||
|
|
||||||
|
Nom & Prénom
|
||||||
|
|
||||||
|
Poste
|
||||||
|
|
||||||
|
Date embauche
|
||||||
|
|
||||||
|
Salaire brut (DT)
|
||||||
|
|
||||||
|
CNSS ☐ Oui/Non
|
||||||
|
|
||||||
|
Horaires
|
||||||
|
|
||||||
|
1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
7
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
D.2 Régime social
|
||||||
|
Taux CNSS patronal appliqué : ________ %
|
||||||
|
Taux CNSS salarial appliqué : ________ %
|
||||||
|
Convention collective applicable : ☐ Plasturgie ☐ Autre : __________ ☐ Aucune
|
||||||
|
Nombre de jours de congé/an : ________
|
||||||
|
Prime(s) versée(s) régulièrement : __________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION E — FISCALITÉ ET FACTURATION
|
||||||
|
|
||||||
|
Régime TVA : ☐ 7% ☐ 13% ☐ 19% ☐ Exonéré ☐ Multiple (détailler : __________)
|
||||||
|
Timbre fiscal sur factures : ☐ Oui (montant : ________) ☐ Non
|
||||||
|
Retenue à la source applicable : ☐ Oui (taux : ________%) ☐ Non
|
||||||
|
Droit de timbre : ________
|
||||||
|
Numérotation des factures actuelle : séquentielle ? Format ? __________________
|
||||||
|
Logiciel de comptabilité du cabinet comptable : __________________________
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION F — INFRASTRUCTURE IT CHEZ RAYHAN
|
||||||
|
|
||||||
|
Nombre de PC disponibles : ________
|
||||||
|
Réseau local existant : ☐ Oui (WiFi / Câblé) ☐ Non
|
||||||
|
Connexion Internet : ☐ Oui (débit : ________) ☐ Non
|
||||||
|
Serveur disponible : ☐ Oui (specs : __________) ☐ Non — hébergement sur PC ?
|
||||||
|
Imprimante : ☐ Oui (modèle : __________) ☐ Non
|
||||||
|
Les employés savent utiliser un ordinateur : ☐ Tous ☐ Certains (lesquels : __________) ☐ Non
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SECTION G — PRIORITÉS DU GÉRANT (M. Fekih Ahmed)
|
||||||
|
|
||||||
|
Demander directement au gérant : "Quel est votre plus gros problème de gestion aujourd'hui ?"
|
||||||
|
|
||||||
|
Réponse : _________________________________________________________________
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Classer par priorité (1 = le plus urgent) :
|
||||||
|
__ Savoir exactement ce qu'il y a en stock en temps réel
|
||||||
|
__ Suivre les commandes clients et ne rien oublier
|
||||||
|
__ Facturer plus vite et suivre les impayés
|
||||||
|
__ Connaître le coût réel de production de chaque produit
|
||||||
|
__ Gérer la paie sans erreurs
|
||||||
|
__ Planifier la maintenance des machines
|
||||||
|
__ Avoir des tableaux de bord de performance
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dis à Ali de prendre aussi des photos de l'atelier, des machines (plaques signalétiques), des documents papier utilisés et de l'espace de travail administratif. Ça alimentera la partie "étude de l'existant" de son rapport et ça nous permettra de dimensionner correctement l'interface.
|
||||||
|
|
||||||
|
Dès qu'il revient avec ce document rempli, on attaque la modélisation UML.
|
||||||
|
|
@ -40,7 +40,7 @@ services:
|
||||||
RAYHAN_ERP_JWTSECRET: RayhanERP_SecretKey_PFE_AliGuennari_2024_TunisiePlasturgie_SUARL
|
RAYHAN_ERP_JWTSECRET: RayhanERP_SecretKey_PFE_AliGuennari_2024_TunisiePlasturgie_SUARL
|
||||||
RAYHAN_ERP_JWTEXPIRATIONMS: 86400000
|
RAYHAN_ERP_JWTEXPIRATIONMS: 86400000
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8090:8080"
|
||||||
networks:
|
networks:
|
||||||
- rayhan-net
|
- rayhan-net
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue