netgescon-day0/docs/08-ANAGRAFICA-UNICA-UI.md

8.5 KiB

📘 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

  1. Riepilogo Condominio (top right): nome stabile, cod. condominio, numero unità, millesimi gestiti, prossime assemblee.
  2. Unità collegate: tabella scrollabile (Scala, Interno, Ruolo, Millesimi, Stato occupazione, flag locale tecnico). Filtri rapidi per "solo pertinenze".
  3. Stato Rate & Fatture: cards con importi scaduti, in scadenza, piani di rientro. CTA "Apri StampeRate".
  4. Attività recenti: timeline ultima nota, email, chiamata dal CRM; icone colorate per canale.
  5. Documenti rapidi: chip per documento identità, contratto locazione, manutenzioni in corso.

5. Flussi operativi prioritari

5.1 Navigazione Condominio → Soggetto

  1. Seleziono condominio dalla barra.
  2. Il list mostra solo soggetti legati al condominio; badge "import" per record provenienti dalla pipeline.
  3. 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 + FormHandler già 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_attivita e 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

  1. Badge provenienza: source=gescon → etichetta su card soggetto con link a record storico.
  2. Campi read-only: per dati bloccati dall'import (es. codice legacy) mostra badge "Gestito da import" con tooltip.
  3. Task list riconciliazione: nella sidebar appare lista delle incongruenze (CF mancante, IBAN incompleto) alimentata da import_discrepancies.
  4. Storico versioni: integrazione con LegacyArchiveService per aprire view "storico nominativi" direttamente dalla UI.

8. Roadmap di sviluppo

  1. Sprint 1
    • Contesto + List Panel + scheda Panoramica
    • Widget unità collegate (read-only)
  2. Sprint 2
    • Tab Indirizzi/Recapiti e Dati fiscali
    • Action rail + quick actions (note/email)
  3. Sprint 3
    • Comunicazioni (email/SMS) + timeline CRM
    • Referenti e banche
  4. 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.md con 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.