# Specifica - Storico movimenti UDC

## Obiettivo

La finestra "Storico movimenti UDC" deve permettere di ricostruire, in sola lettura, la sequenza dei movimenti registrati per una UDC. La funzione nasce come strumento di diagnosi per capire dove e da chi una unita' di carico e' stata movimentata fino alla spedizione.

## Accesso

- La finestra si apre dal launcher principale tramite il pulsante "Storico movimenti UDC".
- In una fase successiva potra' essere richiamata anche dalle form esistenti, ad esempio dalla ricerca UDC o dal dettaglio picking list, passando direttamente il codice UDC selezionato.
- La finestra e' disponibile agli operatori autenticati secondo il permesso `launcher.open_history_udc`.

## Comportamento UI

- La finestra usa lo stesso posizionamento delle altre form del backoffice.
- Tutte le interrogazioni al database sono asincrone.
- Durante il caricamento deve comparire l'overlay standard dell'applicazione.
- Il filtro principale e' il codice UDC, con ricerca parziale.
- La griglia mostra al massimo 500 righe per evitare carichi eccessivi durante i test.
- Le righe di tipo `V` sono evidenziate come versamenti/carichi.
- Le righe di tipo `P` sono evidenziate come prelievi/scarichi.

## Dati visualizzati

La prima implementazione legge da `dbo.MagazziniPallet`, collegando quando possibile `dbo.Celle` per mostrare l'ubicazione in forma leggibile.

La ricerca non si limita al match diretto su `MagazziniPallet.Attributo`: include anche i movimenti collegati tramite la catena `ID` / `IDRiferimento`. Questo e' importante nel vecchio modello dati, perche' un prelievo o un trasferimento puo' essere legato alla riga originaria di versamento.

La griglia integra anche la vista `dbo.XMag_GiacenzaPalletPlistChiuse` come fallback gestionale:

- prima vengono mostrati i movimenti fisici reali `V` e `P` da `dbo.MagazziniPallet`
- se per la UDC esiste almeno un movimento fisico `P`, anche collegato tramite la catena `ID` / `IDRiferimento`, non viene aggiunta nessuna riga diagnostica
- se non esistono movimenti `P` ma la UDC compare in una picking list gestionale chiusa, viene mostrata una riga diagnostica `SPED`

La riga `SPED` non e' un movimento fisico: serve solo a spiegare perche' le form operative considerano la UDC gia' spedita anche quando manca la tracciatura fisica `P`. Deve quindi essere considerata l'ultima opzione: se esistono movimenti reali `V` o `P`, questi restano la fonte primaria per data, utente e ubicazione.

Campi principali:

- ID movimento
- Tipo movimento
- Riferimento
- UDC
- IDCella
- Ubicazione
- DataMagazzino
- Utente di inserimento
- Data inserimento
- Utente di modifica
- Data modifica

## Limiti noti

La funzione e' diagnostica e non modifica dati. Se in futuro servira' uno storico piu' ricco, sara' opportuno introdurre una vista o tabella storica dedicata con nomi parlanti nel nuovo schema FlyWMS.
