2.0 KiB
2.0 KiB
gestione_pickinglist.py
Scopo
Questo modulo gestisce la vista master/detail delle picking list e permette di:
- caricare l'elenco dei documenti;
- vedere il dettaglio UDC della riga selezionata;
- prenotare e s-prenotare una picking list;
- mantenere una UI fluida con spinner e refresh differiti.
Flusso di apertura
flowchart TD
A["open_pickinglist_window() da main.py"] --> B["create_pickinglist_frame()"]
B --> C["GestionePickingListFrame.__init__()"]
C --> D["_build_layout()"]
D --> E["after_idle(_first_show)"]
E --> F["reload_from_db(first=True)"]
F --> G["query_json SQL_PL"]
G --> H["_refresh_mid_rows()"]
H --> I["Render tabella master"]
Flusso master/detail
flowchart TD
A["Utente seleziona checkbox riga"] --> B["on_row_checked()"]
B --> C["Deseleziona altre righe"]
C --> D["Salva detail_doc"]
D --> E["query_json SQL_PL_DETAILS"]
E --> F["_refresh_details()"]
F --> G["Render tabella dettaglio"]
Prenotazione / s-prenotazione
flowchart TD
A["Click Prenota o S-prenota"] --> B["Verifica riga selezionata"]
B --> C["Determina documento e stato atteso"]
C --> D["Chiama sp_xExePackingListPallet_async()"]
D --> E["Aggiorna Celle e LogPackingList sul DB"]
E --> F["SPResult"]
F --> G{"rc == 0?"}
G -- Si --> H["_recolor_row_by_documento()"]
G -- No --> I["Messaggio di errore"]
Schema di chiamata
flowchart LR
Init["__init__"] --> Build["_build_layout"]
Init --> First["_first_show"]
First --> Reload["reload_from_db"]
Reload --> Mid["_refresh_mid_rows"]
Check["on_row_checked"] --> Details["_refresh_details"]
Pren["on_prenota"] --> SP["sp_xExePackingListPallet_async"]
Spren["on_sprenota"] --> SP
Note
- Il modulo usa
AsyncRunner,BusyOverlayeToolbarSpinner. - Il caricamento iniziale è differito con
after_idleper ridurre lo sfarfallio. - La riga selezionata viene tenuta separata dal dettaglio tramite
detail_doc.