Εισαγωγή
Στο Odoo, τα μοντέλα καθορίζουν πώς δομούνται και αποθηκεύονται τα δεδομένα στη βάση δεδομένων. Κάθε κομμάτι επιχειρηματικών δεδομένων που επεξεργάζεστε, από παραγγελίες πωλήσεων μέχρι τιμολόγια και εγγραφές ημερολογίου, ζει σε ένα μοντέλο.
Η κατανόηση των μοντέλων Odoo είναι απαραίτητη τόσο για τους προγραμματιστές όσο και για τους λειτουργικούς συμβούλους. Τα μοντέλα είναι η βάση της αρχιτεκτονικής δεδομένων του Odoo. Καθορίζουν τα πεδία του Odoo, τις σχέσεις και τη επιχειρηματική λογική.
Αυτό το άρθρο εστιάζει σε ένα από τα πιο σημαντικά μοντέλα στο Odoo Accounting: account.move. Είτε δημιουργείτε προσαρμοσμένες αναφορές, είτε ενσωματώνετε εξωτερικά συστήματα, είτε διαμορφώνετε ροές εργασίας τιμολόγησης, θα εργαστείτε με αυτό το μοντέλο.
Τι είναι το μοντέλο account.move
Το μοντέλο account.move αντιπροσωπεύει τις καταχωρίσεις ημερολογίου στο Odoo. Στο Odoo 13 και μετά, ενοποιήθηκε αυτό που ήταν προηγουμένως ξεχωριστά μοντέλα: τιμολόγια πελατών, λογαριασμούς προμηθευτών, πιστωτικά σημειώματα και χειροκίνητες καταχωρίσεις ημερολογίου. Σήμερα, όλα αυτά βρίσκονται στο account.move.
Αυτό το μοντέλο στο Odoo χρησιμοποιείται από το module Λογιστικής. Είναι ο γονέας του account.move.line, το οποίο περιέχει τις ατομικές γραμμές χρέωσης και πίστωσης. Κάθε τιμολόγιο, λογαριασμός ή καταχώριση ημερολογίου είναι μία εγγραφή account.move με μία ή περισσότερες γραμμές.
Το μοντέλο ορίζεται στο module λογαριασμού. Άλλα modules το επεκτείνουν μέσω κληρονομικότητας μοντέλων του Odoo. Το module Πωλήσεων προσθέτει τη δημιουργία τιμολογίων από παραγγελίες. Το module Αγορών προσθέτει τη δημιουργία λογαριασμών. Κάθε module προσθέτει ό,τι χρειάζεται χωρίς να επαναλαμβάνει τη βασική δομή.
Κύρια πεδία στο μοντέλο
Ακολουθούν τα πιο σημαντικά πεδία του Odoo στο μοντέλο account.move. Η κατανόηση αυτών θα σας βοηθήσει να εργαστείτε αποτελεσματικά με τιμολόγια, λογαριασμούς και καταχωρίσεις ημερολογίου.
1. name
Τύπος: Char. Αυτό το πεδίο αποθηκεύει τον αριθμό ή το όνομα της καταχώρισης ημερολογίου. Συνήθως δημιουργείται αυτόματα από τη σειρά του ημερολογίου. Εμφανίζεται σε λίστες και σε εκτυπωμένα έγγραφα.
2. move_type
Τύπος: Επιλογή. Καθορίζει τον τύπο της κίνησης: entry (χειροκίνητη καταχώριση ημερολογίου), out_invoice (τιμολόγιο πελάτη), out_refund (πιστωτικό σημείωμα πελάτη), in_invoice (λογαριασμός προμηθευτή), in_refund (πιστωτικό σημείωμα προμηθευτή). Αυτό το πεδίο καθοδηγεί ποιες προβολές και ροές εργασίας εφαρμόζονται.
3. state
Τύπος: Επιλογή. Η κατάσταση ροής εργασίας: προσχέδιο, αναρτημένο ή ακυρωμένο. Οι προσχέδιο κινήσεις μπορούν να επεξεργαστούν. Οι αναρτημένες κινήσεις είναι κλειδωμένες και επηρεάζουν το γενικό λογιστικό βιβλίο. Η ακύρωση αντιστρέφει την επίδραση.
4. date
Τύπος: Ημερομηνία. Η ημερομηνία του εγγράφου. Χρησιμοποιείται για αναφορές, γήρανση και κλείσιμο περιόδων. Για τα τιμολόγια, αυτή είναι συχνά η ημερομηνία του τιμολογίου.
5. journal_id
Τύπος: Many2one (account.journal). Το ημερολόγιο στο οποίο ανήκει αυτή η κίνηση. Τα ημερολόγια Πωλήσεων, Αγορών, Τραπεζών και Διάφορα έχουν το καθένα το δικό του. Το ημερολόγιο καθορίζει τη σειρά και τους προεπιλεγμένους λογαριασμούς.
6. company_id
Τύπος: Many2one (res.company). Σε ρυθμίσεις πολλών εταιρειών, αυτό υποδεικνύει σε ποια εταιρεία ανήκει η κίνηση. Επηρεάζει την ορατότητα των εγγραφών και τη συγκέντρωση.
7. partner_id
Τύπος: Many2one (res.partner). Ο πελάτης ή προμηθευτής. Απαιτείται για τιμολόγια και λογαριασμούς. Χρησιμοποιείται για αναφορές ηλικίας, αντιστοίχιση πληρωμών και κεφαλίδες εγγράφων.
8. currency_id
Τύπος: Many2one (res.currency). Το νόμισμα της κίνησης. Τα ποσά αποθηκεύονται σε αυτό το νόμισμα. Οι κινήσεις πολλών νομισμάτων χρησιμοποιούν το νόμισμα της εταιρείας για αναφορές.
9. amount_total
Τύπος: Νομισματικό. Το συνολικό ποσό της κίνησης. Για τα τιμολόγια, αυτό είναι το ποσό που οφείλεται. Υπολογίζεται από τις γραμμές.
10. amount_residual
Τύπος: Νομισματικό. Το απλήρωτο ποσό. Για τα πληρωμένα τιμολόγια, αυτό είναι μηδέν. Χρησιμοποιείται για ροές εργασίας ηλικίας και πληρωμών.
11. κατάσταση_πληρωμής
Τύπος: Επιλογή. Κατάσταση πληρωμής: όχι_πληρωμένο, σε_πληρωμή, πληρωμένο, μερικώς, αντεστραμμένο ή κληρονομικό_τιμολόγιο. Οδηγεί υπενθυμίσεις πληρωμής και αναφορές.
12. γραμμές_ids
Τύπος: One2many (account.move.line). Οι γραμμές της καταχώρισης ημερολογίου. Κάθε γραμμή έχει έναν λογαριασμό, χρέωση και πίστωση. Το άθροισμα των χρεώσεων πρέπει να ισούται με το άθροισμα των πιστώσεων.
13. γραμμές_τιμολογίου_ids
Τύπος: One2many (account.move.line). Για τιμολόγια και λογαριασμούς, αυτές είναι οι γραμμές προϊόντων ή υπηρεσιών. Κάθε γραμμή παράγει μία ή περισσότερες γραμμές καταχώρισης ημερολογίου όταν δημοσιευτεί.
14. ημερομηνία_τιμολογίου
Τύπος: Ημερομηνία. Η ημερομηνία του τιμολογίου. Χρησιμοποιείται για τιμολόγηση και φορολογικές περιόδους. Μπορεί να διαφέρει από την ημερομηνία κίνησης σε ορισμένες ρυθμίσεις.
15. ημερομηνία_λήξης_τιμολογίου
Τύπος: Ημερομηνία. Η ημερομηνία λήξης πληρωμής. Υπολογίζεται από τους όρους πληρωμής ή ορίζεται χειροκίνητα. Χρησιμοποιείται για την ηλικία και την υπενθύμιση.
16. αναφορά
Τύπος: Char. Εξωτερική αναφορά ή αριθμός λογαριασμού προμηθευτή. Χρήσιμο για την αντιστοίχιση πληρωμών και την συμφιλίωση με εξωτερικά έγγραφα.
17. invoice_origin
Τύπος: Char. Το πηγαίο έγγραφο. Για τιμολόγια από παραγγελίες πωλήσεων, αποθηκεύει τον αριθμό της παραγγελίας (SO). Διευκολύνει την ανιχνευσιμότητα από την παραγγελία στο τιμολόγιο.
18. create_date
Τύπος: Datetime. Αποθηκεύει την ημερομηνία και ώρα κατά την οποία δημιουργήθηκε η εγγραφή. Διαχειρίζεται αυτόματα από το Odoo.
19. write_date
Τύπος: Datetime. Αποθηκεύει την ημερομηνία και ώρα της τελευταίας τροποποίησης. Επίσης διαχειρίζεται αυτόματα.
20. narration
Τύπος: Κείμενο. Εσωτερικές σημειώσεις ή σημείωμα. Εμφανίζεται σε εκτυπωμένα ημερολόγια. Δεν εμφανίζεται στους πελάτες στα τιμολόγια.
21. fiscal_position_id
Τύπος: Many2one (account.fiscal.position). Η φορολογική θέση για τους φορολογικούς κανόνες. Καθορίζει ποιους φόρους ισχύουν με βάση τον συνεργάτη και τη χώρα.
22. invoice_payment_term_id
Τύπος: Many2one (account.payment.term). Όροι πληρωμής (π.χ. Net 30). Χρησιμοποιείται για τον υπολογισμό της ημερομηνίας λήξης του τιμολογίου και για την κατανομή πληρωμών.
23. invoice_user_id
Τύπος: Many2one (res.users). Ο πωλητής ή ο υπεύθυνος χρήστης για το τιμολόγιο. Χρησιμοποιείται για προμήθεια και αναφορές.
24. reversed_entry_id
Τύπος: Many2one (account.move). Για τις αναστραμμένες εγγραφές, αυτό συνδέεται με την αναστροφή κίνησης. Ενεργοποιεί την ιχνηλασιμότητα των διορθώσεων.
25. to_check
Τύπος: Boolean. Σημ flag για κινήσεις που χρειάζονται ανασκόπηση. Χρησιμοποιείται στη συμφωνία τραπεζών και σε ροές εργασίας εξαιρέσεων.
26. active
Τύπος: Boolean. Σημ flag μαλακής διαγραφής. Όταν είναι False, η εγγραφή αρχειοθετείται. Οι ακυρωμένες κινήσεις συνήθως ορίζονται σε active=False.
27. sequence_number
Τύπος: Integer. Ο αριθμός ακολουθίας από το ημερολόγιο. Χρησιμοποιείται για την ταξινόμηση και την εμφάνιση. Διαχειρίζεται από το μίγμα ακολουθίας.
28. amount_untaxed
Τύπος: Νομισματικό. Το υποσύνολο πριν από τον φόρο. Για τα τιμολόγια, αυτό είναι το άθροισμα των ποσών γραμμών πριν από τον φόρο.
29. ποσό_φόρου
Τύπος: Νομισματικό. Το συνολικό ποσό φόρου. Υπολογίζεται από τις γραμμές τιμολογίου και τη ρύθμιση φόρου.
30. πηγή_τιμολογίου_ηλεκτρονικού_ταχυδρομείου
Τύπος: Χαρακτηριστικό. Για τιμολόγια προμηθευτών που δημιουργούνται από email, αυτό αποθηκεύει τη διεύθυνση ηλεκτρονικού ταχυδρομείου προέλευσης. Χρησιμοποιείται για την αυτοματοποιημένη εισαγωγή τιμολογίων.
Πώς χρησιμοποιείται αυτό το μοντέλο σε επιχειρηματικές ροές εργασίας
1. Τιμολόγηση Πελατών
Όταν παραδίδεται μια παραγγελία πώλησης, το Odoo δημιουργεί ένα account.move με move_type out_invoice. Οι invoice_line_ids προέρχονται από τις γραμμές της παραγγελίας. Η καταχώριση της κίνησης δημιουργεί τις γραμμές του ημερολογίου και ενημερώνει τις απαιτήσεις.
2. Τιμολόγια Προμηθευτών
Οι παραγγελίες αγοράς μπορούν να δημιουργούν τιμολόγια, ή τα τιμολόγια εισάγονται χειροκίνητα. Κάθε τιμολόγιο είναι ένα account.move με move_type in_invoice. Το partner_id είναι ο προμηθευτής. Η καταχώριση ενημερώνει τις υποχρεώσεις.
3. Συμφιλίωση Πληρωμών
Οι πληρωμές αντιστοιχίζονται σε τιμολόγια χρησιμοποιώντας τα πεδία amount_residual και payment_state. Η διαδικασία συμφιλίωσης συνδέει τις κινήσεις πληρωμής με τις κινήσεις τιμολογίου και εκκαθαρίζει το υπόλοιπο.
4. Χειροκίνητες Καταχωρίσεις Ημερολογίου
Οι λογιστές δημιουργούν κινήσεις με move_type entry για προσαρμογές, συσσωρεύσεις ή διορθώσεις. Προσθέτουν χειροκίνητα line_ids με λογαριασμούς, χρεώσεις και πιστώσεις. Η κίνηση πρέπει να ισορροπεί πριν από την καταχώριση.
5. Πιστωτικά Σημειώματα και Επιστροφές
Τα πιστωτικά σημειώματα είναι κινήσεις με τύπο κίνησης out_refund ή in_refund. Αναιρούν την επίδραση του αρχικού τιμολογίου ή λογαριασμού. Το reversed_entry_id συνδέει πίσω στο αρχικό για έλεγχο.
Πώς οι προγραμματιστές επεκτείνουν αυτό το μοντέλο
Οι προγραμματιστές επεκτείνουν το account.move χρησιμοποιώντας διάφορα πρότυπα. Η κληρονομικότητα μοντέλων του Odoo είναι ο κύριος μηχανισμός.
Κληρονομικότητα Μοντέλων
Χρησιμοποιήστε _inherit = 'account.move' για να επεκτείνετε το μοντέλο. Προσθέστε νέα πεδία Odoo, παρακάμψτε μεθόδους ή προσθέστε περιορισμούς. Το κληρονομούμενο μοντέλο στο Odoo διατηρεί τις αλλαγές σας σε ένα ξεχωριστό module για εύκολες αναβαθμίσεις.
Προσθήκη Πεδίων
Ορίστε νέα πεδία Odoo στο κληρονομούμενο μοντέλο σας. Χρησιμοποιήστε τον σωστό τύπο πεδίου: Char, Many2one, Boolean, Integer, Text, Selection. Σκεφτείτε τα πεδία που εξαρτώνται από την εταιρεία για πολυεταιρικές εφαρμογές. Για πεδία που σχετίζονται με τιμολόγια, χρησιμοποιήστε ένα domain στο move_type.
Επεκτάσεις Python
Παρακάμψτε create, write, _post, ή button_draft για να προσθέσετε λογική. Χρησιμοποιήστε super() για να καλέσετε το αρχικό. Να είστε προσεκτικοί με τα υπολογισμένα πεδία και τις εξαρτήσεις τους. Το API μοντέλο στα διακοσμητικά του Odoo (@api.model, @api.depends) ελέγχει πότε εκτελούνται οι μέθοδοι.
Odoo Studio
Το Odoo Studio σας επιτρέπει να προσθέτετε πεδία χωρίς κώδικα. Καλή επιλογή για γρήγορες προσαρμογές όπως επιπλέον πεδία αναφοράς. Για πολύπλοκη λογική, επικύρωση ή αυτοματοποιημένες ενέργειες, τα προσαρμοσμένα modules είναι πιο συντηρήσιμα.
Σημείωση: το account.move είναι ένα κανονικό μοντέλο, όχι ένα αφηρημένο μοντέλο Odoo ή ένα προσωρινό μοντέλο Odoo. Τα αφηρημένα μοντέλα χρησιμοποιούνται ως πρότυπα και δεν δημιουργούν πίνακες βάσης δεδομένων. Τα προσωρινά μοντέλα είναι προσωρινά και χρησιμοποιούνται για μάγους. Το account.move αποθηκεύει μόνιμα λογιστικά δεδομένα.
Καλές πρακτικές
- Πάντα φιλτράρετε κατά move_type όταν δημιουργείτε αναφορές ή ενσωματώσεις. Διαφορετικοί τύποι έχουν διαφορετικά απαιτούμενα πεδία και συμπεριφορές.
- Χρησιμοποιήστε το σωστό ημερολόγιο για κάθε τύπο κίνησης. Η ανάμειξη ημερολογίων μπορεί να σπάσει τις ακολουθίες και τις αναφορές.
- Όταν δημιουργείτε κινήσεις μέσω API, βεβαιωθείτε ότι οι γραμμές line_ids είναι ισορροπημένες (χρεώσεις = πιστώσεις) πριν από την ανάρτηση. Οι μη ισορροπημένες κινήσεις θα αποτύχουν στην επικύρωση.
- Για τη δημιουργία τιμολογίων από εξωτερικά συστήματα, αντιστοιχίστε τους τύπους εγγράφων σας σωστά στο move_type. out_invoice για πωλήσεις, in_invoice για αγορές.
- Χρησιμοποιήστε το
x_πρόθεμα για προσαρμοσμένα πεδία για να αποφύγετε συγκρούσεις με μελλοντικές εκδόσεις του Odoo.
Κοινά λάθη
- Ανάρτηση κινήσεων χωρίς ισορροπημένες γραμμές. Το Odoo θα απορρίψει την ανάρτηση. Πάντα επαληθεύστε ότι τα συνολικά χρέη και πιστώσεις ταιριάζουν.
- Τροποποίηση δημοσιευμένων κινήσεων απευθείας. Οι δημοσιευμένες κινήσεις είναι κλειδωμένες. Χρησιμοποιήστε μια αναστροφή και δημιουργήστε μια νέα κίνηση αντί γι' αυτό.
- Ξεχνώντας να ορίσετε το partner_id σε κινήσεις πελατών ή προμηθευτών. Πολλές αναφορές και ροές εργασίας εξαρτώνται από αυτό.
- Χρησιμοποιώντας τον λάθος τύπο κίνησης. Ένα out_refund δεν είναι το ίδιο με ένα αρνητικό out_invoice. Χρησιμοποιήστε τον σωστό τύπο για επιστροφές χρημάτων και πιστωτικά σημειώματα.
- Αναίρεση βασικών μεθόδων χωρίς να καλέσετε super(). Αυτό μπορεί να σπάσει άλλα πρόσθετα ή μελλοντικές αναβαθμίσεις.
Συμπέρασμα
Το μοντέλο account.move είναι κεντρικό για την Λογιστική του Odoo. Αντιπροσωπεύει τιμολόγια, λογαριασμούς και εγγραφές ημερολογίου σε μια ενιαία δομή. Η κατανόηση των πεδίων του και του τρόπου που τα πρόσθετα το επεκτείνουν θα σας βοηθήσει να διαμορφώσετε, να προσαρμόσετε και να ενσωματώσετε το Odoo αποτελεσματικά.
Είτε είστε λειτουργικός σύμβουλος που χαρτογραφεί επιχειρηματικές διαδικασίες είτε προγραμματιστής που δημιουργεί προσαρμοσμένα πρόσθετα, μια καλή κατανόηση του account.move θα σας εξοικονομήσει χρόνο και θα αποτρέψει σφάλματα.
Χρειάζεστε βοήθεια με την υλοποίηση του Odoo σας;
Η Dasolo βοηθά τις εταιρείες να υλοποιήσουν, να προσαρμόσουν και να βελτιστοποιήσουν το Odoo. Ειδικευόμαστε σε ενσωματώσεις API και ανάπτυξη Odoo. Η ομάδα μας έχει βαθιά εμπειρία με την αρχιτεκτονική δεδομένων του Odoo και μοντέλα όπως το account.move.
Αν χρειάζεστε βοήθεια με την υλοποίηση του Odoo σας, προσαρμοσμένα modules ή ενσωματώσεις, είμαστε εδώ για να βοηθήσουμε. Κλείστε μια επίδειξη για να συζητήσουμε το έργο σας.