# CURRENT-205 TASK_ID: task-estratto-conto-atomico-mdb-unita MACHINE: .205 STATO: completato ## Obiettivo Completato 1. **Estratto Conto Atomico e Temporale Unità Immobiliare (`/admin-filament/unita-immobiliare`)**: - **Servizio Dedicato `GesconEstrattoContoService`**: - Creato `app/Services/Gescon/GesconEstrattoContoService.php`. - Legge direttamente dagli archivi montati in `/mnt/gescon-archives/gescon/{codice_stabile}/`: - `generale_stabile.mdb`: legge `anni` e `emes_det` (piano rate e conguagli storici e attivi). - `{nome_dir}/singolo_anno.mdb`: legge `condomin`, `straordinarie` (delibere/spese) e `incassi`. - Ripartisce atomicamente e cronologicamente i dati contabili: - **Gestione Ordinaria Corrente (Es. 2026)**: rate emesse, conguaglio es. precedente e saldo/compensazione a zero. - **Gestioni Straordinarie Separate**: ciascuna spesa ha la sua scheda isolata con piano rate, pagamenti e residuo esigibile (Passerella e Tetto 1/2026 con 4 rate di cui 1 pagata da 482,80 €, 2 emesse da pagare e 1 da emettere; Cornicione 2/2026 con rata 1 pagata 209,51 €, rata 2 residuo 92,85 €, rata 3 da 209,51 €; Citofono 3/2022 con rata unica rif. 401; Cortile 2/2024 saldata). - **Riepilogo Gestioni Ordinarie Pregresse**: tabella storica dei consuntivi definitivi chiusi (2017-2025) a saldo zero. - **Riscaldamento**: escluso (non presente nell'ente). - Supporta pienamente il ruolo contabile `cond_inquil` con toggle tra **Condòmino (C)** (Spadavecchia Aldo) e **Inquilino (I)** (Kiwa Cermet SpA, residuo 731,30 €). - Riscontro matematico esatto al centesimo sul benchmark fornito per l'interno A-1: Passerella Rata 2 (482,80 €) + Passerella Rata 3 (482,80 €) + Cornicione Rata 2 residuo (92,85 €) + Cornicione Rata 3 (209,51 €) = **€ 1.267,96**. 2. **Risoluzione Duplicazione e Riprogettazione Blade (`unita-immobiliare.blade.php`)**: - **Eliminazione Blocco Duplicato**: rimosso il secondo blocco `@if($tab === 'estratto_conto')` (ex righe 1577-1846) che appiattiva e mescolava tutte le date e gli anni tramite un ordinamento generico `usort`. - **Nuova Interfaccia Atomica**: - Testata scura con badge fonte (`⚡ Archivio MDB Live` / `🗄️ Database Consolidato`), dati anagrafici e locatario. - Switcher istantaneo tra `🏢 Condòmino (C)` e `👤 Inquilino (I)`. - Pulsante `Ricarica MDB` collegato al Livewire action `refreshEstrattoContoMdb` per invalidare la cache (300s) e rileggere a caldo i dati dai file MDB. - 4 KPI cards: Totale da Pagare (**€ 1.267,96**), Straordinarie Attive (**€ 1.267,96**), Ordinaria 2026 (**€ 0,00**), Ordinarie Pregresse (**€ 0,00**). - Sezione Ordinaria Corrente tabellare dettagliata. - Sezione Gestioni Straordinarie a schede atomiche indipendenti con badge di avanzamento rata (`Saldata`, `Parziale`, `Da Pagare`, `Da Emettere`). - Sezione Riepilogo Storico Consuntivi Chiusi con spunta di chiusura definitiva. 3. **Integrazione Controller Livewire (`UnitaImmobiliarePage.php`)**: - Aggiunta proprietà computata `getEstrattoContoAtomicoProperty` che interpola il service e l'unità selezionata. - Aggiunta azione `refreshEstrattoContoMdb()` con notifica Filament a schermo. ## Output del Giro Operativo ESITO_205: riuscito TASK_ID: task-estratto-conto-atomico-mdb-unita REPOSITORY: ssh://git@git.netgescon.it:2222/michele/netgescon-day0.git BRANCH: stabilization/205-zero COMMIT: DA_EFFETTUARE FILE_O_AREE_TOCCATE: - app/Filament/Pages/UnitaImmobiliarePage.php - app/Services/Gescon/GesconEstrattoContoService.php - resources/views/filament/pages/unita-immobiliare.blade.php - skill-netgescon/control-tower/CURRENT-205.md - tests/Feature/UnitaEstrattoContoAtomicoTest.php TEST_ESEGUITI: - ./vendor/bin/pest tests/Feature/UnitaEstrattoContoAtomicoTest.php (2 passed, 32 assertions) - ./vendor/bin/pest tests/Feature/UnitaCondominoInquilinoRoleToggleTest.php tests/Feature/UnitaGestioneTemporaleTest.php tests/Feature/UnitaImmobiliarePageTest.php tests/Feature/UnitaEstrattoContoAtomicoTest.php (12 passed, 103 assertions, 100% pass) - php artisan view:clear && php artisan view:cache (successo, zero errori di compilazione Blade) GATE_STATISTICS: - BLADE_COMPILATION: 100% pulita senza token inattesi. - BENCHMARK_VERIFICATION: Totale dovuto € 1.267,96 esatto al centesimo (Passerella 482,80 + 482,80 + Cornicione 92,85 + 209,51). - TEST_SUITE: 12 test Feature passati (103 asserzioni, 100% pass). BLOCCO_DATI: no BLOCCO_CONTRATTO: no RISCHI_APERTI: nessuno ## Prossimo Passo per .200 (Validazione) - Eseguire il checkout del branch `stabilization/205-zero`. - Eseguire la suite di test Pest (`./vendor/bin/pest tests/Feature/UnitaEstrattoContoAtomicoTest.php`). - Verificare su http://192.168.0.205:8000/admin-filament/unita-immobiliare (selezionando lo stabile 0013, unità A-1) il tab "🧾 Estratto Conto & Pagamenti": - Verificare che il Totale Dovuto sia esattamente **€ 1.267,96**. - Verificare la corretta ripartizione tra Gestione Ordinaria 2026 (residuo € 0,00) e Gestioni Straordinarie (Passerella con 1 pagata e rate a 482,80 €, Cornicione con residuo 92,85 € e 209,51 €, Citofono 2022 con rif 401). - Verificare che non siano presenti voci di riscaldamento. - Testare il toggle "🏢 Condòmino (C)" / "👤 Inquilino (I)" e il pulsante "Ricarica MDB".