Files
ware_house/docs/flows/gestione_pickinglist_flow.md
2026-03-31 19:15:33 +02:00

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, BusyOverlay e ToolbarSpinner.
  • Il caricamento iniziale è differito con after_idle per ridurre lo sfarfallio.
  • La riga selezionata viene tenuta separata dal dettaglio tramite detail_doc.