3.1 KiB
3.1 KiB
💵 CONCEPT: BUDGET
📌 Vue d'ensemble
Le concept BUDGET gère les budgets prévisionnels et réels des chantiers avec suivi des dépenses et écarts.
Importance: ⭐⭐⭐ (Concept important)
🗂️ Fichiers concernés
Entités JPA
| Fichier | Description |
|---|---|
Budget.java |
Entité principale budget |
Services
| Fichier | Description |
|---|---|
BudgetService.java |
Service métier budget |
Resources
| Fichier | Description |
|---|---|
BudgetResource.java |
API REST budget |
📊 Modèle de données
@Entity
@Table(name = "budgets")
public class Budget extends PanacheEntityBase {
@Id
@GeneratedValue(strategy = GenerationType.UUID)
private UUID id;
@OneToOne
@JoinColumn(name = "chantier_id", nullable = false)
private Chantier chantier;
@Column(name = "montant_prevu", precision = 12, scale = 2)
private BigDecimal montantPrevu;
@Column(name = "montant_depense", precision = 12, scale = 2)
private BigDecimal montantDepense = BigDecimal.ZERO;
@Column(name = "montant_restant", precision = 12, scale = 2)
private BigDecimal montantRestant;
@Column(name = "pourcentage_utilise", precision = 5, scale = 2)
private BigDecimal pourcentageUtilise = BigDecimal.ZERO;
}
🔌 API REST
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/v1/budgets |
Liste budgets |
| GET | /api/v1/budgets/{id} |
Détails |
| GET | /api/v1/budgets/chantier/{id} |
Budget d'un chantier |
| POST | /api/v1/budgets |
Créer |
| PUT | /api/v1/budgets/{id} |
Modifier |
| POST | /api/v1/budgets/{id}/depense |
Enregistrer dépense |
| GET | /api/v1/budgets/{id}/ecarts |
Analyse écarts |
💻 Exemples
Créer un budget
curl -X POST http://localhost:8080/api/v1/budgets \
-H "Content-Type: application/json" \
-d '{
"chantierId": "chantier-uuid",
"montantPrevu": 250000.00
}'
Enregistrer une dépense
curl -X POST http://localhost:8080/api/v1/budgets/{id}/depense \
-H "Content-Type: application/json" \
-d '{
"montant": 5000.00,
"categorie": "MATERIAUX",
"description": "Achat ciment et sable"
}'
Analyse des écarts
curl -X GET http://localhost:8080/api/v1/budgets/{id}/ecarts
Réponse:
{
"montantPrevu": 250000.00,
"montantDepense": 180000.00,
"montantRestant": 70000.00,
"pourcentageUtilise": 72.00,
"ecart": -70000.00,
"statut": "DANS_BUDGET",
"alertes": []
}
🔧 Services métier
BudgetService - Méthodes:
create(BudgetDTO)- CréerenregistrerDepense(UUID id, BigDecimal montant)- DépensecalculerEcarts(UUID id)- Calculer écartsgetStatutBudget(UUID id)- Statut
📈 Relations
- CHANTIER ⬅️ Un budget est lié à un chantier (OneToOne)
- DEVIS ⬅️ Le budget initial vient du devis
- FACTURE ➡️ Les factures impactent le budget
Dernière mise à jour: 2025-09-30
Version: 1.0