Stock Picking Auto Replenish
Attiva automaticamente il rifornimento quando la Verifica disponibilità trova
stock insufficiente — con due modalità selezionabili: MTS autonoma (stock move di domanda
invariata) o MTS + MTO con collegamento fornitura-domanda tramite
move_orig_ids / move_dest_ids.
Panoramica
Quando un operatore clicca Verifica disponibilità su un picking, Odoo tenta di prenotare la merce dall'ubicazione di origine. Se il prodotto non è disponibile (totalmente o parzialmente), questo modulo attiva automaticamente un rifornimento per la quantità mancante tramite il meccanismo standard di Odoo — ordine di acquisto, ordine di produzione o trasferimento interno, a seconda dei percorsi configurati sul prodotto.
| Modalità | Stock move di domanda | Collegamento fornitura | Prevenzione duplicati |
|---|---|---|---|
| MTS | Invariata (make_to_stock) |
Nessuno — fornitura autonoma | virtual_available all'ubicazione di domanda |
| MTS + MTO (default) | Impostata a make_to_order |
Collegata tramite move_orig_ids |
Somma dei move_orig_ids esistenti |
Funzionalità
- Priorità stock locale — la merce già presente all'ubicazione di origine viene prenotata immediatamente e la fornitura in attesa viene ridotta o annullata; i picking annullati ricevono una nota nel chatter
- Rifornimento automatico alla verifica disponibilità — nessun intervento manuale necessario
- Due modalità di rifornimento — MTS (autonoma, stock move invariata) o MTS + MTO (collegata, domanda transita in In attesa di altra operazione); selezionabile per tipo di operazione, sovrascrivibile per picking
- Prevenzione duplicati — MTS usa
virtual_availableall'ubicazione; MTS + MTO usa imove_orig_idsesistenti; rieseguire la verifica disponibilità non crea mai ordini duplicati - Gestione disponibilità parziale — viene approvvigionata solo la quantità netta mancante
- Controllo propagazione gruppo di approvvigionamento — impedisce opzionalmente ai documenti di fornitura di ereditare il gruppo del picking di domanda
- Attivazione selettiva — abilitato per picking; il tipo di operazione funge da template di default; l'operatore può sovrascrivere tutti i flag sul singolo picking
- Indipendente dal percorso — funziona con Acquista, Produci o qualsiasi percorso personalizzato
- Note nel chatter — MTS + MTO pubblica link ai documenti creati; MTS pubblica un riepilogo prodotti/quantità
Configurazione
Tutti i flag sono disponibili a due livelli. Vai su Magazzino → Configurazione → Tipi di operazione, apri il tipo desiderato e trova i flag nella scheda Generale dopo Crea backorder. Sui singoli picking gli stessi flag appaiono nella scheda Informazioni aggiuntive nel gruppo Rifornimento. I campi sono nascosti per i tipi In entrata e in sola lettura quando il picking è completato o annullato.
1 — Consuma stock locale alla verifica disponibilità
Se abilitato, i movimenti in attesa di fornitura vengono ispezionati prima: se il prodotto è già disponibile all'ubicazione di origine, viene prenotato dallo stock locale e la fornitura in attesa viene ridotta o annullata di conseguenza.
2 — Rifornimento automatico alla verifica disponibilità
Se abilitato, viene attivato un nuovo approvvigionamento per qualsiasi quantità che non è stata prenotata (né dallo stock locale né dalla fornitura esistente). Viene eseguito dopo il passaggio dello stock locale, quindi le due opzioni si completano naturalmente. Assicurarsi che il prodotto abbia almeno un percorso di approvvigionamento configurato (Acquista, Produci o personalizzato). Se non viene trovata nessuna regola applicabile, la riga viene saltata silenziosamente.
3 — Modalità rifornimento
Visibile solo quando Rifornimento automatico alla verifica disponibilità è abilitato.
| Valore | Comportamento |
|---|---|
| MTS |
La stock move di domanda resta make_to_stock — nessuno split, nessun cambio
di stato. La fornitura viene creata come documento autonomo. Il modulo usa
virtual_available all'ubicazione di domanda (previsione netta: giacenza +
in entrata − in uscita) per determinare quanto richiedere, tenendo conto della fornitura
già in transito. Quando la fornitura arriva e lo stock è disponibile, la stock move di
domanda può essere prenotata completamente alla prossima verifica disponibilità.
|
| MTS + MTO (default) |
La stock move di domanda (o una porzione splittata se parzialmente prenotata) viene
impostata a make_to_order. _prepare_procurement_values()
popola automaticamente move_dest_ids, collegando fornitura e domanda
esattamente come nel flusso MTO nativo di Odoo. Dopo un'esecuzione riuscita,
_recompute_state() transita la stock move di domanda in
In attesa di altra operazione. Una nota nel chatter include link
cliccabili a ogni documento creato.
|
4 — Propaga il gruppo di approvvigionamento nel rifornimento
Visibile solo quando Rifornimento automatico alla verifica disponibilità è abilitato.
Se spuntato (default), il documento di fornitura — trasferimento, ordine di acquisto o ordine
di produzione — eredita il procurement.group del picking di domanda.
Se non spuntato, il documento di fornitura viene creato senza gruppo di approvvigionamento
e appare autonomo nelle viste di tracciabilità.
In modalità MTS + MTO il collegamento funzionale (move_orig_ids /
move_dest_ids) viene sempre mantenuto indipendentemente da questa impostazione.
Tutti i flag devono essere attivi solo sul picking di origine (o sul suo tipo di operazione). Non sono necessari sul tipo di operazione che gestisce il rifornimento stesso (es. Entrate, Produzione).
Come funziona
① Passaggio stock locale
Viene eseguito prima della prenotazione standard per i movimenti in attesa di fornitura:
- Per ogni movimento con fornitura in attesa: calcola qty_to_pull = min(disponibile all'ubicazione di origine, quantità in fornitura, quantità ancora necessaria). Lo stock disponibile viene tracciato in memoria per evitare che due movimenti dello stesso prodotto rivendichino le stesse unità.
- Se
qty_to_pull > 0: riduce i movimenti di fornitura di quella quantità, annullando quelli che arrivano a zero - Se un picking di fornitura ha tutti i movimenti annullati (nessuno completato): viene annullato e viene pubblicata una nota nel suo chatter
- Se tutta la fornitura è stata eliminata: il movimento di domanda transita da in attesa → confermato automaticamente
- Se rimane fornitura parziale: viene splittato il movimento di domanda — l'originale mantiene i link di fornitura ridotti (in attesa), la nuova porzione viene impostata a
make_to_stocke confermata (prenotabile immediatamente)
② Prenotazione standard
La action_assign standard di Odoo prenota lo stock disponibile per tutti i
movimenti confermati, inclusi gli split make-to-stock creati nel passaggio ①.
③ Passaggio rifornimento automatico — modalità MTS
Per ogni movimento ancora non completamente prenotato:
- Viene letto il
virtual_availableall'ubicazione di domanda (in UdM base del prodotto). Un dizionario di aggiustamento in memoria accumula le quantità già richieste durante la stessa chiamata, prevenendo doppie richieste quando più movimenti condividono lo stesso prodotto e ubicazione. - qty_to_request = min(qty_mancante, max(−virtual_available_aggiustato, 0))
- Se
qty_to_request ≤ 0→ già coperto dallo stock esistente o in transito, skip procurement.group.run()→ OdA / OdP / trasferimento interno autonomo (nessun linkmove_dest_ids)- Nota pubblicata nel chatter con elenco prodotti e quantità
③ Passaggio rifornimento automatico — modalità MTS + MTO
Per ogni movimento ancora non completamente prenotato:
- qty_to_order = (domanda − prenotato) − Σ
move_orig_idsnon annullati - Se
qty_to_order ≤ 0o nessuna regola di approvvigionamento trovata → nulla accade - Se il movimento è parzialmente prenotato: viene splittato — l'originale mantiene la prenotazione, il movimento splittato riceve
qty_to_order - Imposta
procure_method = 'make_to_order'→_prepare_procurement_values()collegamove_dest_idsal movimento di domanda procurement.group.run()→ OdA / OdP / trasferimento interno (collegato)_recompute_state()chiamato esplicitamente → movimento di domanda transita da confermato a In attesa di altra operazione- Nota pubblicata nel chatter con link cliccabili ai documenti creati
Changelog
| Version | Descrizione |
|---|---|
| 18.0.1.3.0 | Aggiunta selezione Modalità rifornimento (MTS / MTS + MTO): la modalità MTS attiva un approvvigionamento autonomo usando virtual_available all'ubicazione di domanda senza modificare i movimenti di domanda; MTS + MTO mantiene il comportamento originale con collegamento fornitura-domanda |
| 18.0.1.2.1 | Fix: esclusione dei movimenti assigned dal ciclo di rifornimento automatico per evitare approvvigionamenti su movimenti già completamente prenotati |
| 18.0.1.2.0 | Aggiunto flag Propaga il gruppo di approvvigionamento nel rifornimento: impedisce opzionalmente ai documenti di fornitura di ereditare il gruppo del picking di domanda |
| 18.0.1.1.0 | Fix stato movimento di domanda dopo rifornimento automatico (confermato → in attesa); fix doppio approvvigionamento su movimenti splittati; fix consumo eccessivo nello step stock locale; fix gestione ProcurementException con savepoint; miglioramenti viste |
| 18.0.1.0.0 | Rilascio iniziale |
Crediti
Autori
- STeSI Consulting
Collaboratori
- Francesco Moccia — moccia.f@stesi.consulting