# `view_celle_multi_udc.py` ## Scopo Questo modulo esplora le celle che contengono più pallet del previsto, organizzando i risultati in un albero: - corsia - cella duplicata - pallet contenuti nella cella ## Flusso operativo ```{mermaid} flowchart TD A["open_celle_multiple_window()"] --> B["CelleMultipleWindow.__init__()"] B --> C["_build_layout()"] C --> D["_bind_events()"] D --> E["refresh_all()"] E --> F["_load_corsie()"] E --> G["_load_riepilogo()"] F --> H["query_json SQL_CORSIE"] G --> I["query_json SQL_RIEPILOGO_PERCENTUALI"] H --> J["_fill_corsie()"] I --> K["_fill_riepilogo()"] ``` ## Lazy loading dell'albero ```{mermaid} flowchart TD A["Espansione nodo tree"] --> B["_on_open_node()"] B --> C{"Nodo corsia o nodo cella?"} C -- Corsia --> D["_load_celle_for_corsia()"] D --> E["query_json SQL_CELLE_DUP_PER_CORSIA"] E --> F["_fill_celle()"] C -- Cella --> G["_load_pallet_for_cella()"] G --> H["query_json SQL_PALLET_IN_CELLA"] H --> I["_fill_pallet()"] ``` ## Schema di chiamata ```{mermaid} flowchart LR Refresh["refresh_all"] --> Corsie["_load_corsie"] Refresh --> Riep["_load_riepilogo"] Open["_on_open_node"] --> LoadCelle["_load_celle_for_corsia"] Open --> LoadPallet["_load_pallet_for_cella"] Export["export_to_xlsx"] --> Tree["tree dati dettaglio"] Export --> Sum["sum_tbl riepilogo"] ``` ## Note - L'albero è caricato a richiesta, non tutto in una sola query. - Questo riduce il costo iniziale e rende il modulo più scalabile. - L'export legge sia il dettaglio dell'albero sia la tabella di riepilogo.