'decimal:4', 'partecipa' => 'boolean' ]; /** * Relazione con TabellaMillesimale */ public function tabellaMillesimale() { return $this->belongsTo(TabellaMillesimale::class, 'tabella_millesimale_id', 'id'); } /** * Relazione con UnitaImmobiliare */ public function unitaImmobiliare() { return $this->belongsTo(UnitaImmobiliare::class, 'unita_immobiliare_id', 'id'); } /** * Relazione con User creatore */ public function createdBy() { return $this->belongsTo(User::class, 'created_by', 'id'); } /** * Scope per unità che partecipano */ public function scopePartecipanti($query) { return $query->where('partecipa', true); } /** * Calcola percentuale su totale tabella */ public function getPercentualeAttribute(): float { if (!$this->tabellaMillesimale || $this->tabellaMillesimale->totale_millesimi == 0) { return 0; } return ($this->millesimi / $this->tabellaMillesimale->totale_millesimi) * 100; } }