where('budget_id', $this->id)->where('status', 'approved')->sum('amount_minor'); return BigDecimal::of((string) $sum)->plus($this->amount_minor)->toInt(); } protected static function booted(): void { static::updating(function (Budget $budget) { if ($budget->getRawOriginal('approved_by') !== null) { throw new \LogicException('Uma dotação aprovada não pode ser reescrita.'); } }); static::deleting(function (Budget $budget) { if ($budget->approved_by !== null) { throw new \LogicException('Preservar a dotação aprovada e os seus movimentos.'); } }); } protected function casts(): array { return ['includes_tax' => 'boolean']; } }