netgescon-day0/app/Models/RipartizioneSpesa.php

86 lines
1.8 KiB
PHP
Executable File

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class RipartizioneSpesa extends Model
{
use HasFactory;
protected $table = 'ripartizioni_spese';
protected $fillable = [
'unita_immobiliare_id',
'voce_spesa_id',
'gestione_id',
'importo_spettante',
'millesimi_applicati',
'tipo_calcolo',
'anno_competenza'
];
protected $casts = [
'importo_spettante' => 'decimal:2',
'millesimi_applicati' => 'decimal:3'
];
/**
* Relazione con unità immobiliare
*/
public function unitaImmobiliare(): BelongsTo
{
return $this->belongsTo(UnitaImmobiliare::class, 'unita_immobiliare_id');
}
/**
* Relazione con voce di spesa
*/
public function voceSpesa(): BelongsTo
{
return $this->belongsTo(VoceSpesaMillesimale::class, 'voce_spesa_id');
}
/**
* Relazione con gestione
*/
public function gestione(): BelongsTo
{
return $this->belongsTo(GestioneCondominiale::class, 'gestione_id');
}
/**
* Scope per unità
*/
public function scopeByUnita($query, $unitaId)
{
return $query->where('unita_immobiliare_id', $unitaId);
}
/**
* Scope per anno
*/
public function scopeByAnno($query, $anno)
{
return $query->where('anno_competenza', $anno);
}
/**
* Scope per gestione
*/
public function scopeByGestione($query, $gestioneId)
{
return $query->where('gestione_id', $gestioneId);
}
/**
* Scope per tipo calcolo
*/
public function scopeByTipoCalcolo($query, $tipo)
{
return $query->where('tipo_calcolo', $tipo);
}
}