Vai al contenuto

Flusso di uscita (BDP e DDT)

Panoramica

Il flusso di uscita collega tre momenti: la creazione del BDP (buono di prelievo), il prelievo fisico dall'APP tablet e l'emissione del DDT di uscita che conferma la spedizione e scarica le giacenze dalle locazioni.

Creazione BDP (COGM58)

Con locazione di default (flusso standard)

Se locazione-default-partenza e' configurata, il sistema assegna automaticamente ogni nuovo BDP alla locazione di staging:

  1. L'operatore crea il BDP normalmente in COGM58
  2. WMSW01 viene chiamato con loc-classe = "P" e tipo-doc = "B"
  3. La locazione di default viene pre-selezionata automaticamente (nessuna interazione)
  4. Il sistema crea:
  5. dfdoctes: classe "BDP", locazione = locazione-default-partenza, stato-doc = "A", fl-lavorato = "S"
  6. dfdocrac: raccordo DM → BDP (collega al DDT di carico di origine, TASK-2678)
  7. dfdocrac: raccordo COV → BDP (collega all'ordine di vendita, se presente)
  8. Per ogni riga del BDP (esclusi servizi):
  9. dfgiacenzeloc: la giacenza nella locazione di default aumenta
  10. dfmovimentiloc: INSERT con segno "E" (il BDP "carica" la locazione di partenza)

Senza locazione di default

Se locazione-default-partenza non e' configurata, il sistema mostra la griglia di selezione locazioni e l'operatore sceglie manualmente la locazione di partenza. In questo caso, la locazione scelta viene anche associata al cliente (loc-ana).

Creazione BDP da evasione locazione (COGF64)

Da Scheda ordini distribuzione, l'operatore puo' filtrare gli ordini per una specifica locazione e creare BDP con la merce effettivamente presente in quella ubicazione:

  1. L'operatore inserisce il codice locazione nel filtro tm-locazione (F8 per lookup)
  2. Il sistema chiama verifica-locazione per validare il codice
  3. Chiama esporta-giacenze-loc: scarica da dfgiacenzeloc le giacenze disponibili (giacenza - qta-in-uscita) su un file di transito
  4. La griglia ordini mostra solo gli articoli presenti nella locazione selezionata
  5. Alla creazione BDP:
  6. Operazione blank: registra il BDP nella locazione (dfdoctes + dfdocrac con padre "LOC")
  7. scarico-locazione: scarica la giacenza dalla locazione (dfgiacenzeloc -= qta, dfmovimentiloc INSERT segno "U")

Vincolo: con gestione-tablet = "S", la creazione BDP e' consentita solo se invocata come COMPLETA-CARICO da un DDT oppure come evasione da locazione. In caso contrario il sistema mostra "Creazione BDP consentita solo se operazione di 'Completa Carico' o Evasione da Locazione...".

Spostamento fisico (APP tablet)

Dopo la creazione, il BDP e' nella locazione di default. L'operatore di magazzino, tramite l'APP tablet:

  1. Vede il BDP con stato-doc = "A" (aperto)
  2. Preleva fisicamente la merce
  3. Conferma lo spostamento, e l'APP aggiorna la locazione nel DB Frontiera

Fino a quando il BDP non viene spostato dalla locazione di default, non e' selezionabile per la creazione di DDT di uscita.

Selezione BDP per DDT di uscita (COGS61)

Quando l'operatore sceglie i BDP da includere in un DDT di uscita:

  1. Per ogni BDP nella lista, il sistema chiama verifica-locaz-bdp
  2. Cerca in dfdoctes la locazione del BDP (classe "BDP")
  3. Se la locazione coincide con locazione-default-partenza: il BDP e' ancora in transito
  4. Selezione singola: il sistema mostra "BDP non selezionabile perche' ancora su locazione transitoria!!"
  5. Selezione multipla ("seleziona tutti"): il BDP viene escluso silenziosamente

Solo i BDP che sono stati spostati alla locazione reale possono essere selezionati.

Emissione DDT di uscita (COGV50W)

Inserimento DDT con BDP

Quando si conferma un DDT di uscita con BDP collegati:

  1. Il sistema chiama ddt-uscita con loc-classe = "P" e tipo-doc = "U"
  2. Per ogni BDP collegato (via COGGENER tipo "BB"):
  3. Se il BDP e' marcato con fl-blocco = "X" (gia' usato in un DDT precedentemente cancellato): segna stato = "C" e passa al successivo senza aggiornare giacenze (evita doppio conteggio)
  4. Trova la locazione del BDP:
    • Se BDP da completamento lotti: cerca dfdoctes classe "BDP"
    • Se BDP da evasione ordini: cerca via dfdocrac classe padre "COV", figlio "BDPP" → poi dfdoctes classe "BDPP"
  5. Per ogni riga del BDP (esclusi servizi):
    • dfgiacenzeloc: giacenza -= quantita' riga (uscita dalla locazione di partenza)
    • Se la giacenza arriva a zero: fl-canc = "C" (cancellazione logica)
    • dfmovimentiloc: INSERT con segno "U" (Uscita)
  6. dfdoctes del BDP: stato = "C" (chiuso), agg-area = 1
  7. Se tutte le giacenze nella locazione si azzerano: libera la locazione (loc-ana = spaces)

Modifica DDT con nuovi BDP aggiunti

Quando si modifica un DDT di uscita aggiungendo BDP:

  1. Il sistema chiama modifica-ddt-usc
  2. Prima verifica se esistono gia' movimenti per quel BDP sul DDT (per evitare doppio conteggio)
  3. Se non ci sono movimenti precedenti: procede come per ddt-uscita

Schema riepilogativo

Creazione BDP (COGM58)
    │
    ├── dfdoctes: INSERT (classe="BDP", locazione=default, stato-doc="A")
    ├── dfdocrac: INSERT raccordi (DM→BDP, COV→BDP)
    ├── dfgiacenzeloc: += qta (la locazione di default si "carica")
    └── dfmovimentiloc: INSERT segno="E"
         │
         │ ... APP tablet sposta BDP dalla locazione di default alla reale ...
         │
         ▼
Selezione BDP (COGS61)
    │
    └── verifica-locaz-bdp: BDP in locazione default? → NON selezionabile
                            BDP in locazione reale? → OK
         │
         ▼
DDT di uscita (COGV50W)
    │
    ├── Per ogni BDP:
    │   ├── dfgiacenzeloc: -= qta (uscita dalla locazione di partenza)
    │   ├── dfmovimentiloc: INSERT segno="U"
    │   └── dfdoctes BDP: stato-doc="C" (chiuso)
    │
    └── Se giacenza locazione=0 → locazione liberata

Vedi anche