belongsTo(Service::class); } public function commune(): BelongsTo { return $this->belongsTo(Commune::class); } public function lignes(): HasMany { return $this->hasMany(LigneBudget::class); } /** * Calcul du total proposé selon le type de dépense (optionnel: 'investissement' ou 'fonctionnement'). */ public function totalPropose(?string $typeDepense = null): float { $query = $this->lignes(); if ($typeDepense) { $query->where('type_depense', $typeDepense); } return $query->sum('montant_propose') ?? 0; } /** * Calcul du total arbitré (validé) selon le type de dépense. */ public function totalArbitre(?string $typeDepense = null): float { $query = $this->lignes(); if ($typeDepense) { $query->where('type_depense', $typeDepense); } return $query->sum('montant_arbitre') ?? 0; } }