Εισαγωγή
Στο Odoo, τα μοντέλα ορίζουν πώς δομούνται και αποθηκεύονται τα δεδομένα στη βάση δεδομένων. Κάθε κομμάτι επιχειρηματικών δεδομένων με το οποίο εργάζεστε, από παραγγελίες αγοράς έως τιμολόγια και αποθέματα, ζει σε ένα μοντέλο.
Η κατανόηση των μοντέλων του Odoo είναι απαραίτητη τόσο για τους προγραμματιστές όσο και για τους λειτουργικούς συμβούλους. Τα μοντέλα είναι η βάση της αρχιτεκτονικής δεδομένων του Odoo. Ορίζουν τα πεδία του Odoo, τις σχέσεις και τη επιχειρηματική λογική.
Αυτό το άρθρο εστιάζει σε ένα από τα πιο σημαντικά μοντέλα στο Odoo: το purchase.order. Είτε δημιουργείτε προσαρμοσμένα modules, είτε ενσωματώνετε εξωτερικά συστήματα, είτε ρυθμίζετε ροές εργασίας προμηθειών, θα εργαστείτε με αυτό το μοντέλο.
Τι είναι το μοντέλο purchase.order
Το μοντέλο purchase.order αντιπροσωπεύει τις παραγγελίες αγοράς και τα αιτήματα προσφοράς (RFQs) στο Odoo. Είναι το κεντρικό σημείο όπου καταγράφονται όλες οι συναλλαγές προμηθειών πριν γίνουν παραλαβές ή τιμολόγια προμηθευτών.
Αυτό το μοντέλο στο Odoo χρησιμοποιείται από το module Αγορών. Όταν ένας αγοραστής δημιουργεί ένα RFQ, δημιουργεί μια εγγραφή purchase.order. Όταν ο προμηθευτής επιβεβαιώνει ή ο αγοραστής εγκρίνει, η παραγγελία μετακινείται από το προσχέδιο στην επιβεβαίωση. Το ίδιο μοντέλο στο Odoo κρατά τόσο τα προσχέδια RFQs όσο και τις επιβεβαιωμένες παραγγελίες αγοράς. Το πεδίο κατάσταση παρακολουθεί τον κύκλο ζωής.
Άλλα modules επεκτείνουν αυτό το μοντέλο μέσω κληρονομικότητας μοντέλων Odoo. Το Inventory προσθέτει λογική παραλαβής και παραλαβής. Η Λογιστική προσθέτει πεδία τιμολογίων προμηθευτών. Η Παραγωγή μπορεί να δημιουργήσει παραγγελίες αγοράς από τιμολόγια υλικών. Κάθε module προσθέτει ό,τι χρειάζεται χωρίς να επαναλαμβάνει τη βασική δομή.
Κύρια πεδία στο μοντέλο
Ακολουθούν τα πιο σημαντικά πεδία Odoo στο μοντέλο purchase.order. Η κατανόηση αυτών θα σας βοηθήσει να εργαστείτε αποτελεσματικά με τις παραγγελίες αγοράς.
1. name
Τύπος: Char. Αυτό το πεδίο αποθηκεύει την αναφορά παραγγελίας (π.χ. PO00042). Συνήθως δημιουργείται αυτόματα και εμφανίζεται σε λίστες και σε έγγραφα. Είναι ο κύριος αναγνωριστικός αριθμός για την παραγγελία αγοράς.
2. state
Τύπος: Selection. Παρακολουθεί τον κύκλο ζωής της παραγγελίας. Τιμές: draft (RFQ), sent (απεστάλη στον προμηθευτή), to approve (σε αναμονή έγκρισης), purchase (επιβεβαιωμένη), done (πλήρως παραληφθείσα και τιμολογημένη), cancel (ακυρωμένη). Η κατάσταση καθορίζει ποιες ενέργειες είναι διαθέσιμες.
3. partner_id
Τύπος: Many2one (res.partner). Ο προμηθευτής ή προμηθευτής. Απαιτείται. Αυτός είναι ο κύριος επαφή ή εταιρεία για την παραγγελία. Χρησιμοποιείται για όλη τη λογική και αναφορά που σχετίζεται με τους προμηθευτές.
4. partner_ref
Τύπος: Char. Η αναφορά του προμηθευτή ή ο αριθμός παραγγελίας προμηθευτή. Χρησιμοποιείται όταν ο προμηθευτής παρέχει τη δική του αναφορά παραγγελίας. Εμφανίζεται σε έγγραφα και βοηθά στην αντιστοίχιση παραλαβών και τιμολογίων.
5. date_order
Τύπος: Ημερομηνία και ώρα. Η ημερομηνία παραγγελίας. Για προσχέδια παραγγελιών: ημερομηνία δημιουργίας. Για επιβεβαιωμένες παραγγελίες: ημερομηνία επιβεβαίωσης. Χρησιμοποιείται για αναφορές, ταξινόμηση και ως προεπιλεγμένη αναμενόμενη ημερομηνία για τις γραμμές παραγγελίας.
6. date_approve
Τύπος: Ημερομηνία και ώρα. Η ημερομηνία έγκρισης ή επιβεβαίωσης. Ορίζεται όταν η παραγγελία μεταβαίνει σε κατάσταση αγοράς. Μόνο για ανάγνωση. Χρησιμοποιείται για αναφορές και ιχνηλασίες ελέγχου.
7. order_line
Τύπος: One2many (purchase.order.line). Οι γραμμές παραγγελίας. Κάθε γραμμή περιέχει προϊόν, ποσότητα, τιμή και φόρο. Αυτή είναι η βασική λεπτομέρεια της παραγγελίας αγοράς.
8. amount_untaxed
Τύπος: Float. Το υποσύνολο πριν από τον φόρο. Υπολογίζεται από τις γραμμές παραγγελίας. Χρησιμοποιείται για αναφορές και εμφάνιση.
9. amount_tax
Τύπος: Float. Το συνολικό ποσό φόρου. Υπολογίζεται από τις γραμμές παραγγελίας με βάση τη ρύθμιση φόρου. Εμφανίζεται στην παραγγελία και στον λογαριασμό προμηθευτή.
10. amount_total
Τύπος: Float. Το συνολικό ποσό συμπεριλαμβανομένου του φόρου. Το κύριο ποσό για τιμολόγηση και αναφορές.
11. currency_id
Τύπος: Many2one (res.currency). Το νόμισμα. Συνήθως κληρονομείται από την εταιρεία ή τον προμηθευτή. Όλα τα νομισματικά πεδία χρησιμοποιούν αυτό το νόμισμα.
12. origin
Τύπος: Char. Το έγγραφο προέλευσης. Για παράδειγμα, όταν μια παραγγελία δημιουργείται από μια παραγγελία πώλησης (dropship) ή παραγγελία παραγωγής, το όνομα προέλευσης αποθηκεύεται εδώ. Χρησιμοποιείται για ιχνηλασία.
13. dest_address_id
Τύπος: Many2one (res.partner). Η διεύθυνση παράδοσης. Αν δεν έχει οριστεί, προεπιλέγεται η διεύθυνση της εταιρείας. Χρησιμοποιείται για dropshipping όταν τα αγαθά πηγαίνουν απευθείας στον πελάτη.
14. priority
Τύπος: Selection. Προτεραιότητα παραγγελίας: Κανονική ή Επείγουσα. Χρησιμοποιείται για ταξινόμηση και επισήμανση. Οι επείγουσες παραγγελίες μπορεί να λάβουν ειδική μεταχείριση στις ροές εργασίας.
15. invoice_status
Τύπος: Selection. Παρακολουθεί την τιμολόγηση: όχι (δεν έχει τιμολογηθεί), προς τιμολόγηση (έτοιμο προς τιμολόγηση), τιμολογημένο (πλήρως τιμολογημένο). Καθορίζει την ορατότητα της ενέργειας Δημιουργία Λογαριασμού.
16. invoice_count
Τύπος: Integer. Αριθμός σχετικών τιμολογίων προμηθευτών. Υπολογίζεται. Χρησιμοποιείται για εμφάνιση και για άνοιγμα της λίστας των τιμολογίων.
17. invoice_ids
Τύπος: One2many (account.move). Οι σχετικές τιμολόγια προμηθευτών. Συνδέει τις παραγγελίες αγοράς με τη λογιστική. Χρησιμοποιείται για τριπλό έλεγχο και παρακολούθηση πληρωμών.
18. picking_ids
Τύπος: One2many (stock.picking). Οι σχετικές παραγγελίες παράδοσης ή παραλαβές. Χρησιμοποιείται όταν η ενότητα Αγορών είναι εγκατεστημένη με το Απόθεμα.
19. picking_count
Τύπος: Ακέραιος. Αριθμός σχετικών παραλαβών. Υπολογίζεται. Χρησιμοποιείται για εμφάνιση και για άνοιγμα της λίστας παραλαβών.
20. create_date
Τύπος: Ημερομηνία και ώρα. Αποθηκεύει την ημερομηνία και ώρα που δημιουργήθηκε η εγγραφή. Διαχειρίζεται αυτόματα από το Odoo. Χρήσιμο για αναφορές και έλεγχο.
21. write_date
Τύπος: Ημερομηνία και ώρα. Αποθηκεύει την ημερομηνία και ώρα της τελευταίας τροποποίησης. Επίσης διαχειρίζεται αυτόματα. Βοηθά στην παρακολούθηση του πότε ενημερώθηκαν τελευταία τα δεδομένα.
22. notes
Τύπος: Κείμενο. Όροι και προϋποθέσεις ή εσωτερικές σημειώσεις. Μπορεί να εμφανίζεται στην παραγγελία αγοράς. Χρησιμοποιείται για ειδικές οδηγίες προς τον προμηθευτή.
23. company_id
Τύπος: Many2one (res.company). Σε ρυθμίσεις πολλών εταιρειών, αυτό υποδεικνύει σε ποια εταιρεία Odoo ανήκει η παραγγελία. Επηρεάζει την ορατότητα και την πρόσβαση στα αρχεία.
24. user_id
Τύπος: Many2one (res.users). Ο αγοραστής ή ο υπεύθυνος χρήστης. Χρησιμοποιείται για ροές έγκρισης και ανάθεση δραστηριοτήτων.
25. fiscal_position_id
Τύπος: Many2one (account.fiscal.position). Η φορολογική θέση για την αντιστοίχιση φόρων. Εφαρμόζεται όταν ο προμηθευτής βρίσκεται σε διαφορετική χώρα ή έχει ειδικό φορολογικό καθεστώς.
26. payment_term_id
Τύπος: Many2one (account.payment.term). Όροι πληρωμής (π.χ. Net 30, 50% προκαταβολή). Χρησιμοποιείται κατά τη δημιουργία τιμολογίων προμηθευτών.
27. display_name
Τύπος: Char. Υπολογιζόμενο όνομα εμφάνισης. Συνδυάζει το όνομα με πληροφορίες προμηθευτή. Χρησιμοποιείται σε αναπτυσσόμενα μενού many2one και αποτελέσματα αναζήτησης. Μόνο για ανάγνωση.
28. active
Τύπος: Boolean. Σημείο μαλακής διαγραφής. Όταν είναι False, το αρχείο αρχειοθετείται και κρύβεται από τις προεπιλεγμένες προβολές. Οι παραγγελίες αγοράς δεν διαγράφονται φυσικά για να διατηρηθεί η ιστορία.
Πώς χρησιμοποιείται αυτό το μοντέλο σε επιχειρηματικές ροές εργασίας
1. RFQ προς Παραγγελία
Ο αγοραστής δημιουργεί ένα αίτημα προσφοράς (πρόχειρο). Προσθέτει γραμμές, στέλνει στον προμηθευτή. Ο προμηθευτής επιβεβαιώνει ή ο αγοραστής επιβεβαιώνει χειροκίνητα. Η παραγγελία επιβεβαιώνεται (κατάσταση = αγορά). Μπορούν να δημιουργηθούν παραλαβές και τιμολόγια προμηθευτή.
2. Παραλαβή Προμηθευτή
Όταν φτάσουν τα αγαθά, ο χρήστης δημιουργεί μια παραλαβή από την παραγγελία αγοράς. Οι picking_ids συνδέονται. Οι ποσότητες που παραλήφθηκαν ενημερώνουν το απόθεμα. Οι τιμές προϊόντων ενημερώνονται από την τιμή αγοράς.
3. Τιμολόγιο Προμηθευτή
Από μια επιβεβαιωμένη παραγγελία, οι χρήστες δημιουργούν τιμολόγια προμηθευτή. Οι γραμμές τιμολογίου αντλούνται από τις γραμμές παραγγελίας. Το payment_term_id και το fiscal_position_id προέρχονται από την παραγγελία. Το invoice_status παρακολουθεί την πρόοδο.
4. Dropshipping
Όταν μια παραγγελία πώλησης ενεργοποιεί μια αγορά, η προέλευση συνδέεται πίσω στην πώληση. Το dest_address_id ορίζεται στη διεύθυνση του πελάτη ώστε ο προμηθευτής να αποστέλλει απευθείας. Το μοντέλο purchase.order είναι η γέφυρα μεταξύ πωλήσεων και προμηθειών.
5. Κατασκευή και MRP
Όταν μια παραγγελία κατασκευής χρειάζεται εξαρτήματα, μπορεί να δημιουργήσει παραγγελίες αγοράς για πρώτες ύλες. Το πεδίο προέλευσης συνδέεται με την παραγγελία κατασκευής. Αυτό το μοντέλο είναι κεντρικό στον κύκλο προμήθειας-πληρωμής.
Πώς οι προγραμματιστές επεκτείνουν αυτό το μοντέλο
Οι προγραμματιστές επεκτείνουν το purchase.order χρησιμοποιώντας διάφορα μοτίβα. Η κληρονομικότητα μοντέλων Odoo είναι ο κύριος μηχανισμός.
Κληρονομικότητα Μοντέλων
Χρησιμοποιήστε _inherit = 'purchase.order' για να επεκτείνετε το μοντέλο. Προσθέστε νέα πεδία Odoo, παρακάμψτε μεθόδους ή προσθέστε περιορισμούς. Το μοντέλο κληρονομιάς στο Odoo διατηρεί τις αλλαγές σας σε ένα ξεχωριστό module για εύκολες αναβαθμίσεις.
Προσθήκη Πεδία
Ορίστε νέα πεδία Odoo στο κληρονομημένο μοντέλο σας. Χρησιμοποιήστε τον σωστό τύπο πεδίου: Char, Many2one, Boolean, Integer, Text, Selection. Σκεφτείτε τα πεδία που εξαρτώνται από την εταιρεία για πολυεταιρικές ρυθμίσεις.
Επεκτάσεις Python
Παρακάμψτε button_confirm, create ή write για να προσθέσετε λογική. Χρησιμοποιήστε super() για να καλέσετε το αρχικό. Να είστε προσεκτικοί με τα υπολογισμένα πεδία και τις εξαρτήσεις τους.
Odoo Studio
Το Odoo Studio σας επιτρέπει να προσθέτετε πεδία χωρίς κώδικα. Καλή επιλογή για γρήγορες προσαρμογές. Για πολύπλοκη λογική ή αναβαθμίσεις, τα προσαρμοσμένα modules είναι πιο συντηρήσιμα. Το API μοντέλο στο Odoo (purchase.order) είναι πλήρως εκτεθειμένο μέσω XML-RPC και JSON-RPC για ενσωματώσεις.
Καλές πρακτικές
- Χρησιμοποιήστε την σωστή κατάσταση για κάθε στάδιο. Μην παραλείπετε καταστάσεις ή παρακάμπτετε τη λογική επιβεβαίωσης.
- Ορίστε το partner_ref όταν ο προμηθευτής παρέχει μια αναφορά. Βοηθά στην αντιστοίχιση παραλαβών και τιμολογίων.
- Χρησιμοποιήστε το origin για να εντοπίσετε την πηγή των παραγγελιών αγοράς. Απαραίτητο για dropshipping και κατασκευή.
- Όταν δημιουργείτε ενσωματώσεις API, χρησιμοποιήστε το API XML-RPC ή JSON-RPC. Το μοντέλο purchase.order είναι πλήρως εκτεθειμένο. Χάρτης εξωτερικών ID προσεκτικά.
- Για προσαρμοσμένα πεδία, χρησιμοποιήστε το
x_πρόθεμα ή ένα πρόθεμα module για να αποφύγετε συγκρούσεις με μελλοντικές εκδόσεις Odoo.
Κοινά λάθη
- Τροποποίηση επιβεβαιωμένων παραγγελιών χωρίς έλεγχο της κατάστασης. Οι επιβεβαιωμένες παραγγελίες έχουν περιορισμένα πεδία. Δημιουργήστε μια νέα παραγγελία ή χρησιμοποιήστε τη σωστή ροή εργασίας.
- Ανακατεύοντας το partner_id και το dest_address_id. Το partner_id είναι ο προμηθευτής; το dest_address_id είναι ο προορισμός των αγαθών (για dropshipping).
- Αναίρεση του button_confirm χωρίς να καλέσετε το super(). Αυτό μπορεί να σπάσει άλλα modules ή μελλοντικές αναβαθμίσεις.
- Προσθήκη απαιτούμενων προσαρμοσμένων πεδίων χωρίς προεπιλογές. Οι υπάρχουσες παραγγελίες θα αποτύχουν στην επικύρωση κατά την αναβάθμιση.
- Ξεχνώντας να ορίσετε το currency_id όταν ασχολείστε με προμηθευτές πολλαπλών νομισμάτων. Λάθος νόμισμα μπορεί να οδηγήσει σε λανθασμένα κόστη και τιμολόγηση.
Συμπέρασμα
Το μοντέλο purchase.order είναι κεντρικό για τις αγορές του Odoo. Αποθηκεύει RFQs και επιβεβαιωμένες παραγγελίες αγοράς. Η κατανόηση των πεδίων του Odoo και του τρόπου που τα modules το επεκτείνουν θα σας βοηθήσει να διαμορφώσετε, να προσαρμόσετε και να ενσωματώσετε το Odoo αποτελεσματικά.
Είτε είστε λειτουργικός σύμβουλος που χαρτογραφεί τις διαδικασίες προμηθειών είτε προγραμματιστής που κατασκευάζει προσαρμοσμένα modules, μια καλή κατανόηση του purchase.order θα σας εξοικονομήσει χρόνο και θα αποτρέψει λάθη.
Χρειάζεστε βοήθεια με την υλοποίηση του Odoo σας;
Η Dasolo βοηθά τις εταιρείες να υλοποιήσουν, να προσαρμόσουν και να βελτιστοποιήσουν το Odoo. Ειδικευόμαστε σε API integrations και ανάπτυξη Odoo. Η ομάδα μας έχει βαθιά εμπειρία με την αρχιτεκτονική δεδομένων του Odoo και μοντέλα όπως το purchase.order.
Αν χρειάζεστε βοήθεια με την υλοποίηση του Odoo, προσαρμοσμένα modules ή ενσωματώσεις, είμαστε εδώ για να βοηθήσουμε. Κλείστε μια επίδειξη για να συζητήσουμε το έργο σας.