# Specifica - Storico Picking List ## Obiettivo La finestra "Storico Picking List" deve permettere di consultare le picking list visibili nel modello dati Python parallelo, comprese quelle gia' esaurite, mostrando lo stato sintetico della lista e il dettaglio delle UDC. ## Accesso - La finestra si apre dal launcher principale tramite il pulsante "Storico Picking List". - In una fase successiva potra' essere collegata alla form "Gestione Picking List" per aprire direttamente il dettaglio della lista selezionata. - La finestra e' disponibile agli operatori autenticati secondo il permesso `launcher.open_history_pickinglist`. ## Comportamento UI - La finestra usa lo stesso posizionamento delle altre form del backoffice. - Tutte le interrogazioni al database sono asincrone. - Durante il caricamento della lista e del dettaglio deve comparire l'overlay standard dell'applicazione. - La parte alta mostra l'elenco delle picking list. - La parte bassa mostra il dettaglio della picking list selezionata. - Il filtro principale e' il numero documento, con ricerca parziale. ## Logica dati La form usa un ramo di lettura storico Python separato dalle viste operative C#. Oggetti SQL dedicati: - `dbo.py_vPreparaPackingListSAMA1` - `dbo.py_vPreparaPackingList` - `dbo.py_XMag_ViewPackingListStorico` Questi oggetti sono creati dallo script `apply_python_pickinglist_history_views.sql` e possono essere rimossi con `rollback_python_pickinglist_history_views.sql`. La vista storica non usa `dbo.vPreparaPackingListSAMA1`, `dbo.vPreparaPackingList` o `dbo.XMag_ViewPackingList`, cosi' il programma C# continua a lavorare sul proprio ramo legacy. La vista `dbo.py_vPreparaPackingListSAMA1` include: - documenti dell'anno corrente: `BAMTES.ANNDOC >= YEAR(GETDATE())` - documenti aperti e chiusi: `BAMTES.STATO IN ('P', 'D')` - nessun filtro sugli ultimi 10 giorni La lista alta aggrega per documento: - data documento - stato documento gestionale - totale UDC - righe residue - righe spedite - stato operativo - stato prenotazione Python Lo stato operativo e' calcolato cosi': - `Chiusa`: il documento gestionale ha `BAMTES.STATO = 'D'`. - `Da lavorare`: nessuna riga risulta spedita. - `In corso`: almeno una riga risulta spedita e almeno una riga resta da lavorare. - `Esaurita`: non restano righe operative. Il criterio primario per riconoscere una picking list lavorata nello storico e' lo stato gestionale `BAMTES.STATO`. La cella `9999 = 7G.1.1` resta un indizio logistico importante, ma non e' sufficiente come unico criterio storico perche' una UDC non piu' in giacenza puo' ricadere nei fallback della vista. ## Convenzioni operative Una riga con `Cella = 9999` viene considerata spedita/prelevata, coerentemente con la convenzione `7G.1.1` osservata sul barcode. ## Limiti noti Questa finestra e' una prima vista storica di consultazione. Non sostituisce ancora una vera storicizzazione annuale progettata a database. Quando il database verra' riprogettato per FlyWMS, sara' preferibile costruire una vista storica dedicata, con date di chiusura lista, utente, tempi e movimento UDC collegato.