netgescon-master/netgescon-laravel/app/Models/PianoContiMasterplan.php
Michele Windows e68ee85a18 🚀 CHECKPOINT STABILE - Sistema Contabile Avanzato
📋 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
2025-07-26 15:11:19 +02:00

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();
}
}