# Warehouse Operational Flow Questo diagramma descrive il flusso operativo integrato tra: - layout di magazzino; - gestione picking list; - movimentazione fisica dei pallet; - viste SQL e stored procedure coinvolte; - aggiornamento dell'interfaccia dopo ogni operazione. ## Vista d'insieme ```{mermaid} flowchart TD UI["Operatore su interfaccia"] --> LAY["Gestione Layout"] UI --> PL["Gestione Picking List"] subgraph Layout["Flusso Layout"] LAY --> LC1["Caricamento corsie e metadati layout"] LC1 --> LC2["vViewMappaturaDescrizioneCorsia"] LC1 --> LC3["vViewMappaturaPosizCorsia"] LC1 --> LC4["MagLayout"] LC1 --> LC5["Celle / Magazzini"] LC2 --> GRID["Rendering griglia scaffale"] LC3 --> GRID LC4 --> GRID LC5 --> GRID GRID --> LX["Click su cella / ricerca UDC / menu contestuale"] end subgraph Picking["Flusso Picking List"] PL --> PC1["Caricamento elenco documenti"] PC1 --> PV1["XMag_ViewPackingList"] PV1 --> PGRID["Griglia documenti aggregata"] PGRID --> PSEL["Selezione documento"] PSEL --> PV2["vViewPackingListRestante"] PV2 --> PDET["Griglia dettaglio documento"] PDET --> PACT["Prenota / S-prenota / consultazione"] end subgraph Mov["Movimentazione pallet"] LX --> MOVE{"Operazione fisica?"} MOVE -->|Carico o spostamento| SP1["sp_xMagGestioneMagazziniPallet"] MOVE -->|Scarico pallet| SP1 PACT -->|Prenota o s-prenota| SP2["sp_xExePackingListPallet"] SP1 --> M1["Aggiorna movimenti MagazziniPallet"] SP1 --> M2["Aggiorna cella destinazione / origine"] SP1 --> M3["Controlla prenotazione automatica"] M3 --> SP3["sp_ControllaPrenotazionePackingListPalletNew"] SP3 --> SP4["sp_xExePackingListPalletPrenota"] SP2 --> M4["Aggiorna Celle.IDStato"] SP2 --> M5["Scrive LogPackingList"] SP4 --> M4 end subgraph Views["Ricostruzione contesto"] M1 --> GV["XMag_GiacenzaPallet"] M2 --> CV["Celle"] GV --> XP["XMag_ViewPackingList"] GV --> TP["vXTracciaProdotti"] CV --> XP XP --> RL1["Stato documento / pallet / ubicazione"] TP --> RL2["Articolo / lotto / descrizione"] end RL1 --> LREF["Refresh Layout / Picking List"] RL2 --> LREF LREF --> GRID LREF --> PGRID LREF --> PDET ``` ## Flusso del layout ```{mermaid} flowchart TD A["Apertura Gestione Layout"] --> B["Legge mappatura corsie"] B --> B1["vViewMappaturaDescrizioneCorsia"] B --> B2["vViewMappaturaPosizCorsia"] B --> B3["MagLayout"] B --> B4["Celle / Magazzini"] B1 --> C["Costruisce geometria scaffale"] B2 --> C B3 --> C B4 --> C C --> D["Query giacenza pallet per corsia"] D --> E["Colora celle: vuota / piena / multipla"] E --> F["Mostra UDC piu recente nella cella"] F --> G{"Interazione utente"} G -->|Ricerca UDC| H["Evidenzia cella in blu"] G -->|Tasto destro su cella rossa| I["Menu contestuale"] I --> J["Dialog scarico / analisi multi UDC"] J --> K["Movimentazione fisica pallet"] K --> L["Refresh layout"] ``` ## Flusso della picking list ```{mermaid} flowchart TD A["Apertura Gestione Picking List"] --> B["Query aggregata documenti"] B --> C["XMag_ViewPackingList"] C --> D["Una riga per documento"] D --> E["Utente seleziona il documento"] E --> F["Query dettaglio documento"] F --> G["vViewPackingListRestante"] G --> H["Mostra pallet ancora rilevanti per il documento"] H --> I{"Azione utente"} I -->|Prenota o s-prenota| J["sp_xExePackingListPallet"] I -->|Consulta dettaglio| H J --> K["Aggiorna IDStato delle celle del documento"] K --> L["LogPackingList"] K --> M["Refresh lista documenti"] K --> N["Refresh dettaglio documento"] ``` ## Flusso della movimentazione pallet ```{mermaid} flowchart TD A["Utente legge barcode pallet e cella"] --> B["sp_xMagGestioneMagazziniPallet"] B --> C{"Il pallet esiste gia in giacenza?"} C -->|No| D["Inserisce movimento V sulla nuova cella"] C -->|Si| E["Inserisce movimento P sulla vecchia cella"] E --> F["Inserisce movimento V sulla nuova cella"] D --> G["Aggiorna ricostruzione giacenza"] F --> G G --> H["XMag_GiacenzaPallet"] H --> I["XMag_ViewPackingList"] H --> J["vXTracciaProdotti"] I --> K["Ubicazione e stato documento"] J --> L["Dati articolo e lotto"] K --> M["Refresh interfaccia"] L --> M ``` ## Significato delle viste e delle stored procedure - `XMag_ViewPackingList`: ricostruisce il collegamento tra pallet, documento, ubicazione e stato logistico. E' la vista principale per la schermata picking list. - `vViewPackingListRestante`: mostra il dettaglio operativo del documento, cioe' le righe ancora visibili e ordinate per ubicazione. - `vXTracciaProdotti`: arricchisce il pallet con lotto, codice articolo e descrizione. - `sp_xMagGestioneMagazziniPallet`: esegue il movimento fisico del pallet nel magazzino. - `sp_xExePackingListPallet`: fa il toggle di prenotazione delle celle coinvolte in una picking list. - `sp_xExePackingListPalletPrenota`: forza la prenotazione a `IDStato = 1`. - `sp_ControllaPrenotazionePackingListPalletNew`: controlla se, dopo una movimentazione fisica, debba essere riapplicata una prenotazione automatica sulle celle coinvolte. ## Lettura pratica del sistema - Il layout risponde alla domanda: "dove sono i pallet e come sono distribuiti nello scaffale?" - La picking list risponde alla domanda: "quali pallet fanno parte di un documento e quali celle sono prenotate?" - La movimentazione pallet risponde alla domanda: "cosa succede nel tracciato quando un pallet viene caricato, spostato o scaricato?" - Le viste vengono rilette dopo l'operazione per riportare la UI in uno stato coerente con il database.