Se ti sei mai chiesto chi ha modificato un campo in un record Odoo e quando, la funzione di tracciamento è la tua risposta.
Odoo ti consente di monitorare le modifiche su campi specifici e registrare ogni modifica direttamente nel chatter del record. Questo offre ai team piena visibilità su come i dati aziendali evolvono nel tempo, senza dover costruire un sistema di audit separato.
Che tu stia configurando i campi di Odoo Studio o scrivendo un modulo Python personalizzato, comprendere come funziona il tracciamento dei campi è una parte fondamentale del lavoro con il modello di dati di Odoo. Questa guida ti accompagnerà attraverso tutto ciò che devi sapere.
Cos'è il Campo di Tracciamento in Odoo
In Odoo, il tracciamento non è un tipo di campo di per sé. È un attributo che puoi abilitare su campi esistenti, come Char, Many2one, Selection, Integer o Date. Quando il tracciamento è attivo su un campo, Odoo registra ogni cambiamento di valore nel chatter, mostrando il vecchio valore, il nuovo valore, la data e l'utente responsabile.
Questo appare nell'interfaccia come una nota di log nel thread dei messaggi del record. Ad esempio, su un lead CRM potresti vedere: "Fase cambiata da Nuovo a Qualificato", registrato automaticamente nel momento in cui un rappresentante di vendita porta avanti l'affare.
L'attributo di tracciamento è disponibile sulla maggior parte dei tipi di campo standard di Odoo e può essere abilitato tramite Odoo Studio o direttamente nel codice Python come parte di un progetto di sviluppo Odoo personalizzato.
Quali Dati Memorizza
Ogni cambiamento tracciato è memorizzato come un record mail.message collegato al documento. Il messaggio contiene:
- L'etichetta del campo che è cambiata
- Il valore precedente (prima del cambiamento)
- Il nuovo valore (dopo il cambiamento)
- Il timestamp della modifica
- L'utente che ha effettuato la modifica
Questa cronologia è sempre visibile a chiunque abbia accesso in lettura al record. Non richiede alcuna configurazione aggiuntiva oltre all'abilitazione del tracciamento sul campo.
Come Funziona il Campo
Affinché il tracciamento funzioni, il modello deve utilizzare il mixin mail.thread. Questo mixin fornisce l'infrastruttura di messaggistica e registrazione che alimenta il chatter. La maggior parte dei modelli aziendali standard di Odoo, inclusi sale.order, crm.lead, account.move e stock.picking, eredita già da mail.thread.
Quando un utente salva un record che ha campi tracciati modificati, Odoo confronta i valori vecchi e nuovi e scrive automaticamente un messaggio di log nel chatter. Non è necessaria alcuna azione aggiuntiva da parte dell'utente.
Comportamento Tecnico nell'Odoo ORM
Dal punto di vista tecnico, l'Odoo ORM intercetta le scritture a livello di modello. Quando una chiamata a write() modifica un campo tracciato, il framework cattura il valore precedente, applica la modifica e poi crea un record mail.message che descrive la differenza.
In Python, il tracciamento è abilitato aggiungendo tracking=True a una definizione di campo nella tua configurazione dei campi python di odoo:
state = fields.Selection(
[('draft', 'Bozza'), ('confirmed', 'Confermato')],
tracking=True
)
Puoi anche utilizzare un numero di priorità da 1 a 10 per controllare l'ordine di visualizzazione quando più campi tracciati cambiano nella stessa operazione di salvataggio. I numeri più bassi appaiono per primi nel messaggio di log:
partner_id = fields.Many2one('res.partner', tracking=1)
priority = fields.Selection(tracking=10)
Interazione con Altri Record
Le modifiche tracciate sono memorizzate direttamente sul record in cui si trova il campo. Non si propagano automaticamente ai record correlati. Se desideri il tracciamento attraverso modelli correlati, devi abilitarlo separatamente su ciascun modello dove è importante.
Questo è voluto. Il modello dati di Odoo mantiene la traccia di audit vicina all'oggetto che viene modificato, il che rende facile rivedere la storia senza navigare attraverso più record correlati.
Casi d'Uso Aziendali
Ecco cinque esempi pratici in cui abilitare il tracciamento dei campi aggiunge un reale valore nelle operazioni quotidiane.
1. CRM e Gestione del Pipeline di Vendita
I team di vendita devono sapere quando un lead è passato da una fase all'altra e chi ha effettuato quella modifica. Abilitare il tracciamento sul campo stage_id nel modulo CRM fornisce ai manager una cronologia completa di ogni transizione di stato.
Questo aiuta a identificare dove le trattative si bloccano, supporta le revisioni del pipeline e rende più facile formare i rappresentanti di vendita basandosi su dati reali piuttosto che sulla memoria.
2. Flussi di lavoro per l'approvazione degli acquisti e delle fatture
In contabilità e approvvigionamento, la conformità agli audit richiede spesso di sapere chi ha approvato un documento e quando. Monitorare il campo state sugli ordini di acquisto o sulle fatture dei fornitori rende questa cronologia immediatamente disponibile nella chat senza necessità di un modulo di audit separato.
Questo è particolarmente utile nelle aziende soggette a controlli finanziari o requisiti di audit interno.
3. Gestione dell'inventario e delle scorte
Quando le quantità di prodotto o le posizioni di stoccaggio cambiano inaspettatamente, monitorare i campi sui movimenti di magazzino o sui prodotti aiuta i responsabili di magazzino a identificare rapidamente la fonte delle discrepanze.
Invece di scavare tra i registri o chiedere ai colleghi, la risposta è proprio lì nella chat del record pertinente.
4. Gestione della qualità dei dati dei clienti
Se il tuo team aggiorna regolarmente i record dei clienti, puoi monitorare le modifiche ai campi critici come email, phone o pricelist_id nel modello partner. Questo mantiene una cronologia delle modifiche ai dati di contatto direttamente nel CRM, utile per i team di assistenza clienti e per le revisioni della qualità dei dati.
5. HR e registri dei dipendenti
Monitorare le modifiche a campi come posizione lavorativa, dipartimento o grado salariale nei registri dei dipendenti garantisce una cronologia trasparente di qualsiasi modifica. Questo è importante per la conformità HR in molte industrie e rende significativamente più facili da condurre gli audit interni.
Creare o Personalizzare il Campo di Tracciamento
Ci sono due modi principali per abilitare il monitoraggio su un campo in Odoo: utilizzare Odoo Studio per un approccio senza codice, oppure scrivere codice Python per un'implementazione completamente tecnica.
Utilizzare Odoo Studio
Odoo Studio rende semplice abilitare il tracciamento su campi esistenti senza scrivere alcun codice. Apri Studio sul modello pertinente, fai clic sul campo che desideri monitorare e cerca l'interruttore Traccia modifiche nel pannello delle impostazioni del campo.
Una volta abilitato, tutte le future modifiche a quel campo appariranno nel chatter. Questo è l'approccio consigliato per gli amministratori e gli utenti aziendali che desiderano aggiungere il tracciamento come parte del loro flusso di lavoro di personalizzazione di Odoo, senza coinvolgere uno sviluppatore.
La stessa interfaccia di Studio può essere utilizzata quando crei campi in Odoo da zero. Quando aggiungi un nuovo campo personalizzato tramite Studio, puoi attivare il tracciamento proprio durante la creazione del campo.
Utilizzare Python in un Modulo Personalizzato
Per gli sviluppatori che costruiscono o estendono moduli, l'attributo di tracciamento viene aggiunto direttamente alla definizione del campo nella classe del modello. Questa è una prassi standard in qualsiasi guida per sviluppatori Odoo o tutorial tecnico Odoo.
Il modello deve anche ereditare da mail.thread affinché il tracciamento abbia effetto. Ecco un esempio minimo:
from odoo import models, fields
class ProjectTask(models.Model):
_name = 'project.task'
_inherit = ['project.task', 'mail.thread']
x_client_priority = fields.Selection(
[('low', 'Basso'), ('medium', 'Medio'), ('high', 'Alto')],
string='Priorità Cliente',
tracking=True
)
Questo è uno schema tipico quando è necessario estendere un modello esistente come parte di un progetto di sviluppo Odoo. Il campo si comporta come qualsiasi altra voce di campo del database Odoo, ma ora ogni modifica al suo valore viene registrata automaticamente.
Nota Importante sui Modelli Personalizzati
Quando crei modelli personalizzati completamente nuovi, assicurati di includere _inherit = ['mail.thread', 'mail.activity.mixin'] nella definizione del tuo modello. Senza questo, l'attributo di tracciamento verrà ignorato silenziosamente e nessuna modifica verrà registrata nel chatter.
Questo è un punto che mette in difficoltà molti sviluppatori che seguono un tutorial sui campi Odoo per la prima volta. Il mixin non è facoltativo se desideri che il tracciamento funzioni.
Migliori Pratiche
La tracciatura dei campi è facile da impostare ma facile da usare in modo errato. Queste linee guida ti aiuteranno a ottenere il massimo da questa funzionalità.
Traccia solo i campi che contano
Abilitare la tracciatura su ogni campo crea rumore nella conversazione e rende più difficile trovare la cronologia rilevante. Concentrati sui campi che sono veramente utili per l'audit: stati, fasi, utenti responsabili, date chiave e valori finanziari.
Usa numeri di priorità per chiarezza
Quando più campi sono tracciati sullo stesso modello, utilizza numeri di priorità da 1 a 10 per controllare come le modifiche vengono raggruppate nel messaggio di log. Questo migliora la leggibilità nella conversazione, specialmente su modelli con molti campi tracciati.
Combina con i diritti di accesso
La tracciatura è più utile quando combinata con regole di registrazione adeguate e controlli di accesso. C'è poco valore nel mantenere una traccia di audit se tutti nel sistema possono modificarla liberamente. Sicurezza il tuo modello di dati prima di fare affidamento sulla conversazione come meccanismo di audit.
Documenta i tuoi campi tracciati
Tieni un chiaro registro di quali campi hanno la tracciatura abilitata, specialmente in progetti condivisi o multi-sviluppatore. Questo evita confusione durante le revisioni del codice e previene la doppia tracciatura accidentale dopo gli aggiornamenti dei moduli.
Testa prima di andare in produzione
Verifica sempre il comportamento della tracciatura in un ambiente di staging prima di distribuire in produzione. Alcuni tipi di campo, in particolare i campi calcolati o correlati, potrebbero comportarsi in modo diverso rispetto ai campi standard memorizzati quando è coinvolta la tracciatura.
Trappole Comuni
Questi sono gli errori che si presentano più frequentemente quando si lavora con la tracciatura dei campi in Odoo.
Dimenticare di ereditare da mail.thread
Questo è il problema più frequente. Se un modello personalizzato non eredita da mail.thread, l'attributo di tracciamento verrà silenziosamente ignorato. Non viene sollevato alcun errore e non appariranno messaggi di log nel chatter. Verifica sempre la catena di ereditarietà del modello quando il tracciamento sembra non funzionare.
Tracciamento di campi calcolati non memorizzati
I campi calcolati possono essere tracciati, ma solo se sono memorizzati utilizzando store=True. Un campo calcolato non memorizzato non ha un valore persistente nei campi del database Odoo, quindi non c'è nulla da confrontare prima e dopo una modifica. Se provi a tracciare un campo calcolato non memorizzato, il tracciamento non avrà effetto silenziosamente.
Abilitare il tracciamento su troppi campi
È allettante abilitare il tracciamento ovunque per massimizzare la trasparenza. In pratica, questo ingombra il chatter e rende davvero più difficile trovare cambiamenti significativi. Sii selettivo e concentrati su campi con reale valore di audit o operativo.
Aspettarsi il tracciamento in operazioni bulk o SQL dirette
Il tracciamento viene attivato attraverso l'ORM di Odoo quando i record vengono modificati utilizzando il metodo standard write(). Aggiornamenti SQL diretti, importazioni bulk che bypassano l'ORM o alcune chiamate API a basso livello non attiveranno il tracciamento. Se utilizzi l'API XML-RPC o operazioni batch, verifica che le scritture passino attraverso il livello ORM.
Conflitti tra definizioni di Studio e Python
Se un campo è stato originariamente creato e configurato in Odoo Studio con il tracciamento abilitato, fai attenzione quando modifichi anche lo stesso campo in un modulo Python. Definizioni in conflitto tra Studio e codice possono portare a comportamenti imprevisti durante gli aggiornamenti del modulo o le aggiornamenti del database.
FAQ
Posso tracciare un campo su qualsiasi modello in Odoo?
Solo i modelli che ereditano da mail.thread supportano il tracciamento dei campi. La maggior parte dei modelli aziendali standard in Odoo include già questo mixin, ma i modelli personalizzati devono dichiararlo esplicitamente nella loro definizione di classe.
L'attivazione del tracciamento influenzerà le prestazioni?
L'impatto è minimo per la maggior parte dei casi d'uso. Ogni modifica tracciata crea un record mail.message, che aggiunge un piccolo sovraccarico all'operazione di scrittura. Per modelli transazionali ad alto volume, sii attento a quanti campi tracci per evitare di creare un numero eccessivo di record di log.
Posso disabilitare il tracciamento su un campo senza perdere la cronologia esistente?
Sì. Disabilitare il tracciamento interrompe la registrazione di nuove modifiche, ma tutti i messaggi di log esistenti nella chat rimangono accessibili. La cronologia già catturata è preservata e non verrà eliminata.
Il tracciamento funziona sui campi Many2many?
Il tracciamento dei campi Many2many è supportato in Odoo. La chat mostra quali record sono stati aggiunti o rimossi dalla relazione, piuttosto che mostrare un valore prima e dopo. Funziona, ma tieni presente che il formato di visualizzazione è diverso da quello dei campi di valore semplici.
Posso utilizzare il tracciamento senza Odoo Studio?
Assolutamente. Il parametro tracking è un attributo standard del campo Python nel framework Odoo. Puoi attivarlo in qualsiasi modulo personalizzato senza utilizzare Studio. Studio fornisce semplicemente un'interfaccia visiva senza codice per la stessa funzionalità sottostante. Questo è un elemento standard di qualsiasi tutorial sui campi Odoo o guida per sviluppatori Odoo.
Conclusione
L'attributo di tracciamento è una di quelle funzionalità di Odoo che aggiunge silenziosamente molto valore senza richiedere molta configurazione. Attivandolo sui campi giusti, fornisci al tuo team una traccia di audit affidabile, riduci le controversie su chi ha cambiato cosa e costruisci una base per una migliore governance dei dati nella tua organizzazione.
Che tu lo configuri tramite Odoo Studio per una configurazione rapida senza codice, o lo implementi tramite un modulo Python personalizzato come parte di un progetto di sviluppo o personalizzazione Odoo più ampio, il risultato è lo stesso: piena visibilità su come i dati della tua azienda cambiano nel tempo.
La chiave è sapere dove applicarlo. Concentrati sui campi che guidano decisioni, approvazioni e responsabilità nei tuoi flussi di lavoro, e otterrai la maggior parte del valore con molto poco sforzo.
In Dasolo, aiutiamo le aziende a implementare, personalizzare e ottimizzare Odoo per adattarlo ai loro specifici processi aziendali. Che tu abbia bisogno di aiuto per progettare il tuo modello di dati, abilitare il tracciamento dei campi nei tuoi flussi di lavoro, o costruire moduli personalizzati da zero, il nostro team è qui per supportarti.
Contattaci oggi per discutere della tua implementazione di Odoo. Contattaci e scopriamo insieme il miglior approccio per il tuo progetto.