Αν ποτέ σας προβλημάτισε το ποιος και πότε άλλαξε μια τιμή σε μια εγγραφή του Odoo, το χαρακτηριστικό καταγραφής αλλαγών (tracking) είναι ακριβώς αυτό που χρειάζεστε.
Το Odoo κρατά ιστορικό για επιλεγμένα πεδία και καταγράφει κάθε τροποποίηση αυτόματα στο chatter της εγγραφής. Έτσι οι ομάδες βλέπουν πώς εξελίσσονται δεδομένα όπως πελάτες, παραγγελίες ή αποθέματα, χωρίς να χρειάζονται ξεχωριστά εργαλεία ελέγχου.
Είτε ρυθμίζετε πεδία με Odoo Studio είτε αναπτύσσετε custom modules σε Python, η γνώση του τρόπου λειτουργίας του tracking είναι απαραίτητη όταν δουλεύετε με το δεδομενικό μοντέλο του Odoo. Αυτός ο οδηγός συγκεντρώνει τα βασικά που πρέπει να ξέρετε.
Τι είναι το Tracking Field στο Odoo
Στο Odoo, το tracking δεν είναι νέος τύπος πεδίου αλλά ιδιότητα που ενεργοποιείται πάνω σε υπάρχοντα πεδία — π.χ. Char, Many2one, Selection, Integer ή Date. Μόλις ένα πεδίο επισημανθεί για tracking, το Odoo καταγράφει κάθε αλλαγή στην τιμή του στο chatter, μαζί με παλιά τιμή, νέα τιμή, ημερομηνία και χρήστη.
Η καταγραφή εμφανίζεται στο μήνυμα-νήμα της εγγραφής ως σημείωση ιστορικού. Για παράδειγμα σε ένα lead του CRM μπορεί να δείτε αυτόματα καταγεγραμμένο: «Αλλαγή σταδίου από Νέο σε Ελεγμένο», τη στιγμή που ο πωλητής μετακινεί την ευκαιρία.
Η ιδιότητα tracking είναι διαθέσιμη στα περισσότερα στάνταρ πεδία του Odoo και μπορεί να ενεργοποιηθεί είτε από το Studio είτε απευθείας στον κώδικα Python σε custom ανάπτυξη.
Τι δεδομένα αποθηκεύει
Κάθε καταγεγραμμένη αλλαγή αποθηκεύεται ως εγγραφή τύπου mail.message συνδεδεμένη με το έγγραφο. Το μήνυμα περιλαμβάνει:
- Την ετικέτα (label) του πεδίου που άλλαξε
- Την προηγούμενη τιμή (πριν την αλλαγή)
- Τη νέα τιμή (μετά την αλλαγή)
- Το χρονικό στιγμιότυπο της τροποποίησης
- Τον χρήστη που έκανε την αλλαγή
Αυτό το ιστορικό είναι ορατό σε όποιον έχει δικαίωμα ανάγνωσης στην εγγραφή και δεν απαιτεί επιπλέον ρυθμίσεις πέρα από το να έχετε ενεργοποιήσει το tracking στο πεδίο.
Πώς λειτουργεί το πεδίο tracking
Για να λειτουργήσει το tracking, το μοντέλο πρέπει να κληρονομεί το mixin mail.thread. Αυτό παρέχει την υποδομή μηνυμάτων και logging που τροφοδοτεί το chatter. Πολλά στάνταρ μοντέλα επιχειρηματικών διαδικασιών, όπως sale.order, crm.lead, account.move και stock.picking, ήδη το περιλαμβάνουν.
Όταν ένας χρήστης αποθηκεύει μια εγγραφή με αλλαγές σε παρακολουθούμενα πεδία, το Odoo συγκρίνει παλιές και νέες τιμές και γράφει αυτόματα ένα μήνυμα καταγραφής στο chatter — χωρίς να απαιτείται επιπλέον ενέργεια από τον χρήστη.
Τεχνική συμπεριφορά στο ORM του Odoo
Σε τεχνικό επίπεδο, το ORM του Odoo παρεμβαίνει στις λειτουργίες εγγραφής. Κάθε κλήση write() που τροποποιεί παρακολουθούμενο πεδίο συλλαμβάνει την προηγούμενη τιμή, εφαρμόζει την αλλαγή και δημιουργεί μια εγγραφή mail.message που περιγράφει τη διαφορά.
Στον Python κώδικα, το tracking ενεργοποιείται προσθέτοντας tracking=True στην ορισμό του πεδίου:
state = fields.Selection(
[('draft', 'Draft'), ('confirmed', 'Confirmed')],
tracking=True
)
Μπορείτε επίσης να ορίσετε έναν αριθμό προτεραιότητας από 1 έως 10 για να ελέγξετε τη σειρά με την οποία εμφανίζονται αλλαγές όταν μεταβάλλονται πολλά πεδία σε μία αποθήκευση. Οι μικρότεροι αριθμοί εμφανίζονται πρώτοι.
partner_id = fields.Many2one('res.partner', tracking=1)
priority = fields.Selection(tracking=10)
Αλληλεπίδραση με σχετιζόμενες εγγραφές
Οι καταγεγραμμένες αλλαγές αποθηκεύονται στην ίδια την εγγραφή όπου βρίσκεται το πεδίο — δεν προωθούνται αυτόματα σε σχετιζόμενα μοντέλα. Αν θέλετε ιστορικό σε διαφορετικά, σχετιζόμενα αντικείμενα, πρέπει να ενεργοποιήσετε το tracking σε κάθε μοντέλο ξεχωριστά.
Αυτό έγινε σκόπιμα: το Odoo κρατά το audit trail κοντά στο αντικείμενο που άλλαξε, ώστε να είναι εύκολη η ανάγνωση του ιστορικού χωρίς να πρέπει να περιηγείστε σε πολλαπλές σχετιζόμενες εγγραφές.
Πρακτικές επιχειρησιακές χρήσεις
Παρακάτω πέντε πρακτικά σενάρια όπου το tracking προσφέρει άμεση αξία στην καθημερινή λειτουργία.
1. CRM και διαχείριση pipeline
Οι ομάδες πωλήσεων χρειάζονται να βλέπουν πότε ένα lead άλλαξε στάδιο και ποιος το έκανε. Ενεργοποιώντας tracking στο πεδίο stage_id του CRM, οι διευθυντές έχουν πλήρη χρονογραμμή των μεταβάσεων κατάστασης.
Αυτό αποκαλύπτει πού «κολλάνε» οι ευκαιρίες, βοηθά στον έλεγχο του pipeline και επιτρέπει πιο εποικοδομητικό coaching βασισμένο σε πραγματικά δεδομένα.
2. Εγκρίσεις προμηθειών και λογιστηρίου
Σε διαδικασίες προμηθειών και λογιστικής συχνά απαιτείται να ξέρετε ποιος ενέκρινε ένα έγγραφο και πότε. Η καταγραφή του πεδίου state σε παραγγελίες αγοράς ή τιμολόγια προμηθευτών παρέχει άμεση τεκμηρίωση στον chatter χωρίς επιπλέον σύστημα ελέγχου.
Αυτό είναι κρίσιμο για εταιρείες υπό κανονιστικές απαιτήσεις ή εσωτερικούς ελέγχους.
3. Διαχείριση αποθήκης και stock
Όταν αλλάζουν ποσότητες ή τοποθεσίες αποθήκευσης απροσδόκητα, το tracking σε κινήσεις αποθέματος ή προϊόντα βοηθά τους υπευθύνους αποθήκης να εντοπίσουν τη ρίζα των αποκλίσεων γρήγορα.
Αντί να ψάχνετε σε ξεχωριστά logs ή να ρωτάτε συναδέλφους, η απάντηση βρίσκεται ήδη στο chatter της σχετικής εγγραφής.
4. Διατήρηση ποιότητας δεδομένων πελατών
Όταν η ομάδα σας ενημερώνει συχνά στοιχεία πελατών, το tracking σε πεδία όπως email, τηλέφωνο ή pricelist_id στο res.partner διατηρεί ιστορικό αλλαγών, χρήσιμο για το support και για ελέγχους ποιότητας δεδομένων.
5. Ανθρώπινο δυναμικό (HR)
Η παρακολούθηση αλλαγών σε θέσεις εργασίας, τμήματα ή μισθολογικές κλίμακες σε εγγραφές εργαζομένων εξασφαλίζει διαφάνεια για όλες τις τροποποιήσεις — σημαντικό για συμμόρφωση και εσωτερικούς ελέγχους.
Πώς να δημιουργήσετε ή να προσαρμόσετε το tracking field
Δύο τρόποι υπάρχουν για να ενεργοποιήσετε το tracking: το no-code μέσω Odoo Studio ή η τεχνική λύση με Python σε custom module.
Χρήση του Odoo Studio
Το Studio επιτρέπει σε διαχειριστές και μη προγραμματιστές να ενεργοποιήσουν tracking εύκολα: ανοίγετε το Studio στο μοντέλο, επιλέγετε το πεδίο και ενεργοποιείτε το κουμπί Track Changes στις ρυθμίσεις πεδίου.
Μόλις ενεργοποιηθεί, όλες οι μελλοντικές αλλαγές θα εμφανίζονται στο chatter. Είναι η προτεινόμενη μέθοδος για γρήγορες προσαρμογές χωρίς την εμπλοκή προγραμματιστή.
Η ίδια διεπαφή του Studio επιτρέπει να ενεργοποιήσετε tracking κατά τη δημιουργία νέου custom πεδίου, καθιστώντας εύκολη την παραμετροποίηση χωρίς κώδικα.
Χρήση Python σε custom module
Για προγραμματιστές, το tracking προστίθεται απευθείας στον ορισμό του πεδίου στην κλάση του μοντέλου — πρακτική που περιλαμβάνεται σε όλα τα τεχνικά tutorials του Odoo.
Το μοντέλο πρέπει επίσης να κληρονομεί mail.thread για το tracking να λειτουργήσει. Ένα απλό παράδειγμα δείχνει τη δομή που χρειάζεται.
from odoo import models, fields
class ProjectTask(models.Model):
_name = 'project.task'
_inherit = ['project.task', 'mail.thread']
x_client_priority = fields.Selection(
[('low', 'Low'), ('medium', 'Medium'), ('high', 'High')],
string='Client Priority',
tracking=True
)
Αυτό είναι το συνηθισμένο μοτίβο όταν επεκτείνετε υπάρχον μοντέλο σε ανάπτυξη Odoo: το πεδίο λειτουργεί κανονικά, αλλά πλέον κάθε αλλαγή του καταγράφεται αυτόματα.
Σημαντική σημείωση για custom μοντέλα
Όταν δημιουργείτε ολοκαίνουργια custom μοντέλα, φροντίστε να συμπεριλάβετε _inherit = ['mail.thread', 'mail.activity.mixin'] στη δήλωσή τους. Χωρίς αυτά, η ιδιότητα tracking θα αγνοηθεί αθόρυβα και δεν θα δημιουργούνται μηνύματα στο chatter.
Αυτό είναι ένα σημείο που μπερδεύει πολλούς προγραμματιστές στην αρχή — το mixin δεν είναι προαιρετικό για να δουλέψει το tracking.
Βέλτιστες πρακτικές
Το να ενεργοποιήσεις tracking είναι απλό, αλλά μπορεί εύκολα να χρησιμοποιηθεί λάθος. Ακολουθήστε αυτές τις οδηγίες για καλύτερα αποτελέσματα.
Καταγράψτε μόνο τα πεδία που έχουν νόημα
Αν ενεργοποιήσετε tracking σε κάθε πεδίο, το chatter θα γεμίσει με θόρυβο και το σημαντικό ιστορικό θα εξαφανιστεί. Επιλέξτε πεδία με πραγματική αξία ελέγχου: καταστάσεις, υπεύθυνοι, κρίσιμες ημερομηνίες και οικονομικές τιμές.
Χρησιμοποιήστε αρχεία προτεραιότητας για σαφήνεια
Όταν πολλά πεδία σε ένα μοντέλο παρακολουθούνται, οι προτεραιότητες (1–10) βοηθούν στην ομαδοποίηση και τη σειρά εμφάνισης των αλλαγών, βελτιώνοντας την αναγνωσιμότητα του chatter.
Συνδυάστε με δικαιώματα πρόσβασης
Το tracking είναι πιο χρήσιμο όταν συνοδεύεται από σωστούς κανόνες πρόσβασης. Δεν έχει νόημα να κρατάτε audit trail αν όλοι μπορούν ανεξέλεγκτα να αλλάζουν εγγραφές. Στεγανοποιήστε δικαιώματα πριν βασιστείτε στο chatter ως μηχανισμό ελέγχου.
Τεκμηριώστε τα παρακολουθούμενα πεδία
Κρατήστε μια ξεκάθαρη λίστα με τα πεδία που έχουν tracking, ειδικά σε projects με πολλούς developers. Αυτό αποφεύγει σύγχυση σε code reviews και προβλήματα κατά αναβαθμίσεις module.
Δοκιμάστε πριν το βγάλετε σε παραγωγή
Πάντα ελέγξτε τη συμπεριφορά του tracking σε staging. Ορισμένοι τύποι πεδίων, όπως υπολογιζόμενα ή related, μπορεί να συμπεριφέρονται διαφορετικά από αποθηκευμένα πεδία όταν παρακολουθούνται.
Συνηθισμένα λάθη
Τα πιο συχνά λάθη κατά τη χρήση του tracking στο Odoo
Ξεχνάτε να κληρονομήσετε mail.thread
Αυτό είναι το πιο κοινό πρόβλημα. Αν το custom μοντέλο δεν κληρονομεί mail.thread, το tracking θα αγνοηθεί αθόρυβα — δεν θα υπάρξει σφάλμα και δεν θα εμφανιστούν μηνύματα. Ελέγξτε πάντα την αλυσίδα κληρονομιάς του μοντέλου.
Tracking σε μη αποθηκευμένα υπολογιζόμενα πεδία
Τα υπολογιζόμενα πεδία μπορούν να παρακολουθούνται μόνο αν έχουν store=True. Ένα μη αποθηκευμένο computed πεδίο δεν έχει μόνιμη τιμή στη βάση, οπότε δεν υπάρχει σύγκριση πριν/μετά. Το tracking σε τέτοια πεδία θα είναι αθόρυβα άκαρπο.
Ενεργοποίηση tracking σε πάρα πολλά πεδία
Ο πειρασμός να ενεργοποιηθεί tracking παντού μπορεί να καταλήξει σε φασαρία στο chatter και σε δυσκολία ανάγνωσης. Να είστε εκλεκτικοί και να εστιάζετε σε πεδία με πραγματική αξία.
Περιμένετε tracking από μαζικές ή SQL ενημερώσεις
Το tracking ενεργοποιείται από το ORM κατά κλήσεις write(). Άμεσες ενημερώσεις με SQL, εισαγωγές που παρακάμπτουν το ORM ή ορισμένες χαμηλού επιπέδου κλήσεις δεν θα το πυροδοτήσουν. Σε batch operations βεβαιωθείτε ότι οι αλλαγές περνούν από το ORM.
Συγκρούσεις μεταξύ Studio και Python ορισμών
Αν ένα πεδίο δημιουργήθηκε στο Studio με tracking και μετά τροποποιηθεί στον κώδικα, οι συγκρούσεις ορισμών μπορεί να προκαλέσουν απρόβλεπτη συμπεριφορά κατά τις αναβαθμίσεις. Προσέξτε αλλαγές που γίνονται ταυτόχρονα σε Studio και modules.
Συχνές ερωτήσεις (FAQ)
Μπορώ να παρακολουθήσω πεδίο σε οποιοδήποτε μοντέλο στο Odoo;
Μόνο μοντέλα που κληρονομούν mail.thread υποστηρίζουν tracking. Τα περισσότερα στάνταρ επιχειρηματικά μοντέλα το περιλαμβάνουν, αλλά custom μοντέλα πρέπει να το δηλώνουν ρητά.
Θα επηρεάσει το performance το tracking;
Ο αντίκτυπος είναι συνήθως μικρός: κάθε αλλαγή δημιουργεί μια εγγραφή mail.message, που προσθέτει λίγο overhead στο write(). Για πολύ υψηλής συχνότητας transactional μοντέλα σκεφτείτε προσεκτικά πόσα πεδία θα παρακολουθούνται ώστε να μην γεμίσει η βάση με πάρα πολλά logs.
Μπορώ να απενεργοποιήσω το tracking χωρίς να χάσω το ιστορικό;
Ναι. Η απενεργοποίηση σταματά την καταγραφή νέων αλλαγών, αλλά όλα τα υπάρχοντα μηνύματα στο chatter διατηρούνται και παραμένουν προσβάσιμα.
Λειτουργεί το tracking σε Many2many πεδία;
Ναι, το Odoo υποστηρίζει Many2many tracking. Το chatter δείχνει ποια στοιχεία προστέθηκαν ή αφαιρέθηκαν από τη σχέση αντί για απλό before/after value — η μορφοποίηση της εμφάνισης είναι διαφορετική από τα απλά πεδία.
Μπορώ να χρησιμοποιήσω tracking χωρίς Odoo Studio;
Φυσικά. Το tracking είναι απλό attribute στα Python πεδία του Odoo και μπορείτε να το ενεργοποιήσετε σε οποιοδήποτε custom module χωρίς Studio. Το Studio απλώς παρέχει ένα γραφικό interface για την ίδια λειτουργία.
Συμπεράσματα
Το attribute tracking είναι ένα από εκείνα τα χαρακτηριστικά του Odoo που προσφέρουν μεγάλη αξία με μικρή ρύθμιση. Ενεργοποιημένο σωστά, παρέχει αξιόπιστο audit trail, μειώνει τις διαφωνίες σχετικά με ποιος έκανε τι και βελτιώνει τη διακυβέρνηση των δεδομένων.
Είτε το ρυθμίσετε γρήγορα μέσω Studio είτε το ενσωματώσετε σε custom Python modules στο πλαίσιο ενός έργου ανάπτυξης Odoo, το αποτέλεσμα είναι το ίδιο: πλήρης διαφάνεια για τις αλλαγές στα επιχειρησιακά δεδομένα.
Το κλειδί είναι να γνωρίζετε πού θα το εφαρμόσετε. Επικεντρωθείτε σε πεδία που καθορίζουν αποφάσεις, εγκρίσεις και ευθύνη στις ροές εργασίας σας, και θα πάρετε το μεγαλύτερο όφελος με το ελάχιστο κόπο.
Στην εταιρεία Dasolo βοηθάμε επιχειρήσεις να υλοποιήσουν, να προσαρμόσουν και να βελτιστοποιήσουν το Odoo ώστε να ταιριάζει στις δικές τους διαδικασίες. Είτε χρειάζεστε στήσιμο του δεδομενικού μοντέλου, ενεργοποίηση tracking σε ροές εργασίας ή ανάπτυξη custom modules, η ομάδα μας υποστηρίζει την υλοποίηση.
Επικοινωνήστε μαζί μας σήμερα για να συζητήσουμε την υλοποίηση Odoo που χρειάζεστε. Επικοινωνία και ας βρούμε μαζί την καλύτερη προσέγγιση για το project σας.