netgescon-day0/skill-netgescon/control-tower/CURRENT-205.md

73 lines
5.3 KiB
Markdown

# 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: 89d18df
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".