Passa al contenuto

Modello stock.picking: come funzionano trasferimenti e magazzino in Odoo

Guida completa al modello centrale di trasferimento di Odoo per la gestione di magazzino e inventario
10 marzo 2026 di
Modello stock.picking: come funzionano trasferimenti e magazzino in Odoo
Dasolo
| Ancora nessun commento

Introduzione


In Odoo i dati aziendali non stanno sparsi: sono organizzati in modelli. Ogni documento operativo — dall’ordine di vendita al trasferimento di magazzino — è memorizzato in un modello che definisce campi, relazioni e regole. Pensalo come lo scheletro dei dati dell’applicazione.


Conoscere i modelli è fondamentale sia per chi configura Odoo sia per chi sviluppa. Sono la base dell’architettura: stabiliscono come vengono rappresentate le informazioni, come si collegano tra loro e quali comportamenti automatici applicare.


Qui ci concentriamo su uno dei modelli più importanti del modulo Inventario: stock.picking. Se lavori su flussi di magazzino, integrazioni esterne o personalizzazioni legate ai movimenti, questo modello sarà spesso al centro delle tue modifiche.

Cos’è il modello stock.picking


Il modello stock.picking rappresenta i trasferimenti di merce in Odoo. Ogni record descrive uno spostamento di prodotti da una posizione a un’altra ed è il punto di riferimento per tracciare lo stato delle operazioni di magazzino.


Nel modulo Inventario lo stock.picking è usato per ricevute, spedizioni e trasferimenti interni. Confermare una consegna, ricevere la merce da un fornitore o spostare scorte tra depositi crea o aggiorna record di questo tipo.


Il modello viene definito nel modulo stock e poi arricchito da altri moduli tramite l’ereditarietà di modello. Il modulo Vendite aggiunge campi legati a consegna, il modulo Acquisti gestisce le ricevute, la Produzione estende i flussi per materie prime e prodotti finiti: ciascun modulo integra ciò che serve senza duplicare la struttura centrale.


stock.picking eredita funzionalità per la comunicazione e le attività (mail.thread e mail.activity.mixin). Questo permette di avere lo storico delle modifiche, il chatter e attività pianificate direttamente sul trasferimento.

Campi principali del modello


Di seguito trovi i campi chiave che incontrerai nello stock.picking. Capirli ti aiuta a modellare processi, sviluppare integrazioni e risolvere problemi operativi.


1. name

Tipo: Char. Identificativo del trasferimento, di solito generato automaticamente da una sequenza (es. WH/OUT/00001). Appare in cima al documento e funge da riferimento principale per il picking.


2. origin

Tipo: Char. Riferimento al documento sorgente (es. nome dell’ordine di vendita o d’acquisto). Serve per ricostruire la provenienza del trasferimento durante audit e report.


3. state

Tipo: Selection. Stato del trasferimento (es. draft, waiting, ready, done, cancelled). Lo stato guida le azioni disponibili e deriva dai movimenti associati.


4. picking_type_id

Tipo: Many2one (stock.picking.type). Definisce il tipo di operazione: ingresso, uscita o trasferimento interno. È obbligatorio e imposta le posizioni di origine/destinazione predefinite.


5. move_ids

Tipo: One2many (stock.move). Le righe di movimento: ogni record indica prodotto e quantità da spostare. Sono il cuore del trasferimento e sui loro vincoli opera la logica di riserva e disponibilità.


6. move_line_ids

Tipo: One2many (stock.move.line). Le operazioni dettagliate: lotti, serie e posizioni precise vengono gestite qui. Essenziali per picking, imballaggio e validazione con tracciabilità.


7. location_id

Tipo: Many2one (stock.location). Posizione di origine: da dove vengono prelevati i prodotti. Campo obbligatorio; per le spedizioni coincide spesso con il magazzino.


8. location_dest_id

Tipo: Many2one (stock.location). Posizione di destinazione: dove arrivano i prodotti. Campo obbligatorio; per le ricevute è di solito la posizione di stock.


9. partner_id

