Passa al contenuto principale

Gestione e movimentazione stock

Overview

SOH3 gestisce a livello di database:

  • Quantità disponibile (on hand)
  • Quantità logica disponibile per la vendita (available)
  • Transazioni sullo stock (ogni movimento è registrato)

La quantità impegnata (booked) viene calcolata a runtime.


Event-Driven Stock Management

Lo stock è gestito tramite event listener su:

  • Order
  • OrderItem

Ogni variazione di stato viene intercettata dai listener che agiscono di conseguenza. La gestione è centralizzata, riducendo il rischio di rotture di stock.

Tutte le transazioni avvengono a livello di listener su ProductStock, garantendo la tracciabilità completa di ogni movimento.


Flusso con disponibilità logica

Ordine con 1 prodotto, quantità 2:


Flusso senza disponibilità logica

Ordine con 1 prodotto, quantità 2:


ProductStock come DataObject

SOH3 utilizza il dataObject ProductStock per gestire le informazioni stock a livello di magazzino e prodotto.

Motivazioni rispetto alla gestione precedente (SOH2):

  • Centralizzazione dello stock come entità nobile (non più relazione)
  • Supporto al versioning
  • Gestione visuale in griglia tramite interfaccia dei dataObject

Flussi di modifica Stock e prenotazioni

Inserimento nuovo ordine

Alla creazione di un nuovo ordine:

  • Il listener su OrderItem individua i magazzini associati al prodotto.
  • Se useLogicalStock è attivo sul SalesChannel, viene decrementata la quantità logica, altrimenti quella fisica.
  • Se l’ordine è creato in stato canceled o fulfilled, non vengono associate quantità o magazzini.

Invio fulfillment al canale

Se useLogicalStock è disattivato, nessuna operazione viene eseguita (la quantità fisica è già stata scalata).

Al salvataggio dell’ordine:

  • Il listener rileva le modifiche tra i nuovi e vecchi CarrierInfo
  • Decrementa la quantità fisica in base alle spedizioni effettuate

Modifica associazione magazzini

Modificando la quantità o i magazzini:

  • Le prenotazioni sono aggiornate automaticamente
  • Non è possibile modificare quantità su ordini spediti o cancellati

Modifica associazione prodotto

Se cambia il prodotto associato a un OrderItem:

  • La quantità viene restituita al prodotto precedente
  • La nuova quantità è prenotata sul nuovo prodotto

Eliminazione OrderItem

Eliminando un OrderItem (o eliminando l’ordine padre):

  • Se l’ordine non è fulfillato o cancellato, le quantità prenotate vengono rimesse a stock

Cancellazione ordine

Quando un ordine passa a stato canceled:

  • Se non è stato fulfillato:
  • I magazzini sono disassociati
  • Il sistema effettua il restock automatico

Errore durante l’import ordine

In caso di errore durante l’import:

  • Il rollback ripristina o elimina gli OrderItem
  • I listener aggiornano coerentemente lo stock