6.5 KiB
Diagnostica Scarico Celle Multiple
Contesto
La finestra Scarico aperta da Gestione layout serve a gestire celle fisiche che contengono piu' UDC.
Nel database legacy non esisteva un vincolo rigido una cella = una UDC, quindi una cella rossa puo' contenere:
- UDC realmente compresenti nella stessa cella;
- UDC rimaste in cella anche se appartenenti a picking list gia' chiuse/spedite.
L'obiettivo della diagnostica non e' ricostruire tutta la storia della UDC, ma aiutare l'operatore a capire quali righe scaricare come spedite.
Fonti Dati
La griglia della dialog parte dalla giacenza corrente:
dbo.XMag_GiacenzaPallet
Questa vista indica quali UDC risultano presenti nella cella aperta dal layout.
La diagnostica controlla anche:
dbo.XMag_GiacenzaPalletPlistChiuse
Questa vista non e' uno storico documentale puro. E' una vista ibrida che incrocia la giacenza corrente con i documenti SAM chiusi. In pratica serve a individuare UDC ancora presenti in una cella fisica, ma appartenenti a una picking list/documento gia' chiuso.
Conclusione Operativa
Per una cella fisica aperta da Gestione layout, i casi realmente utili sono solo due.
1. Nessuna Diagnostica
La UDC e' presente nella cella multipla e non compare in XMag_GiacenzaPalletPlistChiuse.
Significato:
UDC normalmente presente in cella.
Non viene mostrato nessun messaggio nella colonna diagnostica.
2. Spedita Ma Non Scaricata Dalla Cella
La UDC e' presente nella cella fisica aperta, ma compare anche in XMag_GiacenzaPalletPlistChiuse.
Diagnostica mostrata:
Motivo: spedita ma non scaricata dalla cella
Significato:
La UDC appartiene a una picking list chiusa, ma non e' stata scaricata dalla cella fisica.
Operativamente questa UDC va selezionata e scaricata come spedita, quindi verso la cella virtuale:
7G.1.1 / IDCella 9999 / barcode cella 9000000
Casi Teorici Scartati Dalla Dialog
Durante l'analisi erano stati ipotizzati altri casi, ma sono stati esclusi dalla diagnostica della dialog per non confondere l'operatore.
UDC Gia' In 7G.1.1
Se una UDC risulta davvero in IDCella = 9999, normalmente non dovrebbe comparire nella cella fisica aperta dal layout.
Se accadesse, sarebbe un'incoerenza tra viste o dati non sincronizzati.
Per questo la dialog di scarico da layout fisico non mostra piu' il messaggio:
Motivo: spedita
UDC In Picking List Chiusa Ma Non Spedita
Questo caso e' teoricamente possibile ma raro e ambiguo nel modello dati attuale. Le viste disponibili non forniscono una distinzione documentale/storica abbastanza pulita da renderlo utile in questa dialog operativa.
Per questo la dialog non mostra piu':
Motivo: in plist chiusa, non spedita e non scaricata dalla cella
Eventuali analisi piu' profonde vanno fatte nelle finestre di storico, non nella dialog rapida di scarico.
Regola Finale Implementata
La diagnostica della dialog Scarico e' volutamente semplice:
se UDC in XMag_GiacenzaPalletPlistChiuse:
"Motivo: spedita ma non scaricata dalla cella"
altrimenti:
diagnostica vuota
Questa scelta riduce il rischio di falsi positivi e mantiene chiaro il comportamento per l'operatore.
Aggiornamento 04/07/2026 - Barcode Picking List
Durante i test sul barcode sono state introdotte alcune modifiche operative collegate alla gestione delle picking list, agli skip UDC e alla ripresa del lavoro dopo movimenti liberi.
Anti Autosubmit Su Cambio Lista
Problema osservato:
passando rapidamente da una picking list prenotata a una non prenotata,
il barcode poteva considerare come lettura valida un valore gia' presente nel campo Pallet
e scaricare automaticamente una UDC della nuova lista.
Correzione implementata:
lo scarico automatico in picking list parte solo se il campo Pallet e' stato modificato
dall'operatore dopo il caricamento della UDC proposta.
In pratica, quando il programma carica una nuova UDC attesa, il valore visualizzato non puo' piu' generare da solo lo scarico. Serve una nuova lettura o digitazione effettiva.
Skip UDC In Picking List
Durante l'evasione di una picking list, il tasto F4 assume il significato:
[F4] Salta UDC
La UDC saltata viene registrata nella tabella:
dbo.py_BarcodePickingListSkip
Le righe aperte hanno:
Risolto = 0
La query del barcode esclude le UDC saltate aperte, quindi la lista puo' proseguire sulle UDC successive senza chiudere definitivamente quelle non trovate.
Fine Lista Con UDC Saltate
Quando una picking list non ha piu' UDC immediatamente lavorabili, ma contiene una o piu' UDC saltate, il barcode:
non chiude la picking list;
rilascia la prenotazione;
lascia la lista riprenotabile;
mostra un messaggio di sospensione con numero UDC saltate.
La lista resta quindi aperta e potra' essere ripresa in un secondo momento.
Riprenotazione E Ripresa UDC Saltate
Quando la picking list viene riprenotata, gli skip aperti del documento vengono marcati come risolti:
UPDATE dbo.py_BarcodePickingListSkip
SET Risolto = 1,
RisoltoDa = <operatore>,
RisoltoDataOra = SYSDATETIME()
WHERE Documento = <documento>
AND Risolto = 0;
Questo permette al barcode di riproporre le UDC saltate rimaste da evadere.
Posizione UDC Dopo Movimenti Liberi
Una UDC saltata puo' essere movimentata in pausa tramite operazioni libere, ad esempio:
versamento in una nuova cella fisica;
dissociazione verso 9001000 / Non scaffalata.
Alla ripresa della picking list, la posizione mostrata dal barcode riflette la giacenza corrente, perche' la vista operativa deriva Cella e Ubicazione da:
dbo.XMag_GiacenzaPallet
Quindi una UDC prima saltata e poi spostata verra' proposta con la nuova cella, oppure come:
Non scaffalata
se e' stata dissociata verso la locazione virtuale 9001000.
Regola Conservata
Resta confermata la regola operativa:
una UDC diventa Spedita / 7G.1.1 / 9000000 solo nel flusso picking list.
Le operazioni libere non spediscono una UDC. Possono solo versarla in una cella fisica oppure metterla in 9001000 / Non scaffalata.
File Coinvolti
Le modifiche principali sono nei moduli:
barcode_client.py
barcode_repository.py
barcode_service.py
prenota_sprenota_sql.py
version_info.py
La patch DB cumulativa da usare sul database online e':
apply_online_python_wms_full_patch.sql
La patch contiene gli oggetti SQL necessari al ramo Python e puo' essere eseguita una sola volta da SSMS.