# Sequenza di prelievo per picking list ## Obiettivo Consentire al responsabile di definire, per una singola picking list, l'ordine dei gruppi di ubicazioni che il barcode deve seguire. Il barcode continua a presentare una sola UDC alla volta e non espone la configurazione all'operatore. ## Ordine predefinito In assenza di una configurazione personalizzata il sistema propone: 1. UDC `Non scaff.` nella cella convenzionale `1000` / `5E.1.1`. 2. UDC negli scaffali secondo il valore legacy `Celle.Ordinamento`. L'ordinamento globale delle celle non viene modificato. ## Configurazione per documento La finestra `Sequenza di prelievo` si apre dalla picking list selezionata in `Gestione Picking List`. I gruppi disponibili sono `Non scaff.` e le corsie effettivamente presenti nel contenuto residuo del documento. L'utente puo' trascinare i gruppi nell'area destra, usare il doppio clic oppure i pulsanti `Aggiungi`, `Rimuovi`, `Su` e `Giu'`. L'ordine dall'alto verso il basso definisce la precedenza dei gruppi configurati. Una sequenza puo' essere parziale: gli eventuali gruppi non inseriti vengono accodati secondo l'ordine predefinito. In questo modo una configurazione non puo' rendere invisibili UDC o scaffali aggiunti successivamente alla picking list. `Ripristina default` elimina la configurazione del documento e riattiva immediatamente l'ordine standard. ## Persistenza e concorrenza La tabella Python-only `dbo.py_PickingListPrelievoSequenza` memorizza una riga per documento e gruppo, con ordine e campi di audit. Il salvataggio marca come cancellata la configurazione precedente e inserisce quella nuova in una singola transazione con `XACT_ABORT ON`, conservando quindi anche lo storico delle variazioni. Due picking list possono quindi avere sequenze diverse senza modificare le celle, le altre liste o gli oggetti usati dal programma C#. ## Consumo dal barcode La vista Python-only `dbo.py_ViewPackingListPrelievo` deriva dalla vista residuale, esclude quindi le UDC gia' in `7G.1.1` e calcola `OrdinePrelievoGruppo`. Sia la griglia di dettaglio sia il repository barcode ordinano per: 1. `OrdinePrelievoGruppo`; 2. `Ordinamento` legacy della cella; 3. codice pallet come criterio stabile finale. Pausa, ripresa, salto UDC, F1/F2 e prenotazione non vengono modificati. Quando una UDC viene movimentata, la richiesta successiva rilegge la vista e usa la sequenza corrente sul contenuto residuo. ## Installazione e rollback Per un aggiornamento completo del database online usare `apply_online_python_wms_full_patch.sql`. Per applicare solo questa evoluzione a un database gia' aggiornato: 1. eseguire `apply_pickinglist_days_filter_patch.sql`; 2. eseguire `apply_pickinglist_sequence_patch.sql`. Il rollback specifico e' `rollback_pickinglist_sequence_patch.sql`; dopo il rollback deve essere ripristinata anche una versione applicativa precedente, poiche' il nuovo codice interroga la vista di prelievo.