14 KiB
14 KiB
Walkthrough delle Modifiche e Risultati dell'Importazione (Stabile 0021)
Tutte le rettifiche architetturali, i requisiti di Livello 3 e le ottimizzazioni grafiche/interfaccia UX sono stati implementati con successo.
Modifiche Apportate nella Sessione Corrente
1. UX/UI e Refix Layout Critico
- Scroll Indipendente e Blocchi Scrolling Globale:
- Aggiornato theme.css per forzare
overflow: hidden !important;sul body principale (.fi-body.fi-body-has-navigation). - Configurato
.fi-sidebara100vh/100dvhfissi con scorrimento indipendente (overflow-y: auto !important;) e posizionato l'header.fi-topbaratop: 0eliminando margini anomali e sovrapposizioni. - Aggiornato legacy-admin-assets.blade.php per prioritizzare il selettore
.fi-sidebarnel salvataggio e nel ripristino della posizione dello scroll tramitelocalStoragedopo ogni navigazione Livewire.
- Aggiornato theme.css per forzare
2. Revisione Tab Gestioni (Badge e Sanificazione Testi)
- Modificato GestioniStabileTable.php per ripulire le diciture ridondanti (es. "Straordinaria - Straordinaria #1") dal testo visualizzato nelle colonne
gestione_labeledenominazioneutilizzando espressioni regolari pulite. - Trasformata la colonna
tipo_gestionein un badge colorato con associazioni di stato coerenti (successper ordinaria,infoper riscaldamento,warningper straordinaria).
3. Logica Pulsanti "Indietro" Dinamica
- Aggiornato il metodo
getBackUrl()in UnitaImmobiliarePage.php e l'azionetornain FornitoreScheda.php per controllare a tre livelli:- Il parametro
?back=in query string. - L'URL precedente
url()->previous()se non derivante da chiamate Ajax/Livewire. - Fallback all'URL della pagina indice del modulo di riferimento.
- Il parametro
4. Gestione Inquilini In-line (Conduttori Attivi)
- Inserita una sezione interattiva "Gestione Conduttore (Inquilino Attivo in timeline)" nel tab "Persone" di unita-immobiliare.blade.php.
- Implementata la logica di caricamento (
hydrateInquilinoAttivo) e salvataggio (saveInquilino) in UnitaImmobiliarePage.php per associare/chiudere la timeline del conduttore attivo interfacciando la tabella pivotunita_anagrafica_periodo.
5. Raggruppamento Gerarchico Piano dei Conti In-line
- Sostituita la precedente visualizzazione disgiunta delle tabelle millesimali con una tabella gerarchica integrata nel tab "Millesimi":
- Mastro (Conto): Tabella Millesimale con input editabile per i millesimi.
- Sottoconti (Voci di Spesa): Allineati come sotto-righe con input numerici per preventivo e consuntivo modificabili in-place.
- Aggiunta la funzione Livewire
savePianoConti()per persistere a database millesimi, preventivi e consuntivi dell'unità immobiliare (aggiornandodettaglio_millesimiedettaglio_importi_tabella).
6. Modulo Consumi Acqua (Ingestione da acqua_dett / acqua_dett1)
- Creato il servizio GesconCoreMigrationService.php per importare le letture contatori unendo ed esportando le tabelle
acqua_detteacqua_dett1dal file mastergenerale_stabile.mdb. - Legato ogni consumo all'unità immobiliare tramite
id_cond, risolvendo l'occupante proprietario/inquilino e validando la lettura verificando la corrispondenza temporale dell'incassocod_condall'interno della timelineunita_anagrafica_periodo. - Integrato il passo come step della console
acquaregistrandolo in ImportGesconFullPipeline.php.
7. Estensione Pipeline - Importazione Rate da Preventivo
- Aggiunto lo step
ratePreventivoin ImportGesconFullPipeline.php per leggere la tabellarateda ciascunsingolo_anno.mdb, determinare l'anno di esercizio, risolverlo nell'unità corretta tramitecod_conde memorizzare le scadenze nella nuova tabellarate_scadenze_preventivo. - Corretto il bug di importazione in LoadGesconMdbToStaging.php che ometteva la mappatura del campo
annoper la tabella di stagingrate, provocando violazioni del vincoloNOT NULL.
Risultati dell'Importazione e Validazione
La pipeline di importazione per lo stabile 0021 è stata eseguita con successo con il comando:
php artisan gescon:import-full --stabile=0021 --path="storage/app/amministratori/HWFGITXK/legacy"
Quadratura Matematica Aggiornata
I risultati estratti dal log confermano il caricamento completo:
- Unità Immobiliari core caricate: 212 record (risolvendo lo sdoppiamento dell'interno 8 e preservando le geometrie fisiche reali).
- Soggetti Creati: 8 record (ora associati correttamente tramite lo step
soggetti). - Diritti Inseriti: 276 record.
- Gestioni Straordinarie (lavori straordinari) caricate: 10 record.
- Millesimi (importi e dettagli): 5674 record.
- Rate Emesse: 9437 record (importando sia le rate emesse storiche che quelle calcolate da preventivo).
- Incassi: 2134 record.
- Relazioni Materializzate: 1793 record inseriti.
- Rate Preventivo Storiche: 6648 record importati in
rate_scadenze_preventivo. - Letture Acqua Ingestite: 5 record validati e inseriti correttamente legando i consumi contatori tramite la timeline.
Modifiche Apportate nella Seconda Parte della Sessione
8. Audit Quadratura Millesimi e Audit 1:1 Unità
- Allineamento & Integrità:
- Implementata in TabelleMillesimaliArchivio.php la logica di audit completo. Per ogni tabella millesimale viene calcolata a runtime la somma delle righe inserite in
dettaglio_millesimiconfrontandola con il totale atteso (es. 1000.0). - Eseguito un audit 1:1 verificando che tutti i record di staging della tabella
condomin(MDB) siano presenti e associati in NetGescon tramitelegacy_cond_id. - Visualizzato in tabelle-millesimali.blade.php un badge di allerta critico rosso e un pannello premium con i dettagli di tutte le anomalie riscontrate (tabelle fuori quadratura e unità orfane/mancanti).
- Implementata in TabelleMillesimaliArchivio.php la logica di audit completo. Per ogni tabella millesimale viene calcolata a runtime la somma delle righe inserite in
9. Upload Drive Multi-Tenant Hub Contratti e Sinistri
- HUB Contratti:
- Aggiunto il componente
FileUploadin ContrattiHub.php configurato per caricare i file PDF in base alla struttura multi-tenant[Codice_Amministratore]/[Codice_Univoco_Stabile]/contratti. - Modificato il processo di inserimento contratto in modo che, se viene caricato un PDF, venga creata automaticamente un'entità
Documentocollegata.
- Aggiunto il componente
- Flusso Sinistri e Pratica Legale:
- Aggiornato TicketGestione.php e ticket-gestione.blade.php per gestire la stima dell'importo del sinistro e memorizzarla nei metadati JSON.
- Implementata la registrazione automatica in Partita Doppia (inserendo i movimenti dare/avere in
operazioni_contabili) sul conto "Crediti vs Assicurazione" (ATT_CRED_ASS) e "Fondo Sospeso" (PASS_FND_SOSP) per la gestione contabile attiva. - Aggiunto il pannello interattivo per l'apertura in-line della pratica legale (con avvocato incaricato e note relative).
10. Cumulo Teste Assemblea e Filtro Convocati
- Esclusione Inquilini (I):
- Modificato il metodo
sincronizzaNominativiin GestioneAssemblea.php per escludere tassativamente i conduttori/inquilini (ruoloI) dalle convocazioni e votazioni delle assemblee.
- Modificato il metodo
- Cumulo Teste:
- Aggiornato
getVotiLiveStatsPropertyper raggruppare e contare i voti favorevoli, contrari e astenuti basandosi sulle teste reali (soggetti unicisoggetto_id), sommando i millesimi complessivi di tutte le proprietà collegate.
- Aggiornato
11. ODG Sospesi ed Eredità Votazioni
- Tabella ODG Sospesi:
- Creata la migrazione per aggiungere le colonne
esito_votazione,note_deliberaeimported_to_idinassemblee_ordine_giorno. - Aggiunto il tab "Punti OdG Sospesi" in AssembleeHub.php e assemblee-hub.blade.php per mostrare i punti non deliberati o sospesi delle assemblee passate.
- Inserito in gestione-assemblea.blade.php un box di avviso che permette l'importazione in un clic di questi punti ereditandone i dettagli.
- Creata la migrazione per aggiungere le colonne
12. Modulo Importatore Contatori e Staging Orfani
- Staging & Auto-Apprendimento:
- Creata la tabella
contatori_orfani_stagingtramite migrazione. - Creato ContatoriImportService.php per il parsing flessibile del file CSV. Se una matricola non corrisponde a nessuna unità immobiliare dello stabile, la lettura viene salvata temporaneamente come orfana.
- Integrata in ServiziStabileArchivio.php la griglia interattiva sotto la nuova Tab "Orfani Contatori".
- Una volta effettuata l'associazione manuale, il sistema salva direttamente la matricola nella colonna
acqua_contatore_seriale(auto-apprendimento) e sposta le letture nella tabella delle letture realistabile_servizio_letture.
- Creata la tabella
13. Risoluzione dei Crash Sintattici Filament V3 e SQLSTATE
- GestioniStabileTable: Rimosso il metodo
formatStateUsing()non supportato daTextInputColumnsulla colonnadenominazione, risolvendo definitivamente i crash Livewire correlati a Filament V3. - UnitaImmobiliariArchivio: Corretto il join sulla tabella di soggetti legacy modificandola con
anagrafiche(chiaveanagrafica_id) per consentire la visualizzazione dello storico anagrafico delle unità senza sollevare errori di tabella mancante SQLSTATE.
14. Normalizzazione Date (Bug Y2K e Swap Mese/Giorno)
- Deterministic Y2K Parser: Implementato un parser deterministico che analizza le scadenze del preventivo o i timestamp storici gestendo l'anno a due cifre (>=70 -> 19XX, <=25 -> 20XX).
- Swap Mese/Giorno: Rileva dinamicamente i formati misti anglosassoni (MM/DD/YYYY) e continentali (DD/MM/YYYY) forzando lo swap se il mese estratto supera 12 (es.
23interpretato come mese per la data23/10/2024). Integrato sia in fase di caricamento staging (LoadGesconMdbToStaging.php) sia in fase di pipeline (ImportGesconFullPipeline.php).
15. Divisione Millesimi e Chiavi Composte
- Scala Decimali Millesimi: Aggiunta la divisione automatica per
10000.0delle somme millesimali totali estrattate da staging superiori a9999(recuperando correttamente i 4 decimali storici omessi dall'importatore legacy). - Join Composite condomin: Modificati tutti i join eseguiti sulla tabella di staging
condominlegandoli tramite le chiavi composite(id_cond, cod_stabile, legacy_year)per isolare correttamente i record annuali del condomino senza creare duplicati o conflitti. Risolte le unità nel caricamento millesimi cercando prima la colonna univocacod_cond. - Suffisso voci_spesa: Sdoppiati i codici dei sottoconti ordinari appendendo il nome della tabella millesimale come suffisso (
[CODICE].[TABELLA]) e filtrando le query dei movimenti in prima nota pergestione_contabile_idonde scongiurare collisioni o duplicazioni.
16. Rielaborazione Scadenziari di Preventivo
- Rate Preventivo Storiche: Riscritta la logica di
stepRatePreventivoescludendo il conio Lire e forzando la quadratura controdett_tab.prev_euro(con riallineamento delle discrepanze decimali < €2.0 sull'ultima rata ed auto-generazione di 4 scadenze trimestrali qualora lo scadenziario fosse orfano/mancante).
17. UI/UX: Header Compatti e Pagina di Audit
- Header a riga singola: Sostituiti i vecchi banner descrittivi voluminosi con un box orizzontale a riga singola compatto (contenente denominazione dello stabile, esercizio attivo e badge tipologia) in
servizi-stabile-archivio.blade.php,riscaldamento-stabile-archivio.blade.phpetabelle-millesimali.blade.php. - Menu Audit e Revisione: Creata la pagina Filament
AuditQuadraturePage.phpe la sua viewaudit-quadrature.blade.phpnel namespaceGesconper analizzare ed esporre le anomalie 1:1, tabelle sbilanciate e discrepanze millesimali delle assemblee storiche rispetto all'MDB legacy.
Validazione Finale e Esecuzione con Successo della Pipeline
Il test finale di esecuzione per lo stabile 0021 ha avuto esito positivo (Exit Code 0).
Tutte le rettifiche architetturali, i parser Y2K, le quadrature matematiche ed i join composite si sono comportati esattamente come previsto, archiviando il test di importazione senza errori ed aggiornando con successo i record della base dati locale.
La compilazione dei file Blade è stata anch'essa validata con successo senza alcun warning.