📋 AGGIUNTE PRINCIPALI: - Sistema contabile partita doppia con gestioni multiple - Documentazione implementazione completa - Models Laravel: GestioneContabile, MovimentoPartitaDoppia - Controller ContabilitaAvanzataController - Migration sistema contabile completo - Scripts automazione e trasferimento - Manuali utente e checklist implementazione 📊 FILES PRINCIPALI: - docs/10-IMPLEMENTAZIONE-CONTABILITA-PARTITA-DOPPIA-GESTIONI.md - SPECIFICHE-SISTEMA-CONTABILE-COMPLETO.md - netgescon-laravel/database/migrations/2025_07_20_100000_create_complete_accounting_system.php - netgescon-laravel/app/Models/GestioneContabile.php ✅ CHECKPOINT SICURO PER ROLLBACK
89 lines
2.0 KiB
PHP
89 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
|
|
|
/**
|
|
* Piano dei Conti Masterplan
|
|
* Definisce la struttura standard dei conti contabili
|
|
*/
|
|
class PianoContiMasterplan extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
protected $table = 'piano_conti_masterplan';
|
|
|
|
protected $fillable = [
|
|
'codice_conto',
|
|
'descrizione_conto',
|
|
'tipologia_conto',
|
|
'categoria_contabile',
|
|
'ripartibile',
|
|
'default_ripartizioni',
|
|
'attivo',
|
|
];
|
|
|
|
protected $casts = [
|
|
'ripartibile' => 'boolean',
|
|
'attivo' => 'boolean',
|
|
'default_ripartizioni' => 'json',
|
|
];
|
|
|
|
/**
|
|
* Relazioni
|
|
*/
|
|
public function righeContabili(): HasMany
|
|
{
|
|
return $this->hasMany(RigaContabile::class, 'codice_conto', 'codice_conto');
|
|
}
|
|
|
|
/**
|
|
* Scopes
|
|
*/
|
|
public function scopeAttivi($query)
|
|
{
|
|
return $query->where('attivo', true);
|
|
}
|
|
|
|
public function scopeByTipologia($query, $tipologia)
|
|
{
|
|
return $query->where('tipologia_conto', $tipologia);
|
|
}
|
|
|
|
public function scopeByCategoria($query, $categoria)
|
|
{
|
|
return $query->where('categoria_contabile', $categoria);
|
|
}
|
|
|
|
public function scopeRipartibili($query)
|
|
{
|
|
return $query->where('ripartibile', true);
|
|
}
|
|
|
|
/**
|
|
* Metodi helper
|
|
*/
|
|
public static function getContiByCategoria($categoria)
|
|
{
|
|
return static::attivi()->byCategoria($categoria)->get();
|
|
}
|
|
|
|
public static function getContiCosti()
|
|
{
|
|
return static::attivi()->byTipologia('costo')->get();
|
|
}
|
|
|
|
public static function getContiRicavi()
|
|
{
|
|
return static::attivi()->byTipologia('ricavo')->get();
|
|
}
|
|
|
|
public static function getContiPatrimoniali()
|
|
{
|
|
return static::attivi()->whereIn('tipologia_conto', ['attivo', 'passivo', 'patrimoniale'])->get();
|
|
}
|
|
}
|