# 🎯 PIANO DEI CONTI - SISTEMA TIPOLOGIE ## Prevenzione collisioni codici in contabilità unificata ### 📅 Versione: 1.0 - 4 Agosto 2025 ### 🎯 Obiettivo: Differenziare voci spese/entrate/unità --- ## 🚨 PROBLEMA IDENTIFICATO ### ❌ **Rischio Collisioni Codici**: ``` CASO PROBLEMATICO: - Voce Spesa: Stabile 1, Tabella A, Voce 1 → Codice: 1.A.01 - Unità Immobiliare: Stabile 1, Scala A, Interno 1 → Codice: 1.A.01 RISULTATO: CODICI IDENTICI PER ENTITÀ DIVERSE! ``` --- ## ✅ SOLUZIONE: CAMPO TIPOLOGIA ### 🎯 **Tipologie Disponibili**: | Codice | Denominazione | Utilizzo | Esempio | |--------|---------------|----------|---------| | **SPE** | Spese | Voci di spesa generali | SPE.1.A.01 - Pulizie | | **ENT** | Entrate | Ricavi e incassi | ENT.1.B.02 - Quote condominiali | | **CRE** | Crediti | Somme da incassare | CRE.1.C.03 - Crediti vs condomini | | **DEB** | Debiti | Somme da pagare | DEB.1.D.04 - Debiti vs fornitori | | **USC** | Uscite | Pagamenti effettuati | USC.1.E.05 - Pagamento fatture | | **UNI** | Unità | Unità immobiliari | UNI.1.A.01 - Appartamento Scala A | ### 📊 **Struttura Piano Conti Unificata**: ```sql -- Tabella: piano_conti CREATE TABLE piano_conti ( id INT PRIMARY KEY, stabile_id INT, tipologia VARCHAR(3) DEFAULT 'SPE', -- NUOVO CAMPO mastro VARCHAR(10), conto VARCHAR(10), sottoconto VARCHAR(10), denominazione VARCHAR(255), -- Indice unico composto UNIQUE KEY idx_piano_conti_unique (stabile_id, tipologia, mastro, conto, sottoconto) ); ``` ### 🔗 **Codici Risultanti**: ``` PRIMA (Problematico): - 1.A.01 (Pulizie) - 1.A.01 (Appartamento) ❌ COLLISIONE! DOPO (Risolto): - SPE.1.A.01 (Pulizie) - UNI.1.A.01 (Appartamento) ✅ DISTINTI! ``` --- ## 🎯 IMPLEMENTAZIONE ### 📝 **Migration Campo Tipologia**: ```php // 2025_08_04_170024_add_tipologia_to_piano_conti_table.php public function up(): void { Schema::table('piano_conti', function (Blueprint $table) { $table->string('tipologia', 3)->after('sottoconto')->default('SPE'); $table->index(['stabile_id', 'tipologia', 'mastro', 'conto', 'sottoconto'], 'idx_piano_conti_unique'); }); } ``` ### 🔄 **Migration Aggiornamento Dati**: ```php // 2025_08_04_170158_update_piano_conti_tipologie_data.php public function up(): void { DB::update(" UPDATE piano_conti SET tipologia = CASE WHEN denominazione LIKE '%spesa%' OR denominazione LIKE '%costo%' THEN 'SPE' WHEN denominazione LIKE '%entrata%' OR denominazione LIKE '%ricavo%' THEN 'ENT' WHEN denominazione LIKE '%credito%' OR denominazione LIKE '%anticipo%' THEN 'CRE' WHEN denominazione LIKE '%debito%' OR denominazione LIKE '%dovuto%' THEN 'DEB' WHEN denominazione LIKE '%uscita%' OR denominazione LIKE '%pagamento%' THEN 'USC' WHEN denominazione LIKE '%unità%' OR denominazione LIKE '%appartamento%' THEN 'UNI' ELSE 'SPE' END "); } ``` --- ## 🎯 UTILIZZO PRATICO ### 💡 **Esempi Codici Finali**: #### 🏢 **Spese Condominiali**: ``` SPE.1.A.01 - Pulizie scale SPE.1.A.02 - Illuminazione SPE.1.B.01 - Manutenzione ascensore SPE.1.B.02 - Gestione amministrativa SPE.1.C.01 - Assicurazione fabbricato ``` #### 💰 **Entrate**: ``` ENT.1.A.01 - Quote ordinarie ENT.1.A.02 - Quote straordinarie ENT.1.B.01 - Rimborsi assicurazione ENT.1.C.01 - Interessi attivi ``` #### 🏠 **Unità Immobiliari**: ``` UNI.1.A.01 - Appartamento Scala A Int. 1 UNI.1.A.02 - Appartamento Scala A Int. 2 UNI.1.B.01 - Appartamento Scala B Int. 1 UNI.1.C.01 - Box auto n. 1 ``` #### 💳 **Crediti/Debiti**: ``` CRE.1.A.01 - Credito vs condomino Rossi CRE.1.A.02 - Anticipo da amministratore DEB.1.B.01 - Debito vs Enel DEB.1.B.02 - Debito vs ditta pulizie ``` --- ## 🔧 AGGIORNAMENTO MODELLI ### 📝 **Model PianoDeiConti**: ```php // app/Models/PianoDeiConti.php class PianoDeiConti extends Model { protected $table = 'piano_conti'; protected $fillable = [ 'stabile_id', 'tipologia', 'mastro', 'conto', 'sottoconto', 'denominazione' ]; // Costanti tipologie const TIPOLOGIE = [ 'SPE' => 'Spese', 'ENT' => 'Entrate', 'CRE' => 'Crediti', 'DEB' => 'Debiti', 'USC' => 'Uscite', 'UNI' => 'Unità' ]; // Accessor per codice completo public function getCodiceCompletoAttribute() { return "{$this->tipologia}.{$this->mastro}.{$this->conto}.{$this->sottoconto}"; } // Scope per tipologia public function scopeSpese($query) { return $query->where('tipologia', 'SPE'); } public function scopeEntrate($query) { return $query->where('tipologia', 'ENT'); } public function scopeUnita($query) { return $query->where('tipologia', 'UNI'); } } ``` --- ## 🎯 INTERFACCIA UTENTE ### 📊 **Select Tipologia nei Form**: ```blade
``` ### 🎨 **Badge Colorati per Tipologie**: ```blade @switch($pianoConto->tipologia) @case('SPE') {{ $pianoConto->tipologia }} - Spese @break @case('ENT') {{ $pianoConto->tipologia }} - Entrate @break @case('CRE') {{ $pianoConto->tipologia }} - Crediti @break @case('DEB') {{ $pianoConto->tipologia }} - Debiti @break @case('USC') {{ $pianoConto->tipologia }} - Uscite @break @case('UNI') {{ $pianoConto->tipologia }} - Unità @break @endswitch ``` --- ## 📊 VANTAGGI SISTEMA ### ✅ **Benefici Immediati**: 1. **Zero Collisioni** - Codici sempre univoci 2. **Chiarezza Immediata** - Tipologia visibile nel codice 3. **Filtraggio Facile** - Raggruppamento per tipologia 4. **Bilanci Separati** - Spese/Entrate/Crediti distinti 5. **Scalabilità** - Facile aggiungere nuove tipologie ### 📈 **Reportistica Migliorata**: ```sql -- Bilancio per tipologia SELECT tipologia, COUNT(*) as voci_count, SUM(importo) as totale_importo FROM piano_conti pc JOIN movimenti m ON pc.id = m.piano_conti_id WHERE pc.stabile_id = 1 GROUP BY tipologia ORDER BY tipologia; -- Risultato: -- CRE | 15 | 12.500,00 -- DEB | 8 | -8.300,00 -- ENT | 25 | 45.000,00 -- SPE | 42 | -38.200,00 -- UNI | 50 | 0,00 -- USC | 18 | -15.600,00 ``` --- ## 🚀 PROSSIMI PASSI ### 1. **Eseguire Migration**: ```bash cd /var/www/netgescon php artisan migrate ``` ### 2. **Aggiornare Controller**: - Aggiungere validation per tipologia - Implementare filtri per tipologia - Aggiornare form di inserimento ### 3. **Aggiornare Interfacce**: - Form piano dei conti con select tipologia - Liste con badge colorati - Filtri per tipologia ### 4. **Testing**: - Verificare unicità codici - Test inserimento/modifica - Validazione reportistica --- **🎯 SISTEMA TIPOLOGIE ATTIVO** **Previene collisioni e migliora organizzazione contabile**