Files
ware_house/diagnostica_scarico_celle_multiple.md

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.