Tipo: Many2one (res.partner). Il contatto collegato: cliente per le uscite, fornitore per gli ingressi. Serve per indirizzi, documenti e integrazioni con corrieri.


10. scheduled_date

Tipo: Datetime. Data/ora pianificata per il trasferimento. Utile per pianificazione e priorità: influisce sulla preparazione e sulle prenotazioni delle scorte.


11. date_deadline

Tipo: Datetime. Termine o scadenza del trasferimento, spesso derivata dall’ordine di vendita o acquisto. Usata per segnalare ritardi e rispettare le promesse al cliente.


12. date_done

Tipo: Datetime. Data di validazione (o cancellazione). Campo di sola lettura impostato automaticamente quando il picking viene finalizzato.


13. priority

Tipo: Selection. Livello di priorità: ordini urgenti vengono riservati prima. Utile per gestire le code di evasione.


14. move_type

Tipo: Selection. Politica di spedizione: consegna parziale appena possibile oppure solo quando tutte le righe sono pronte. Influisce sul comportamento di processamento.


15. user_id

Tipo: Many2one (res.users). Utente responsabile del picking. Serve per assegnazioni e bilanciamento dei carichi; di default è l’utente che crea il record.


16. company_id

Tipo: Many2one (res.company). Società di appartenenza, normalmente ereditata dal picking type. Rilevante in ambienti multi-company per isolare dati e politiche.


17. group_id

Tipo: Many2one (procurement.group). Gruppo di approvvigionamento: collega movimenti correlati (es. più pickings derivanti dallo stesso ordine).


18. backorder_id

Tipo: Many2one (stock.picking). Se un trasferimento viene parzialmente validato, il backorder creato per il resto rimanda al picking originale tramite questo campo.


19. backorder_ids

Tipo: One2many (stock.picking). Elenco dei backorder generati da questo picking; utile quando la validazione avviene per parti e il resto resta da processare.


20. return_id

Tipo: Many2one (stock.picking). Se il picking è stato creato come reso, questo campo collega al trasferimento originale e supporta i flussi di ritorno merce.


21. note

Tipo: Html. Note interne visibili agli operatori di magazzino: istruzioni speciali, condizioni di handling o informazioni operative.


22. signature

Tipo: Image. Firma raccolta alla convalida della consegna, usata come prova di avvenuta ricezione e memorizzata come allegato.


23. is_signed

Tipo: Boolean. Valore calcolato dalla presenza della firma; indica se la consegna è stata firmata.


24. owner_id

Tipo: Many2one (res.partner). Proprietario della merce al momento della validazione: utile per gestione di conto deposito o beni di terzi.


25. package_level_ids

Tipo: One2many (stock.package_level). Livelli di imballaggio quando si utilizza il flusso 'put in pack': raggruppa le righe di movimento in pacchi per la spedizione.


26. create_date

Tipo: Datetime. Data di creazione del record. Gestita automaticamente dal framework di Odoo.


27. write_date

Tipo: Datetime. Data dell’ultima modifica del record. Aggiornata automaticamente dal sistema.


28. active

Tipo: Boolean. Flag per soft-delete: se False il record è archiviato ma non cancellato fisicamente.

Come questo modello si integra nei processi aziendali


1. Vendite e spedizioni

Alla conferma di un ordine di vendita Odoo crea un picking di uscita collegato all’ordine (origin). Gli operatori di magazzino eseguono picking e imballaggio, quindi validano il trasferimento: lo stato evolve da 'draft' a 'ready' e infine 'done'.


2. Acquisti e ricevute

Quando un ordine di acquisto viene confermato si genera un picking in ingresso. La merce passa dalla posizione del fornitore al magazzino: il partner_id indica il fornitore e la validazione aggiorna le quantità di magazzino.


3. Trasferimenti interni

Spostare scorte tra depositi o ubicazioni interne genera pickings con picking_type impostato su 'internal'. Sia origine che destinazione sono posizioni interne del magazzino.


4. Resi e backorder

Per un reso di vendita viene creato un picking di ritorno che punta al picking originale tramite return_id. Nei casi di validazione parziale, i restanti articoli vengono spostati in backorder collegati al picking iniziale.


