9.6 KiB
Guida allo Sviluppo e Architettura Modulare di NetGescon
Benvenuto nella guida ufficiale allo sviluppo di NetGescon. Questo documento descrive l'architettura tecnica del sistema, la struttura del database, i flussi di importazione dei dati legacy e le linee guida per lo sviluppo di moduli estensibili open-source.
L'obiettivo di NetGescon è fornire una piattaforma gestionale condominiale solida, sicura ed estensibile in stile Odoo, in cui moduli e componenti esterni possono essere agganciati facilmente al core dell'applicazione.
1. Visione Open-Source ed Estensibilità Modulare
NetGescon è strutturato per consentire a sviluppatori terzi di aggiungere funzionalità senza alterare il nucleo dell'applicazione.
1.1 La Directory app/Modules/
L'applicazione organizza le macro-funzionalità estendibili all'interno di app/Modules/. Attualmente sono presenti i moduli:
- Contabilita: Modelli, viste e servizi relativi alla contabilità, bilancio e prima nota.
- StampeRate: Logica di generazione e formattazione dei report e delle stampe per le rate.
1.2 Regole per Creare un Nuovo Modulo (es. LettureAcqua)
Ogni modulo deve essere autocontenuto:
- Struttura: Crea una cartella in
app/Modules/NomeModulocontenente sotto-cartelle perModels,Services,Http(o Livewire/Filament). - Database: Le tabelle di database di un modulo devono avere chiavi esterne verso le tabelle principali (es.
unita_immobiliari_id,stabili_id) ma risiedere in tabelle separate per evitare collisioni. - Filament Integration: Le risorse Filament del modulo devono essere registrate dinamicamente nel pannello principale, garantendo la compatibilità con i temi e i permessi globali dell'applicazione.
2. Struttura del Database e Mappatura dei Dati
Il sistema gestisce due connessioni e schemi di database principali: la connessione di Produzione e la connessione di Staging (gescon_import).
graph TD
MDB[File Legacy MDB] -->|Caricamento| Staging[Database Staging: gescon_import]
Staging -->|Pipeline di Importazione| Prod[Database di Produzione]
Prod -->|Pannello di Amministrazione| Filament[Filament v3 UI]
2.1 Connessione Staging (gescon_import)
Utilizzata per caricare temporaneamente i dati legacy dagli archivi MDB. Le tabelle principali di staging sono:
condomin: Contiene le anagrafiche dei condomini, proprietari, inquilini e informazioni sulle unità.dett_tab: Dettaglio dei millesimi e importi associati a ciascuna tabella millesimale legacy.dett_pers: Contiene le spese personali/addebiti specifici per condomino o inquilino.operazioni: Elenco delle registrazioni e movimenti legacy.
Warning
Lo schema di staging è altamente flessibile. Colonne differenti possono essere presenti a seconda della versione del file MDB originario. Prima di effettuare query, verificare sempre la presenza delle colonne via:
Schema::connection('gescon_import')->getColumnListing($table)
2.2 Database di Produzione (Tabelle Chiave)
stabili: Collegato alla rubrica universale tramiterubrica_id.unita_immobiliari: Rappresenta le singole unità (interni, scale, palazzine).tabelle_millesimali: Definizione delle tabelle (millesimi di proprietà, riscaldamento, ascensore, ecc.). Contiene la colonnanordper determinare l'ordinamento legacy di visualizzazione.dettaglio_millesimi: Associa le unità immobiliari alle tabelle millesimali.- Chiave composita unica:
['tabella_millesimale_id', 'unita_immobiliare_id', 'ruolo_legacy']. - Questo consente di avere record separati sulla stessa unità per Condomino (
ruolo_legacy = C) ed Inquilino (ruolo_legacy = I), garantendo la corretta attribuzione dei millesimi per tipo di soggetto.
- Chiave composita unica:
voci_spesa: Elenco delle voci di costo collegate ai bilanci e alle gestioni contabili.
3. Pipeline d'Importazione dei Dati (ImportGesconFullPipeline.php)
La pipeline esegue l'importazione sequenziale dei dati con un flusso incrementale:
stepStabili: Importa gli stabili e li sincronizza con la Rubrica Universale.stepMillesimi:- Associa i millesimi senza collassare le righe con ruoli differenti (
CeI). - Conserva e mappa il campo
nordper l'ordinamento delle righe.
- Associa i millesimi senza collassare le righe con ruoli differenti (
stepAffitti: Esegue l'importazione dei canoni e dei contratti dal databaseparti_comuni.mdb.stepOperazioni: Sincronizza in modo incrementale i movimenti in prima nota.
4. Validazioni e Regole di Business Contabili
4.1 Quadratura Millesimi a Consuntivo (Blocco di Sicurezza)
Per evitare errori nei bilanci finali, la ripartizione contabile a Consuntivo è protetta da un blocco di sicurezza in RipartizioneSpesaService.php:
- Se la somma dei millesimi di dettaglio presenti in
dettaglio_millesimiper la tabella specificata differisce dal totale dichiarato intabelle_millesimali.totale_millesimi(solitamente1000.00):- A Preventivo: Il sistema solleva un warning non bloccante memorizzato nei log.
- A Consuntivo: Il sistema lancia un'eccezione che blocca l'esecuzione e impedisce il salvataggio della ripartizione.
5. Strategia per Moduli e Integrazioni Future (API & Gateway)
Questa sezione delinea l'architettura programmata per le prossime implementazioni, facilitando l'allacciamento di servizi esterni tramite API.
5.1 Portale Condomini/Inquilini ed Estratto Conto con Gateway Esterni
Per consentire il pagamento autonomo delle rate e dei debiti minimizzando i rischi di sicurezza:
- Zero Dati Finanziari in Locale: NetGescon non memorizzerà credenziali di carte di credito, IBAN o dati sensibili di pagamento nei propri server.
- Flusso del Pagamento:
- Il condomino accede alla propria area riservata (Estratto Conto) e seleziona le rate da pagare.
- Il sistema genera un token di sessione di pagamento univoco e reindirizza l'utente a un gateway sicuro esterno (es. Stripe, PayPal, PagoPA).
- Al completamento del pagamento, il gateway esterno notifica NetGescon tramite un Webhook sicuro.
- NetGescon elabora il webhook, verifica la firma e aggiorna lo stato della rata a
pagataregistrando l'incasso e la relativa operazione contabile.
sequenceDiagram
Condomino->>NetGescon: Richiesta pagamento rate
NetGescon->>Gateway Esterno: Crea sessione e reindirizza
Condomino->>Gateway Esterno: Inserisce dati e paga
Gateway Esterno-->>NetGescon: Webhook (Notifica Pagamento Avvenuto)
NetGescon->>NetGescon: Registra Incasso e Prima Nota
Gateway Esterno->>Condomino: Conferma Pagamento
5.2 Modulo Letturisti e Gestione Consumi Acqua (API-First)
Per agevolare chi effettua le letture e le installazioni sul campo, l'integrazione avverrà in modalità API-First:
- Interfaccia Dedicata: Una sezione autonoma per i tecnici letturisti in cui gestire:
- Installazione e anagrafica contatori.
- Inserimento rapido delle letture periodiche (anche offline/mobile).
- Algoritmi di Consumo e Rilevamento Perdite Silenti:
- NetGescon riceve le letture e applica algoritmi predittivi basati sullo storico dei consumi.
- Se viene rilevato un consumo continuo anomalo (es. prelievo d'acqua notturno costante per più giorni), il sistema invia automaticamente notifiche push o email di allarme al condomino e all'amministratore per prevenire danni da perdite d'acqua.
5.3 Integrazioni Governative (Italia)
Il core sarà espanso per interfacciarsi con le banche dati della pubblica amministrazione italiana:
- ANPR / Agenzia delle Entrate: Per verificare la correttezza dei codici fiscali e delle anagrafiche dei condomini importati.
- SDI (Fatturazione Elettronica): Integrazione nativa per la ricezione automatica in prima nota delle fatture fornitori in formato XML.
6. Riepilogo Modifiche Recenti (Changelog Tecnico)
Durante questo ciclo di sviluppo sono stati implementati i seguenti miglioramenti architetturali e correttivi:
- Configurazione e Toggle Globali: Introdotta la chiave
legacy_import_enabledinconfig/netgescon.phpper condizionare l'accesso ed eliminare/nascondere le viste di importazione legacy se non attive. - Sincronizzazione Rubrica Universale: Implementato il metodo
syncRubricaContatto()sul modelloStabile.phpper inserire automaticamente i contatti degli stabili in rubrica (categoria'condomino', tipo'persona_giuridica'). - Importazione Canoni di Locazione: Aggiunto lo step CLI
'affitti'alla pipeline per avviareaffitti:import-mdb --refresh-canonisul databaseparti_comuni.mdb. - Campo
norde Count Voci: Introdotta la colonnanordper l'ordinamento manuale legacy delle tabelle millesimali e calcolato/mostrato a schermo il conteggio delle voci di spesa collegate (voci_count). - Unificazione Prospetto Millesimi: Eliminazione della pagina ridondante
TabelleMillesimaliProspettoe conversione dei link con parametro?tab=prospetto. Iconizzazione delle azioni in griglia. - Preservazione Ruoli Comproprietari/Inquilini: Modifica del processo di importazione millesimi per non fondere le righe con lo stesso condomino ed unità ma ruoli differenti, salvando sia
ruolo_legacysianord. - Filtro Ricerca Addebiti: Implementata la ricerca testuale nel modal addebiti personali (
section.blade.php), salvaguardando la reattività e gli indici Livewire per le modifiche degli importi. - Quadratura Millesimi: Integrazione della validazione bloccante a consuntivo per controllare la discrepanza tra la somma dei dettagli millesimi e il totale dichiarato della tabella.