8.5 KiB
Executable File
📘 CAPITOLO 8.1 — SCHEDE ANAGRAFICA UNICA & CONDOMINI
Versione: 0.1 • Data: 27 Novembre 2025 • Autore: Copilot NetGescon
Obiettivo: tradurre le maschere legacy (Gesnom / gestionale contabile) in un'interfaccia web moderna e responsive capace di governare l'anagrafica unica NetGescon, collegando clienti, fornitori, condòmini, occupanti e unità immobiliari.
1. Visione UX e principi guida
- Context-aware: ogni scheda mostra sempre il contesto (Condominio ⇄ Soggetto ⇄ Unità) nella barra superiore con breadcrumb e quick switch.
- Dual-pane layout: elenco compatto a sinistra (ricerche, segmenti, preferiti), dettagli a destra con tab/pillole per gruppi dati (generalità, indirizzi, relazioni, CRM, documenti).
- Action rail verticale: replica l'idea dei pulsanti rapidi legacy (CRM, contatti, banche, ecc.) ma con icone + tooltip e possibilità di pinnare le azioni usate spesso.
- Atomic data: una sola anagrafica alimenta clienti, fornitori, condòmini, tecnici, gestori. Ogni tab lavora su viste/ruoli senza duplicare dati.
- Smart assist: badge di completezza, avvisi (es. CF mancante, IBAN scaduto, documento identità in scadenza) e suggerimenti per import pipeline.
2. Struttura schermata
| Sezione | Componenti | Dettagli |
|---|---|---|
| Top Context Bar | <x-context.header> |
• Breadcrumb: Dashboard / Condominio / Anagrafica • Selector condominio con ricerca rapida • Indicatori Stato (es. rate scadute, ticket aperti). |
| Left Rail (List & Filters) | <x-anagrafica.list> |
• Ricerca full-text, filtri (ruolo, stato, tag) • Segmenti salvati • Avatar/iniziali • Stato (attivo, sospeso, da importare). |
| Main Detail Tabs | <x-tabs> + <x-card> |
Tab principali: 1) Generale 2) Indirizzi & recapiti 3) Dati fiscali 4) Relazioni condominiali 5) CRM & attività 6) Documenti 7) Canali (email/SMS) 8) Contabilità & banche. |
| Right Action Rail | <x-action.rail> |
• Pulsanti rapidi (nuova nota, email, SMS, upload doc, crea accesso web) • KPI verticali (saldo rate, ultime attività) • Shortcut a stampe. |
| Footer Utility | <x-footer.actions> |
• Pulsanti Salva, Duplica, Storico versioni • Stato sincronizzazione pipeline (ultima importazione, conflitti). |
Responsive: sotto i 992px list diventa off-canvas, azioni si trasformano in bottom sheet.
3. Mapping tab legacy → NetGescon
| Tab Legacy | Nuova scheda | Dati Laravel | Note UX |
|---|---|---|---|
| Generale + Dati fiscali | Panoramica | rubrica_universale, soggetti, rubrica_ruoli |
Card con info anagrafica, badges ruolo (cliente/fornitore/condomino), icone CF/P.IVA verificate. |
| Indirizzi 1/2, fatturazione, incassi | Indirizzi & recapiti | rubrica_indirizzi, indirizzi_operativi |
Timeline modifiche + checkbox "sincronizza con operativo". Supporto multi-indirizzo con tag (legale, operativo, fatturazione, incassi). |
| Dati extra / certificazione unica | Compliance & CU | rubrica_compliance, documenti_identita |
Card collapsible per campi CU, residenza estera, categoria previdenziale. Alert quando mancano campi obbligatori. |
| Collegamenti / riferimenti / storico nominativi | Relazioni & Storico | rubrica_relazioni, audit_logs |
Tabella relazioni (unità, incarichi, pertinenze) + timeline versioni indirizzi. |
| CRM, email, SMS | Comunicazioni | crm_attivita, notifiche_outbox |
Sub-tabs: Timeline, Email, SMS. Editor WYSIWYG + template. Filtri "solo condominio corrente". |
| Banche appoggio | Pagamenti & IBAN | rubrica_banche, mandati_sdd |
Lista IBAN con icone stato (verificato, scaduto). Supporto upload mandato. |
| Contatti | Referenti | rubrica_contatti |
Mini-card per referenti (nome, ruolo, canali, note). Pulsante "invita a portale". |
| Utenti WEB | Accessi digitali | user_accounts |
Gestione credenziali, 2FA, ruoli portale, log accessi. |
| Gestione clienti (scheda riepilogo) | Scheda condominiale | unita_immobiliari, proprieta, contratti_servizi |
Widget laterali per unità associate, ruoli (proprietario, inquilino, tecnico), stato rate. |
4. Widget condominiali chiave
- Riepilogo Condominio (top right): nome stabile, cod. condominio, numero unità, millesimi gestiti, prossime assemblee.
- Unità collegate: tabella scrollabile (Scala, Interno, Ruolo, Millesimi, Stato occupazione, flag locale tecnico). Filtri rapidi per "solo pertinenze".
- Stato Rate & Fatture: cards con importi scaduti, in scadenza, piani di rientro. CTA "Apri StampeRate".
- Attività recenti: timeline ultima nota, email, chiamata dal CRM; icone colorate per canale.
- Documenti rapidi: chip per documento identità, contratto locazione, manutenzioni in corso.
5. Flussi operativi prioritari
5.1 Navigazione Condominio → Soggetto
- Seleziono condominio dalla barra.
- Il list mostra solo soggetti legati al condominio; badge "import" per record provenienti dalla pipeline.
- Click su soggetto: pannello dettagli si aggiorna, i widget laterali rimangono contestualizzati (es. rate condominio X).
5.2 Aggiornare indirizzo e sincronizzare ruoli
- Form dinamico con switch "Applica a tutti i ruoli (cliente, fornitore, condomino)".
- Salvataggio tramite
LiveValidator + FormHandlergià descritti nel capitolo 8. - Al salvataggio, mostra snackbar con elenco ruoli aggiornati e link allo storico.
5.3 Invio comunicazioni massive
- Dalla tab Comunicazioni: selezione template → scelta canale (Email / PEC / SMS) → definizione destinatari (ruoli, filtri CRM).
- Preview in modal, allegati drag&drop, logging automatico in
crm_attivitae relazione con condominio.
5.4 Gestione locali tecnici
- Widget "Locali Tecnici" nella tab Relazioni: elenco con manutentori assegnati, contratti attivi, calendario interventi.
- Pulsante "Aggiungi manutentore" apre slide-over con picklist soggetti già presenti; se nuovo, quick-create con campi minimi.
6. Componenti da realizzare
| Componente | Tipo | Note di implementazione |
|---|---|---|
resources/views/components/anagrafica/context-header.blade.php |
Blade | Breadcrumb + selectors + badge stato. |
resources/js/modules/anagrafica/ListPanel.js |
JS/Alpine | Ricerca, filtri, infinite scroll. |
resources/views/anagrafica/show.blade.php |
Pagina | Contiene struttura dual-pane con tabs. |
resources/js/modules/anagrafica/RelationsWidget.js |
JS/Alpine | Gestisce unità collegate e ruoli. |
resources/views/components/action/rail.blade.php |
Blade | Pulsanti rapidi, KPI. |
resources/js/modules/anagrafica/CommunicationCenter.js |
JS | Editor email/SMS, integrazione template. |
Ogni componente deve rispettare linee guida di Capitolo 8 (Bootstrap 5 + Alpine, lazy loading, validazione live).
7. Integrazione con pipeline import
- Badge provenienza:
source=gescon→ etichetta su card soggetto con link a record storico. - Campi read-only: per dati bloccati dall'import (es. codice legacy) mostra badge "Gestito da import" con tooltip.
- Task list riconciliazione: nella sidebar appare lista delle incongruenze (CF mancante, IBAN incompleto) alimentata da
import_discrepancies. - Storico versioni: integrazione con
LegacyArchiveServiceper aprire view "storico nominativi" direttamente dalla UI.
8. Roadmap di sviluppo
- Sprint 1
- Contesto + List Panel + scheda Panoramica
- Widget unità collegate (read-only)
- Sprint 2
- Tab Indirizzi/Recapiti e Dati fiscali
- Action rail + quick actions (note/email)
- Sprint 3
- Comunicazioni (email/SMS) + timeline CRM
- Referenti e banche
- Sprint 4
- Accessi digitali, allegati documentali, locali tecnici
- Integrazione alert pipeline + validazioni avanzate
Ogni sprint dovrà includere test HTTP/Feature per endpoint e test di componenti Livewire/Alpine dove applicabile.
9. Next steps immediati
- Definire schema API / endpoints per:
/api/anagrafica/{id}/relations/api/anagrafica/{id}/communications/api/anagrafica/{id}/financial
- Preparare mock JSON per sviluppo frontend (fixtures in
resources/js/mocks/anagrafica). - Allineare
docs/07-IMPORT-UNITA-IMMOBILIARI.mdcon nuove viste per verificare che ogni campo importato abbia una collocazione UI.
Risultato atteso: operatori amministratori possono navigare rapidamente tra condominio, soggetti e unità, aggiornare dati anagrafici, inviare comunicazioni e verificare situazioni economiche senza uscire dalla scheda, mantenendo semplicità visiva rispetto alle maschere legacy ma sfruttando la flessibilità web.