Εισαγωγή
Στο Odoo, κάθε τύπος επιχειρησιακής πληροφορίας —πελάτες, προμηθευτές, παραγγελίες— αποτυπώνεται ως εγγραφή μέσα σε ένα μοντέλο. Τα μοντέλα καθορίζουν τη δομή και τον τρόπο αποθήκευσης στα δεδομένα της βάσης, έτσι ώστε οι εφαρμογές να ξέρουν πού να βρουν και πώς να διαχειριστούν κάθε κομμάτι πληροφορίας.
Η κατανόηση των μοντέλων είναι απαραίτητη τόσο για προγραμματιστές όσο και για λειτουργικούς συμβούλους. Τα μοντέλα αποτελούν το θεμέλιο της δομής δεδομένων στο Odoo: ορίζουν πεδία, σχέσεις και επιχειρησιακούς κανόνες που καθοδηγούν τη συμπεριφορά του συστήματος.
Το κείμενο αυτό επικεντρώνεται σε ένα από τα πιο κρίσιμα μοντέλα του Odoo: το res.partner. Ανεξαρτήτως αν φτιάχνετε προσαρμοσμένα modules, κάνετε συνδέσεις με άλλα συστήματα ή ρυθμίζετε ροές εργασίας, πιθανότατα θα περάσετε συχνά από αυτό το μοντέλο.
Τι είναι το μοντέλο res.partner
Το res.partner αποθηκεύει τα στοιχεία επαφών: ιδιώτες, επιχειρήσεις, πελάτες και προμηθευτές. Είναι το κεντρικό σημείο όπου συγκεντρώνονται όλα τα δεδομένα για τα «μέρη» με τα οποία συναλλάσσεται μια εταιρεία.
Αυτό το μοντέλο χρησιμοποιείται παντού —Πωλήσεις, CRM, Λογιστήριο, Προμήθειες, ηλεκτρονικό εμπόριο— όλοι αναφέρονται στο res.partner. Κάθε φορά που δημιουργείτε έναν πελάτη, έναν lead ή έναν προμηθευτή, το Odoo συχνά δημιουργεί ή συνδέει μια εγγραφή res.partner.
Ο πυρήνας του μοντέλου βρίσκεται στο base module και τα υπόλοιπα modules το επεκτείνουν με κληρονομικότητα μοντέλου. Το CRM προσθέτει πεδία που αφορούν leads, το Accounting προσθέτει όρους πληρωμής και πιστωτικά όρια —κάθε module συμπληρώνει ό,τι χρειάζεται χωρίς να αναπαράγει τη βασική δομή.
Κύρια πεδία στο μοντέλο
Παρακάτω βρίσκονται τα πιο χρήσιμα και συχνά χρησιμοποιούμενα πεδία του res.partner. Κατανοώντας τα θα μπορείτε να χειρίζεστε επαφές και συνεργάτες με τρόπο πιο αποτελεσματικό και αξιόπιστο.
1. name
Τύπος: Char. Το πεδίο που εμφανίζει το όνομα του εγγράφου —επωνυμία για εταιρείες, πλήρες όνομα για φυσικά πρόσωπα. Λειτουργεί ως κύριος αναγνωριστικός δείκτης σε λίστες και φόρμες.
2. create_date
Τύπος: Datetime. Καταγράφει πότε δημιουργήθηκε η εγγραφή. Διαχειρίζεται αυτόματα από το Odoo και είναι χρήσιμο για εκθέσεις και έλεγχο αλλαγών.
3. write_date
Τύπος: Datetime. Καταγράφει την τελευταία τροποποίηση της εγγραφής. Βοηθά στον εντοπισμό πρόσφατων ενημερώσεων και στην ανάλυση ιστορικού.
4. email
Τύπος: Char. Κύρια διεύθυνση email για επικοινωνία, τιμολόγηση και πρόσβαση πελατειακού portal. Το Odoo πραγματοποιεί βασικούς ελέγχους μορφής όταν είναι δυνατόν.
5. phone
Τύπος: Char. Κύριος τηλεφωνικός αριθμός —εμφανίζεται στις φόρμες επαφής και χρησιμοποιείται σε ροές επικοινωνίας.
6. mobile
Τύπος: Char. Αριθμός κινητού, χρήσιμος για άμεσες ειδοποιήσεις ή SMS όταν διαφέρει από το σταθερό.
7. street
Τύπος: Char. Πρώτη γραμμή διεύθυνσης —χρησιμοποιείται στα έγγραφα και στις φόρμες ως μέρος του μπλοκ διεύθυνσης.
8. street2
Τύπος: Char. Δεύτερη γραμμή διεύθυνσης —για διαμερίσματα, όροφο, επιπλέον πληροφορίες τοποθεσίας.
9. city
Τύπος: Char. Πόλη ή κωμόπολη —η μορφοποίηση διευθύνσεων μπορεί να διαφέρει ανά χώρα.
10. zip
Τύπος: Char. Ταχυδρομικός κώδικας —χρησιμοποιείται για έλεγχο διευθύνσεων και υπολογισμό αποστολών.
11. state_id
Τύπος: Many2one (res.country.state). Περιφέρεια ή νομός —το domain φιλτράρει τις επιλογές ανάλογα με τη χώρα. Ορισμένες χώρες δεν χρησιμοποιούν τέτοιου είδους υποδιαιρέσεις.
12. country_id
Τύπος: Many2one (res.country). Χώρα —επηρεάζει τη μορφοποίηση της διεύθυνσης, τους φορολογικούς κανόνες και την τοπική ρύθμιση.
13. is_company
Τύπος: Boolean. Σημαίνει εάν η εγγραφή αντιστοιχεί σε εταιρεία ή σε φυσικό πρόσωπο. Οι εταιρείες μπορούν να έχουν συνδεδεμένες επαφές (child contacts).
14. parent_id
Τύπος: Many2one (res.partner). Συνδέει μια επαφή με την εταιρεία-γονέα της, επιτρέποντας ιεραρχία εταιρείας–επαφών και κληρονομήσεις πεδίων.
15. child_ids
Τύπος: One2many (res.partner). Η αντίστροφη σχέση του parent_id —λίστα επαφών που ανήκουν σε μια εταιρεία, χρήσιμη για περιήγηση και διαχείριση ομάδων επαφών.
16. company_id
Τύπος: Many2one (res.company). Σε περιβάλλον πολυεπιχειρησιακό, δείχνει σε ποια εταιρεία του Odoo ανήκει η εγγραφή —επηρεάζει ορατότητα και δικαιώματα.
17. vat
Τύπος: Char. ΑΦΜ ή φορολογικός αριθμός —ελέγχεται κατά χώρα. Σημαντικό για τιμολόγηση και συμμόρφωση. Σημειώστε ότι υπάρχουν ειδικοί κανόνες για μη υποκείμενους σε ΦΠΑ συναλλασσόμενους.
18. customer_rank
Τύπος: Integer. Δείκτης που αυξάνεται όταν η επαφή έχει πωλήσεις —χρήσιμο για φιλτράρισμα και προτεραιοποίηση πελατών σε αναφορές.
19. supplier_rank
Τύπος: Integer. Δείκτης που δείχνει δραστηριότητα ως προμηθευτής —αυξάνεται με παραγγελίες αγοράς ή λογαριασμούς.
20. user_id
Τύπος: Many2one (res.users). Ο υπεύθυνος χρήστης ή πωλητής που χειρίζεται την επαφή —χρησιμοποιείται σε CRM και ανάθεση δραστηριοτήτων.
21. type
Τύπος: Selection. Ο τύπος διεύθυνσης για child contacts: Contact, Invoice, Delivery ή Other —προσδιορίζει ποια διεύθυνση θα εμφανίζεται σε έγγραφα.
22. ref
Τύπος: Char. Εσωτερικός κωδικός ή αναφορά —χρήσιμος για αντιστοιχίσεις με εξωτερικά συστήματα ή custom αρχειοθέτηση.
23. website
Τύπος: Char. Διεύθυνση ιστότοπου —εμφανίζεται στη φόρμα επαφής και στο e‑commerce περιβάλλον.
24. comment
Τύπος: Html. Εσωτερικές σημειώσεις —ορατές στους χρήστες του συστήματος, συχνά για οδηγίες πωλήσεων ή ειδικές παρατηρήσεις.
25. active
Τύπος: Boolean. Σημάδι «απόσυρσης»· όταν είναι False η εγγραφή αρχειοθετείται και δεν εμφανίζεται στις προεπιλεγμένες λίστες χωρίς να διαγράφεται φυσικά.
26. lang
Τύπος: Selection. Προτιμώμενη γλώσσα —τα έγγραφα και τα emails προς τον συνεργάτη μπορούν να μεταφραστούν ανάλογα. Συνήθως κληρονομείται από τον γονέα.
27. image_1920
Τύπος: Binary. Λογότυπο ή φωτογραφία του συνεργάτη —χρησιμοποιείται σε φόρμες, αναφορές και στον ιστότοπο.
28. category_id
Τύπος: Many2many (res.partner.category). Ετικέτες/κατηγορίες —χρήσιμες για segmentation, marketing και φιλτραρίσματα, ευέλικτες για προσαρμογή στη στρατηγική σας.
Πώς χρησιμοποιείται αυτό το μοντέλο στις επιχειρησιακές ροές εργασίας
1. Πωλήσεις και CRM
Όταν ένας πωλητής φτιάχνει προσφορά, επιλέγει πελάτη από το res.partner. Η ίδια εγγραφή μπορεί να είναι το lead, η ευκαιρία και η παραγγελία —οι δείκτες όπως customer_rank και το user_id επηρεάζουν αναφορές και κατανομή ευθυνών.
2. Τιμολόγηση
Τα τιμολόγια αναφέρονται σε partner για τη διεύθυνση χρέωσης. Το πεδίο vat επηρεάζει τους φορολογικούς υπολογισμούς. Στο partner μπορούν επίσης να αποθηκευτούν όροι πληρωμής και πιστωτικά όρια.
3. Προμήθειες και Προμηθευτές
Οι παραγγελίες αγοράς και οι προμηθευτές συνδέονται με res.partner. Το supplier_rank βοηθά στην αναγνώριση ενεργών προμηθευτών και το buyer_id αναθέτει υπεύθυνους για τη διαχείριση προμηθειών.
4. Ηλεκτρονικό εμπόριο και Portal
Ένας επισκέπτης που εγγράφεται στο site δημιουργεί partner εγγραφή —αυτή χρησιμοποιείται για παραγγελίες, προσφορές και πρόσβαση στο portal. Όλες οι διευθύνσεις και τα στοιχεία προέρχονται από το partner record.
5. Πολυεπιχειρησιακότητα και Ενοποίηση
Σε multi‑company περιβάλλοντα, το ίδιο νομικό πρόσωπο μπορεί να εμφανίζεται ως ξεχωριστές εγγραφές ανά εταιρεία. Το company_id και οι κανόνες διαμοιρασμού ορίζουν ποια δεδομένα μοιράζονται μεταξύ εταιρειών.
Πώς επεκτείνουν οι προγραμματιστές αυτό το μοντέλο
Οι προγραμματιστές επεκτείνουν το res.partner με διάφορους τρόπους, χρησιμοποιώντας κυρίως την κληρονομικότητα μοντέλου του Odoo.
Κληρονομικότητα μοντέλου
Στο Python module σας ορίζετε _inherit = 'res.partner' για να προσθέσετε πεδία ή να αλλάξετε συμπεριφορά. Αυτή η τεχνική κρατά τις τροποποιήσεις οργανωμένες μέσα σε ξεχωριστό module, διευκολύνοντας συντηρήσεις και αναβαθμίσεις.
Προσθήκη πεδίων
Δημιουργήστε νέα πεδία στο κληρονομημένο μοντέλο χρησιμοποιώντας κατάλληλους τύπους: Char, Many2one, Boolean, Integer, Text, Selection. Σε περιβάλλον multi‑company σκεφτείτε ποια πεδία πρέπει να είναι company‑dependent.
Επεκτάσεις σε Python
Μπορείτε να υπερφορτώσετε μεθόδους όπως create, write ή unlink για να ενσωματώσετε επιχειρησιακή λογική —μην ξεχνάτε να καλείτε super() και να διαχειρίζεστε σωστά τους υπολογιζόμενους πεδίου και τις εξαρτήσεις τους.
Odoo Studio
Το Odoo Studio είναι εργαλείο για γρήγορες προσαρμογές χωρίς κώδικα —βολικό για ταχείς αλλαγές. Ωστόσο για σύνθετη λογική ή οργανωμένες αναβαθμίσεις, τα custom modules προσφέρουν μεγαλύτερη ασφάλεια και ιχνηλασιμότητα.
Καλές πρακτικές
- Δημιουργήστε σωστά την ιεραρχία εταιρείας–επαφών: πρώτα η εταιρεία, μετά οι σχετικές επαφές με parent_id.
- Ορίστε σωστά το country_id ώστε να εφαρμόζονται σωστά οι κανόνες μορφοποίησης διευθύνσεων και οι φορολογικές ρυθμίσεις.
- Χρησιμοποιήστε το commercial_partner_id όταν χρειάζεστε την κορυφαία οντότητα για ομαδοποιήσεις, πιστωτικές ρυθμίσεις ή αναφορές.
- Σε API ενσωματώσεις προτιμήστε XML‑RPC ή JSON‑RPC. Το res.partner είναι προσβάσιμο εξωτερικά —χαρτογραφήστε εξωτερικά IDs με φροντίδα για αποφυγή διπλοεγγραφών.
- Για προσαρμοσμένα πεδία χρησιμοποιήστε πρόθεμα
x_ή το πρόθεμα του module σας ώστε να μειώσετε τις συγκρούσεις σε μελλοντικές εκδόσεις του Odoo.
Συνηθισμένα λάθη
- Δημιουργία διπλών εγγραφών αντί για έλεγχο ύπαρξης. Χρησιμοποιήστε πεδία όπως
email_normalizedήrefγια deduplication πριν από την εισαγωγή νέων partners. - Μπερδεύετε τα parent_id με company_id. Το parent_id συνδέει επαφή με εταιρεία· το company_id αφορά την εταιρεία μέσα σε multi‑company περιβάλλον.
- Ξεχνάτε να ορίζετε το type για child contacts. Για να εμφανίζονται σωστά οι διευθύνσεις σε τιμολόγια και αποστολές, πρέπει να έχουν το σωστό τύπο (Invoice, Delivery κ.λπ.).
- Υπερφορτώνετε βασικές μεθόδους χωρίς να καλείτε
super(). Αυτό μπορεί να σπάσει λειτουργίες άλλων modules ή να δημιουργήσει προβλήματα σε αναβαθμίσεις. - Προσθέτετε απαιτούμενα custom πεδία χωρίς προεπιλεγμένες τιμές —τυχόν υπάρχουσες εγγραφές θα αποτύχουν σε έλεγχο εγκυρότητας κατά την αναβάθμιση.
Συμπέρασμα
Το res.partner είναι ο κορμός των επαφών στο Odoo: αποθηκεύει πελάτες, προμηθευτές και εταιρικά μέρη. Η γνώση των πεδίων του και του τρόπου που επεκτείνονται τα modules είναι κρίσιμη για σωστή παραμετροποίηση, προσαρμογή και ενσωμάτωση του Odoo.
Είτε χαρτογραφείτε επιχειρησιακές ροές ως λειτουργικός σύμβουλος είτε χτίζετε modules ως προγραμματιστής, η βαθιά κατανόηση του res.partner θα σας γλυτώσει χρόνο και θα μειώσει λάθη στην παραγωγή.
Χρειάζεστε βοήθεια με την εφαρμογή Odoo;
Η Dasolo προσφέρει υπηρεσίες υλοποίησης, προσαρμογής και βελτιστοποίησης Odoo. Ειδικευόμαστε σε API ενσωματώσεις και ανάπτυξη custom modules, με εμπειρία στη δομή δεδομένων του Odoo και κρίσιμα μοντέλα όπως το res.partner.
Αν χρειάζεστε υποστήριξη για υλοποίηση, προσαρμοσμένα modules ή ενσωματώσεις, μπορούμε να αναλάβουμε το έργο σας. Κλείστε μια επίδειξη για να συζητήσουμε το πρότζεκτ σας.