'decimal:3', 'consumo_individuale' => 'decimal:2' ]; /** * Relazione con unità immobiliare */ public function unitaImmobiliare(): BelongsTo { return $this->belongsTo(UnitaImmobiliare::class, 'unita_immobiliare_id'); } /** * Relazione con tabella millesimale */ public function tabellaMillesimale(): BelongsTo { return $this->belongsTo(TabellaMillesimaleConti::class, 'tabella_millesimale_id'); } /** * Millesimi formattati */ public function getMillesimiFormattedAttribute(): string { return number_format($this->millesimi, 3, ',', '.'); } /** * Calcola quota spettante da un importo */ public function calcolaQuotaSpettante(float $importoTotale): float { if (!$this->tabellaMillesimale->hasMillesimi()) { return 0; } return ($importoTotale * $this->millesimi) / $this->tabellaMillesimale->totale_millesimi; } /** * Scope per unità immobiliare */ public function scopeByUnita($query, $unitaId) { return $query->where('unita_immobiliare_id', $unitaId); } /** * Scope per tabella */ public function scopeByTabella($query, $tabellaId) { return $query->where('tabella_millesimale_id', $tabellaId); } }