5. Produzione e fabbrica

Gli ordini di produzione generano pickings per il prelievo delle materie prime e per l’ingresso dei prodotti finiti. Il modulo MR P estende stock.picking per gestire questi scenari di consumo e rientro.

In che modo gli sviluppatori estendono questo modello


Gli sviluppatori possono estendere stock.picking con diversi approcci; l’ereditarietà del modello è la tecnica principale in Odoo.


Ereditarietà del modello

Dichiarando _inherit = 'stock.picking' si estende il modello esistente: si possono aggiungere campi, sovrascrivere metodi o aggiungere vincoli. Questa pratica mantiene le modifiche nel tuo modulo, facilitando aggiornamenti e manutenzione.


Aggiungere campi

Nei moduli ereditati definisci i campi necessari usando i tipi appropriati (Char, Many2one, Boolean, Integer, Text, Selection). Valuta la dipendenza da company per campi che devono comportarsi diversamente in contesti multi-company.


Estensioni Python

Sovrascrivi metodi come button_validate, action_assign o _create_backorder per inserire logica personalizzata. Richiama sempre super() quando necessario e fai attenzione alle transizioni di stato e alla creazione dei movimenti.


Odoo Studio

Odoo Studio consente di aggiungere campi e personalizzazioni senza codice: ottimo per modifiche rapide come etichette o campi informativi. Per logiche complesse o integrazioni con corrieri è però preferibile sviluppare moduli dedicati.

Buone pratiche


  • Imposta sempre il picking_type_id quando crei pickings manualmente: determina le ubicazioni predefinite e il comportamento del trasferimento.
  • Usa il campo origin per mantenere la tracciabilità verso il documento sorgente: semplifica report, debug e riconciliazioni.
  • Nelle integrazioni via API il modello stock.picking è accessibile: crea movimenti attraverso la relazione move_ids. Evita di creare pickings vuoti senza movimenti, perché non rappresentano trasferimenti reali.
  • Utilizza scheduled_date per la pianificazione operativa: influisce su prenotazioni e priorità di evasione.
  • Per i campi custom usa il prefisso x_ o un prefisso legato al tuo modulo per evitare collisioni con futuri campi standard di Odoo.

Errori comuni


  • Creare pickings senza specificare il picking_type_id: questo provoca assegnazioni di ubicazioni predefinite errate e comportamenti inattesi.
  • Modificare move_ids dopo la conferma senza conoscere la macchina a stati: le transizioni possono essere complesse e rompere le regole di riserva.
  • Dimenticare di impostare partner_id per le consegne: questo impedisce la stampa di documenti corretti e blocca integrazioni con corrieri.
  • Sovrascrivere button_validate senza chiamare super(): può interrompere la creazione di backorder e rompere l’integrazione con altri moduli.
  • Dare per scontato che move_ids e move_line_ids siano sempre sincronizzati: le move_line vengono generate in fase di riserva o quando si usa il picking dettagliato, quindi il loro stato può differire.

Conclusione


Il modello stock.picking è il fulcro dell’inventario in Odoo: raccoglie spedizioni, ricevute e trasferimenti. Conoscere i suoi campi e le estensioni ti aiuta a configurare, personalizzare e integrare Odoo con sicurezza.


Che tu sia un consulente funzionale a mappare processi di magazzino o uno sviluppatore che costruisce moduli personalizzati, padroneggiare stock.picking riduce errori e tempi di implementazione.

Pronto a ottimizzare il tuo magazzino Odoo


Dasolo supporta le aziende nell’implementazione, personalizzazione e ottimizzazione di Odoo. Ci concentriamo su integrazioni API e sviluppo su misura, con esperienza consolidata nella struttura dati di Odoo e modelli come stock.picking.


Se ti serve supporto per l’implementazione di Odoo, moduli di magazzino personalizzati o integrazioni, possiamo aiutarti. Prenota una demo per discutere il tuo progetto.

Modello stock.picking: come funzionano trasferimenti e magazzino in Odoo
Dasolo 10 marzo 2026
Condividi articolo
Accedi per lasciare un commento