Skip to Content

Πεδίο Ημερομηνίας στο Odoo: Ο Απόλυτος Οδηγός

Όλα όσα χρειάζεστε να γνωρίζετε για το πεδίο Ημερομηνία στο μοντέλο δεδομένων Odoo, από τη βασική χρήση έως την τεχνική προσαρμογή
6 Μαρτίου 2026 από
Πεδίο Ημερομηνίας στο Odoo: Ο Απόλυτος Οδηγός
Dasolo
| No comments yet

Εισαγωγή


Αν έχετε ποτέ ανοίξει μια παραγγελία πώλησης, μια εργασία έργου ή μια παραγγελία παραγωγής στο Odoo, έχετε ήδη χρησιμοποιήσει ένα Πεδίο Ημερομηνίας. Προθεσμίες, ημερομηνίες παράδοσης, ημερομηνίες λήξης τιμολογίων, ημερομηνίες έναρξης συμβολαίων - οι περισσότερες από τις χρονοευαίσθητες πληροφορίες στο Odoo αποθηκεύονται χρησιμοποιώντας αυτόν τον τύπο πεδίου.

Για τους επιχειρηματικούς χρήστες, τα Πεδία Ημερομηνίας είναι διαισθητικά: κάνετε κλικ, εμφανίζεται ένα ημερολόγιο, επιλέγετε μια ημερομηνία. Αλλά υπάρχει περισσότερα που συμβαίνουν κάτω από την επιφάνεια. Η κατανόηση του πώς λειτουργεί το Πεδίο Ημερομηνίας στο μοντέλο δεδομένων του Odoo, πώς διαφέρει από τα Πεδία Ημερομηνίας και Ώρας, και πώς να το δημιουργήσετε ή να το προσαρμόσετε θα σας βοηθήσει να δημιουργήσετε πιο ακριβείς ροές εργασίας και να αποφύγετε τις εκπλήξεις που σχετίζονται με τις ζώνες ώρας που παγιδεύουν πολλές υλοποιήσεις του Odoo.

Αυτός ο οδηγός καλύπτει όλα όσα χρειάζεστε να γνωρίζετε για το Πεδίο Ημερομηνίας στο Odoo, από το τι αποθηκεύει μέχρι το πώς να το χρησιμοποιήσετε αποτελεσματικά στις επιχειρηματικές σας διαδικασίες.

Τι είναι το πεδίο ημερομηνίας στο Odoo


Στο Odoo ORM, ο τύπος fields.Date έχει σχεδιαστεί για να αποθηκεύει ημερομηνίες ημερολογίου χωρίς συστατικό χρόνου. Μια ημερομηνία όπως "2026-03-06" αποθηκεύεται ακριβώς όπως είναι, χωρίς ώρες, λεπτά ή δευτερόλεπτα.

Στο PostgreSQL, τη βάση δεδομένων στην οποία τρέχει το Odoo, ένα πεδίο ημερομηνίας αντιστοιχεί στον τύπο στήλης DATE. Αυτό διαφέρει από το πεδίο DateTime, το οποίο αντιστοιχεί σε TIMESTAMP και περιλαμβάνει μια πλήρη χρονική σήμανση μέχρι το δευτερόλεπτο.

Στη διεπαφή χρήστη, ένα πεδίο ημερομηνίας εμφανίζεται ως είσοδος κειμένου με επιλογέα ημερομηνίας. Οι χρήστες μπορούν είτε να πληκτρολογήσουν μια ημερομηνία απευθείας είτε να κάνουν κλικ στο εικονίδιο ημερολογίου για να επιλέξουν μία. Σε λίστες, εμφανίζεται ως μορφοποιημένο κείμενο ευθυγραμμισμένο με την τοπική γλώσσα του χρήστη.

Ακολουθεί πώς φαίνεται ο ορισμός ενός πεδίου ημερομηνίας σε ένα προσαρμοσμένο Python module:

from odoo import fields, models

class ProjectTask(models.Model):
    _inherit = 'project.task'

    x_deadline_confirmed = fields.Date(
        string='Επιβεβαιωμένη Προθεσμία',
        help='Η επίσημα επιβεβαιωμένη προθεσμία που συμφωνήθηκε με τον πελάτη.',
    )

Στο Odoo Studio, αυτό το πεδίο απλά επισημαίνεται ως Ημερομηνία. Όταν δημιουργείται μέσω του Studio, αποκτά αυτόματα ένα πρόθεμα x_studio_. Όταν δημιουργείται μέσω κώδικα Python ή του XML-RPC API, επιλέγετε το τεχνικό όνομα μόνοι σας.

Πώς Λειτουργεί το Πεδίο


Ημερομηνία vs. Ημερομηνία και Ώρα: τι αλλάζει πραγματικά

Το πιο σημαντικό πράγμα που πρέπει να κατανοήσετε σχετικά με το πεδίο ημερομηνίας είναι τι δεν περιλαμβάνει: χρόνο. Δεν υπάρχουν ώρες, καμία μετατροπή ζώνης ώρας, τίποτα πέρα από την ημερομηνία ημερολογίου αυτή καθαυτή.

Το πεδίο DateTime, αντίθετα, αποθηκεύει μια πλήρη χρονική σήμανση και αποθηκεύεται σε UTC στη βάση δεδομένων. Το Odoo στη συνέχεια το μετατρέπει στη τοπική ζώνη ώρας του χρήστη κατά την εμφάνιση. Αυτό είναι η πηγή πολλών συγκεχυμένων σφαλμάτων "η ημερομηνία μου μετατοπίστηκε κατά μία ημέρα" που συναντούν οι ομάδες. Αυτά είναι σχεδόν πάντα ζητήματα DateTime, όχι ζητήματα πεδίου ημερομηνίας.

Όταν χρησιμοποιείτε ένα πεδίο ημερομηνίας, αυτό που αποθηκεύετε είναι ακριβώς αυτό που βλέπουν οι χρήστες. Μια τιμή 2026-03-15 είναι 2026-03-15 για κάθε χρήστη, ανεξάρτητα από το πού βρίσκονται στον κόσμο.

Βασικά Χαρακτηριστικά Πεδίου

Ακολουθούν οι πιο σημαντικές ιδιότητες που μπορείτε να ρυθμίσετε σε ένα πεδίο Ημερομηνίας στο πλαίσιο του Odoo:

  • required: Κάνει το πεδίο υποχρεωτικό τόσο σε επίπεδο διεπαφής όσο και μοντέλου.
  • default: Ορίζει μια αυτόματη προεπιλογή. Για παράδειγμα, fields.Date.today προεπιλέγει την ημερομηνία της σημερινής ημέρας σε νέα αρχεία.
  • index: Δημιουργεί έναν δείκτη βάσης δεδομένων για ταχύτερη φιλτράρισμα και αναζήτηση σε αυτό το πεδίο.
  • compute: Συνδέει μια μέθοδο Python που υπολογίζει την τιμή δυναμικά.
  • store: Όταν συνδυάζεται με compute, διατηρεί την υπολογισμένη τιμή στη βάση δεδομένων.
  • readonly: Αποτρέπει τους χρήστες από το να επεξεργάζονται το πεδίο απευθείας στη διεπαφή.
  • copy: Ελέγχει αν η τιμή μεταφέρεται όταν διπλασιάζεται ένα αρχείο. Προεπιλογή True.

Πώς Εμφανίζεται στις Προβολές

Σε φόρμες, ένα πεδίο Ημερομηνίας εμφανίζεται ως πεδίο κειμένου με αναδυόμενο ημερολόγιο. Σε λίστες, εμφανίζεται ως μορφοποιημένο κείμενο. Σε προβολές αναζήτησης, υποστηρίζει φίλτρα εύρους ημερομηνιών εκτός κουτιού: "αυτή την εβδομάδα", "αυτόν τον μήνα", "αυτό το τρίμηνο", καθώς και ακριβείς συγκριτικούς τελεστές όπως πριν, μετά και σε συγκεκριμένη ημερομηνία.

Η μορφή εμφάνισης ακολουθεί τις ρυθμίσεις γλώσσας του χρήστη στο Odoo. Ένας Αμερικανός χρήστης βλέπει MM/DD/YYYY ενώ ένας Ευρωπαίος χρήστης βλέπει DD/MM/YYYY. Η αποθηκευμένη τιμή είναι πάντα σε μορφή ISO (YYYY-MM-DD), ανεξάρτητα από το πώς εμφανίζεται στην οθόνη.

Αλληλεπίδραση με το Odoo ORM

Όταν διαβάζετε ένα πεδίο Ημερομηνίας στον κώδικα, το Odoo ORM επιστρέφει ένα αντικείμενο Python datetime.date, ή False αν το πεδίο είναι κενό. Όταν γράφετε μέσω του ORM, μπορείτε να περάσετε είτε ένα αντικείμενο datetime.date είτε μια συμβολοσειρά σε μορφή "YYYY-MM-DD". Μέσω του API XML-RPC, οι ημερομηνίες μεταφέρονται και λαμβάνονται πάντα ως συμβολοσειρές.

Δεν υπάρχουν πολύπλοκες μετατροπές που εμπλέκονται κατά την εργασία με πεδία Ημερομηνίας στο μοντέλο δεδομένων του Odoo. Το πλαίσιο διαχειρίζεται αυτόματα τη μορφοποίηση και την αποθήκευση, κάτι που είναι μέρος αυτού που καθιστά αυτόν τον τύπο πεδίου τόσο πρακτικό για καθημερινή χρήση στην ανάπτυξη του Odoo.

Επιχειρηματικές Χρήσεις


Το πεδίο Ημερομηνίας εμφανίζεται σχεδόν σε κάθε μέρος μιας υλοποίησης του Odoo. Ακολουθούν πέντε πρακτικά παραδείγματα από πραγματικές ροές εργασίας επιχειρήσεων.

CRM: Ημερομηνίες Έναρξης και Λήξης Συμβολαίων

Σε ομάδες πωλήσεων που χρησιμοποιούν το Odoo CRM, τα συμβόλαια συχνά έχουν καθορισμένες ημερομηνίες έναρξης και λήξης. Ένα πεδίο Ημερομηνίας στην ευκαιρία ή σε ένα προσαρμοσμένο μοντέλο συμβολαίου διευκολύνει την παρακολούθηση του πότε ενεργοποιούνται οι συμφωνίες και πότε λήγουν.

Σε συνδυασμό με αυτοματοποιημένες ενέργειες, μπορείτε να ενεργοποιήσετε υπενθυμίσεις μέσω email ή αλλαγές κατάστασης όταν ένα συμβόλαιο πλησιάζει την ημερομηνία λήξης του, χωρίς καμία χειροκίνητη παρακολούθηση από την ομάδα. Αυτός ο τύπος αυτοματοποίησης είναι απλός στην εγκατάσταση και εξοικονομεί πολλές χαμένες ανανεώσεις με την πάροδο του χρόνου.

Πωλήσεις: Ζητούμενες Ημερομηνίες Παράδοσης

Οι πελάτες συχνά ζητούν μια συγκεκριμένη ημερομηνία παράδοσης κατά την υποβολή παραγγελιών. Πολλές εταιρείες προσθέτουν ένα πεδίο Ημερομηνίας "Ζητούμενη Ημερομηνία Πελάτη" στις παραγγελίες πώλησης για να δώσουν στην ομάδα λειτουργιών μια καθαρή ημερομηνία στόχο για να προγραμματίσουν.

Η χρήση ενός πεδίου Ημερομηνίας αντί για Ημερομηνία και Ώρα διατηρεί τα δεδομένα απλά και αποφεύγει την σύγχυση ζώνης ώρας κατά τη διάρκεια του συντονισμού της αποθήκης. Η ομάδα αποθήκης βλέπει την ίδια ημερομηνία που εισήγαγε η ομάδα πωλήσεων, χωρίς κίνδυνο προβλημάτων μετατροπής.

Αποθήκη: Ημερομηνίες Λήξης σε Παρτίδες

Στις βιομηχανίες τροφίμων, φαρμακευτικών προϊόντων και χημικών, οι παρτίδες προϊόντων χρειάζονται παρακολούθηση ημερομηνιών λήξης σε επίπεδο αποθήκης. Η διαχείριση παρτίδων του Odoo χρησιμοποιεί πεδία Ημερομηνίας για να αποθηκεύσει ημερομηνίες λήξης και ημερομηνίες καλύτερης χρήσης σε stock.lot.

Αυτά οδηγούν σε στρατηγικές επιλογής FEFO (Πρώτη Λήξη Πρώτη Έξοδος) και αυτοματοποιημένες ειδοποιήσεις όταν το απόθεμα πλησιάζει την ημερομηνία λήξης, προστατεύοντας τόσο τη ρυθμιστική συμμόρφωση όσο και την ποιότητα του προϊόντος χωρίς να απαιτούνται χειροκίνητοι έλεγχοι.

Λογιστική: Προθεσμίες Τιμολογίων

Οι προθεσμίες τιμολογίων στο Odoo είναι πεδία Ημερομηνίας. Καθορίζουν πότε αποστέλλονται οι αυτόματες υπενθυμίσεις πληρωμής, πώς αναγνωρίζονται τα καθυστερημένα τιμολόγια και πώς υπολογίζονται οι αναφορές ηλικιωμένων υποχρεώσεων και απαιτήσεων.

Η σωστή ρύθμιση αυτών των ημερομηνιών είναι μία από τις πιο λειτουργικά σημαντικές χρήσεις του πεδίου Ημερομηνίας σε ολόκληρο το μοντέλο δεδομένων του Odoo. Μια λανθασμένη προθεσμία σιωπηλά σπάει την παρακολούθηση της ροής χρημάτων και την αυτοματοποίηση της παρακολούθησης.

Ανθρώπινοι Πόροι: Ημερομηνίες Ένταξης, Σύμβασης και Πιστοποίησης

Οι ομάδες ανθρώπινων πόρων βασίζονται σε μεγάλο βαθμό σε πεδία Ημερομηνίας για ημερομηνίες πρόσληψης, ημερομηνίες λήξης δοκιμαστικής περιόδου, ημερομηνίες έναρξης και λήξης συμβάσεων, και ημερομηνίες λήξης πιστοποίησης. Αυτές οι τιμές τροφοδοτούν αυτοματοποιημένα emails, ειδοποιήσεις και κανόνες υπολογισμού μισθοδοσίας.

Ένα καλά σχεδιασμένο module ανθρώπινων πόρων στο Odoo είναι αδύνατο χωρίς καθαρά, ακριβή δεδομένα πεδίου Ημερομηνίας σε όλη τη βάση δεδομένων υπαλλήλων. Αυτές οι ημερομηνίες είναι συχνά οι ενεργοποιητές για μερικές από τις πιο κρίσιμες αυτοματοποιήσεις για την επιχείρηση σε μια ρύθμιση Odoo.

Δημιουργία ή Προσαρμογή του Πεδίου Ημερομηνίας


Υπάρχουν τρεις κύριοι τρόποι για να προσθέσετε ένα πεδίο Ημερομηνίας σε ένα μοντέλο Odoo, ανάλογα με την τεχνική σας ρύθμιση και την προσέγγιση ανάπτυξης.

Χρησιμοποιώντας το Odoo Studio (Χωρίς Κώδικα)

Το Odoo Studio είναι ο πιο απλός τρόπος για να προσθέσετε ένα πεδίο Ημερομηνίας χωρίς να γράψετε καθόλου κώδικα. Αυτή είναι η συνιστώμενη προσέγγιση για επιχειρηματικούς χρήστες και συμβούλους που θέλουν να προσθέσουν παρακολούθηση ημερομηνιών σε τυπικές φόρμες Odoo γρήγορα:

  1. Ανοίξτε το Odoo Studio από το κύριο μενού.
  2. Πλοηγηθείτε στη φόρμα όπου θέλετε το πεδίο.
  3. Σύρετε ένα Πεδίο Ημερομηνίας από την πλαϊνή μπάρα στη φόρμα.
  4. Ορίστε την ετικέτα, την υποχρεωτική κατάσταση και μια προεπιλεγμένη τιμή αν χρειάζεται.
  5. Αποθηκεύστε και κλείστε το Studio.

Το Studio δημιουργεί το πεδίο με ένα x_studio_ πρόθεμα και το προσθέτει στη φόρμα αμέσως. Δεν απαιτείται μετανάστευση βάσης δεδομένων από την πλευρά σας.

Χρησιμοποιώντας Python σε ένα Προσαρμοσμένο Μodule

Για τους προγραμματιστές που δημιουργούν modules Odoo, τα πεδία ημερομηνίας ορίζονται σε αρχεία μοντέλων Python. Αυτή είναι η σωστή προσέγγιση για οποιαδήποτε προσαρμογή που χρειάζεται να ελέγχεται έκδοση και να αναπτύσσεται σε πολλαπλά περιβάλλοντα:

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    x_customer_requested_date = fields.Date(
        string='Ημερομηνία Ζήτησης Πελάτη',
        index=True,
        copy=False,
        help='Η ημερομηνία παράδοσης που ζητήθηκε από τον πελάτη κατά την παραγγελία.',
    )

Μετά την προσθήκη του πεδίου στο μοντέλο, πρέπει επίσης να το προσθέσετε στο σχετικό αρχείο XML της προβολής ώστε να εμφανίζεται στη διεπαφή. Το Odoo διαχειρίζεται τη δημιουργία της στήλης βάσης δεδομένων όταν εγκαθιστάτε ή αναβαθμίζετε το module.

Χρησιμοποιώντας το XML-RPC API

Για τη δημιουργία πεδίων προγραμματισμένα ως μέρος μιας διαδικασίας ανάπτυξης ή ενός απομακρυσμένου σημειωματάριου ρυθμίσεων, μπορείτε να δημιουργήσετε πεδία ημερομηνίας μέσω του XML-RPC API του Odoo:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_customer_requested_date',
        'field_description': 'Ημερομηνία Ζήτησης Πελάτη',
        'model_id': model_id,
        'ttype': 'date',
        'state': 'manual',
    }]
)

Η τιμή ttype για ένα πεδίο ημερομηνίας είναι 'date'. Για ένα πεδίο ημερομηνίας και ώρας θα ήταν 'datetime'. Χρησιμοποιώντας 'manual' ως κατάσταση λέει στο Odoo ότι αυτό το πεδίο δημιουργήθηκε χειροκίνητα, όχι από την εγκατάσταση ενός module. Έτσι διαχειρίζεται η Dasolo τη δημιουργία απομακρυσμένων πεδίων για πελάτες ως μέρος αυτοματοποιημένων σεναρίων ρύθμισης.

Καλές Πρακτικές


1. Χρησιμοποιήστε Ημερομηνία, όχι Ημερομηνία και Ώρα, όταν η ώρα είναιirrelevant

Εάν το μόνο που έχει σημασία είναι η ημερομηνία του ημερολογίου (μια προθεσμία, μια ημερομηνία σύμβασης, μια ημερομηνία γέννησης, μια ημερομηνία λήξης), χρησιμοποιήστε fields.Date. Η επιλογή Ημερομηνίας και Ώρας για δεδομένα που βασίζονται αποκλειστικά σε ημερομηνία προσθέτει πολυπλοκότητα ζώνης ώρας χωρίς πρακτικό όφελος και μπορεί να προκαλέσει συγκεχυμένα σφάλματα ενός ημερολογιακού ημερολογίου ανάλογα με τη ρύθμιση ζώνης ώρας του διακομιστή.

2. Ορίστε μια σημαντική προεπιλογή όταν έχει νόημα

Για πεδία όπως "Ημερομηνία Αναμενόμενης Παράδοσης" ή "Ημερομηνία Παρακολούθησης", η προεπιλογή στο σήμερα ή στο σήμερα συν ένα αριθμό ημερών δίνει στους χρήστες ένα λογικό σημείο εκκίνησης. Χρησιμοποιήστε default=fields.Date.today χωρίς παρενθέσεις για μια δυναμική προεπιλογή που αξιολογείται κατά τη διάρκεια της δημιουργίας εγγραφής, όχι κατά τη διάρκεια του χρόνου ορισμού της κλάσης.

3. Δημιουργήστε ευρετήρια για πεδία ημερομηνίας που χρησιμοποιούνται σε αναφορές και φίλτρα αναζήτησης

Εάν οι χρήστες σας φιλτράρουν τακτικά εγγραφές με βάση ένα πεδίο ημερομηνίας (ληξιπρόθεσμοι λογαριασμοί, επερχόμενες ανανεώσεις, ληγμένες πιστοποιήσεις), προσθέστε index=True. Σε μεγάλα σύνολα δεδομένων, αυτό βελτιώνει δραματικά την απόδοση φίλτρων και αναφορών. Είναι μια μικρή αλλαγή με σημαντική επίδραση σε κλίμακα και κοστίζει σχεδόν τίποτα για να εφαρμοστεί εκ των προτέρων.

4. Χρησιμοποιήστε copy=False για ημερομηνίες που δεν πρέπει να μεταφέρονται

Ημερομηνίες όπως "Ημερομηνία Έναρξης Σύμβασης" ή "Ημερομηνία Λήξης" δεν θα πρέπει να αντιγράφονται όταν ένας χρήστης διπλασιάσει μια εγγραφή. Η προσθήκη copy=False αναγκάζει τον χρήστη να ορίσει την ημερομηνία ρητά στη νέα εγγραφή, αποφεύγοντας σιωπηλά σφάλματα όπου μια παλιά ημερομηνία παραμένει σε μια διπλασιασμένη σύμβαση ή εργασία έργου.

5. Προσθέστε περιορισμούς όταν δύο πεδία ημερομηνίας σχηματίζουν μια περιοχή

Όποτε ένα μοντέλο έχει ένα ζεύγος "Ημερομηνία Έναρξης" και "Ημερομηνία Λήξης", προσθέστε έναν περιορισμό Python χρησιμοποιώντας @api.constrains για να διασφαλίσετε ότι η ημερομηνία λήξης δεν είναι πριν από την ημερομηνία έναρξης. Αυτό είναι απλό στην εφαρμογή και αποτρέπει μια ολόκληρη κατηγορία προβλημάτων ποιότητας δεδομένων που είναι ενοχλητικά να διαγνωστούν εκ των υστέρων.

Κοινές Παγίδες


Συγκεχυμένα πεδία Ημερομηνίας και Ημερομηνίας και Ώρας

Αυτό είναι το πιο συχνό λάθος κατά την εργασία με δεδομένα που σχετίζονται με τον χρόνο στο Odoo. Η Ημερομηνία και Ώρα αποθηκεύει μια πλήρη χρονική σφραγίδα σε UTC και μετατρέπει κατά την εμφάνιση. Η Ημερομηνία αποθηκεύει μόνο την ημερομηνία του ημερολογίου χωρίς μετατροπή. Η χρήση Ημερομηνίας και Ώρας όταν χρειάζεστε μόνο μια ημερομηνία οδηγεί σε προβλήματα ζώνης ώρας: μια ημερομηνία που καταχωρείται ως 15 Μαρτίου σε περιβάλλον UTC+2 μπορεί να εμφανίζεται ως 14 Μαρτίου για έναν χρήστη UTC-5.

Χρησιμοποιήστε πάντα τον απλούστερο τύπο πεδίου που καλύπτει τις πραγματικές επιχειρηματικές σας ανάγκες.

Μη λογαριάζοντας τη ζώνη ώρας του διακομιστή σε προγραμματισμένες ενέργειες

Όταν δημιουργείτε προγραμματισμένες ενέργειες ή αναφορές που φιλτράρουν σε ένα πεδίο Ημερομηνίας σε σχέση με το "σήμερα", να είστε προσεκτικοί ότι fields.Date.today() επιστρέφει την ημερομηνία του διακομιστή σε UTC. Για τις περισσότερες περιπτώσεις αναφοράς αυτό είναι εντάξει, αλλά μπορεί να προκαλέσει διαφορές μιας ημέρας για ομάδες σε ζώνες ώρας που διαφέρουν σημαντικά από τον διακομιστή. Δοκιμάστε αυτοματισμούς που εξαρτώνται από ημερομηνίες από πολλές ζώνες ώρας αν η ομάδα σας είναι διασκορπισμένη παγκοσμίως.

Ελλείποντες περιορισμοί σε ζεύγη ημερομηνιών

Είναι συνηθισμένο να βλέπουμε υλοποιήσεις όπου η "Ημερομηνία Έναρξης" και η "Ημερομηνία Λήξης" υπάρχουν ως ξεχωριστά πεδία αλλά καμία επικύρωση δεν διασφαλίζει ότι η ημερομηνία λήξης είναι μετά την ημερομηνία έναρξης. Αυτό επιτρέπει σε μη έγκυρα δεδομένα να εισέλθουν στο σύστημα ήσυχα, σπάζοντας τους υπολογισμούς διάρκειας, τα αποτελέσματα φίλτρων και τις αναφορές. Προσθέστε πάντα έναν έλεγχο @api.constrains όταν δύο ημερομηνίες σχηματίζουν μια λογική περιοχή.

Ξεχνώντας να ευρετηριάσετε τα πεδία ημερομηνίας που χρησιμοποιούνται σε φίλτρα

Τα πεδία ημερομηνίας που χρησιμοποιούνται σε ελέγχους "υπερβολής", σε προβολές "επικείμενων προθεσμιών" ή σε αναφορές ηλικίας υπολοίπων συνήθως ερωτώνται με συγκρίσεις όπως "η ημερομηνία λιγότερη από σήμερα". Χωρίς ευρετήριο, κάθε τέτοια ερώτηση είναι μια πλήρης σάρωση πίνακα. Σε μοντέλα με μεγάλο αριθμό εγγραφών όπως τιμολόγια, εργασίες ή μεταφορές αποθεμάτων, η απουσία ευρετηρίων στα πεδία ημερομηνίας επιβραδύνει αισθητά τις καθημερινές λειτουργίες με την πάροδο του χρόνου.

Αποθήκευση ημερομηνιών ως πεδία Char

Ορισμένες ομάδες αποθηκεύουν ημερομηνίες ως κείμενα σε πεδία Char για να διατηρήσουν μια προσαρμοσμένη μορφή ή να αποφύγουν τον επιλογέα ημερομηνίας. Αυτό σπάει εντελώς την ταξινόμηση, το φιλτράρισμα, την αριθμητική ημερομηνίας και την αναφορά. Χρησιμοποιήστε πάντα τον κατάλληλο τύπο fields.Date. Το πλαίσιο και η βάση δεδομένων Odoo χειρίζονται αυτόματα τη μορφοποίηση και την τοπικοποίηση, οπότε δεν υπάρχει πρακτικός λόγος να αποθηκεύετε ημερομηνίες ως απλό κείμενο.

Συχνές Ερωτήσεις


Ποια είναι η διαφορά μεταξύ ενός πεδίου Ημερομηνίας και ενός πεδίου Ημερομηνίας-Ώρας στο Odoo;

Ένα πεδίο Ημερομηνίας αποθηκεύει μόνο μια ημερομηνία ημερολογίου (έτος, μήνας, ημέρα) χωρίς συστατικό χρόνου. Ένα πεδίο Ημερομηνίας-Ώρας αποθηκεύει μια πλήρη χρονική σήμανση που περιλαμβάνει ώρες, λεπτά και δευτερόλεπτα, αποθηκευμένα σε UTC και εμφανιζόμενα στη τοπική ζώνη ώρας του χρήστη. Χρησιμοποιήστε Ημερομηνία όταν η ώρα της ημέρας είναι ασήμαντη για τη διαδικασία της επιχείρησης. Χρησιμοποιήστε Ημερομηνία-Ώρα όταν χρειάζεται να παρακολουθήσετε ακριβώς πότε συνέβη κάτι.

Πώς μπορώ να ορίσω την ημερομηνία σήμερα ως προεπιλογή για ένα πεδίο Ημερομηνίας;

Στην Python, χρησιμοποιήστε default=fields.Date.today χωρίς παρενθέσεις. Αυτό είναι ένα callable που αξιολογεί το Odoo κατά τη διάρκεια της δημιουργίας εγγραφής, έτσι ώστε η προεπιλογή να είναι πάντα η τρέχουσα ημερομηνία και όχι μια σταθερή ημερομηνία που έχει ενσωματωθεί κατά τον ορισμό της κλάσης. Στο Odoo Studio, επιλέξτε "Σήμερα" ως την προεπιλεγμένη τιμή στον πίνακα ιδιοτήτων του πεδίου.

Μπορώ να υπολογίσω ένα πεδίο ημερομηνίας με βάση άλλες τιμές πεδίων;

Ναι. Ορίστε το πεδίο με compute='_compute_my_date' και γράψτε μια μέθοδο διακοσμημένη με @api.depends() που απαριθμεί τα πεδία που ενεργοποιούν την επαναϋπολογισμό. Μέσα στη μέθοδο, εκτελέστε υπολογισμούς ημερομηνίας χρησιμοποιώντας το datetime.date ή timedelta της Python. Προσθέστε store=True αν θέλετε το αποτέλεσμα να αποθηκευτεί στη βάση δεδομένων για χρήση σε φίλτρα αναζήτησης, ομαδοποίηση και εξαγωγές.

Πώς μπορώ να φιλτράρω εγγραφές με βάση ένα εύρος ημερομηνιών σε ένα domain του Odoo;

Χρησιμοποιήστε τους τυπικούς συγκριτικούς τελεστές στο domain. Για παράδειγμα, για να βρείτε εγγραφές όπου το πεδίο ημερομηνίας πέφτει τον Μάρτιο του 2026:

[
    ('x_date_field', '>=', '2026-03-01'),
    ('x_date_field', '<=', '2026-03-31')
]

Οι συμβολοσειρές ημερομηνίας σε domains θα πρέπει πάντα να είναι σε μορφή ISO: YYYY-MM-DD.

Μπορώ να κάνω ένα πεδίο ημερομηνίας υποχρεωτικό μόνο υπό ορισμένες συνθήκες;

Η τυπική έκδοση του Odoo δεν επιβάλλει υποχρεωτικά πεδία με συνθήκες στο backend χωρίς κώδικα. Μπορείτε να χρησιμοποιήσετε attrs στο XML της προβολής για να επισημάνετε οπτικά ένα πεδίο ως υποχρεωτικό με βάση άλλες τιμές, αλλά η πραγματική επιβολή στο backend απαιτεί έναν περιορισμό Python χρησιμοποιώντας @api.constrains. Για απλές περιπτώσεις, οι κανόνες ορατότητας με συνθήκες του Odoo Studio παρέχουν μια πρακτική εναλλακτική χωρίς να χρειάζεται να γράψετε κώδικα.

Συμπέρασμα


Το πεδίο ημερομηνίας είναι ένας από τους πιο πρακτικούς τύπους πεδίων στο πλαίσιο του Odoo. Είναι απλό να κατανοηθεί, ευθύγραμμο στη χρήση και αρκετά ισχυρό για να υποστηρίξει σημαντική επιχειρηματική λογική όπως υπενθυμίσεις, ελέγχους καθυστέρησης και αναφορές που εξαρτώνται από τον χρόνο.

Τα βασικά πράγματα που πρέπει να θυμάστε: χρησιμοποιήστε ημερομηνία αντί για ημερομηνία και ώρα όταν χρειάζεστε μόνο μια ημερομηνία ημερολογίου, κατανοήστε πώς οι προεπιλογές και οι δείκτες βελτιώνουν τη χρηστικότητα και την απόδοση, και πάντα προσθέτετε περιορισμούς όταν δύο πεδία ημερομηνίας ορίζουν ένα εύρος.

Η δημιουργία καθαρών, καλά σχεδιασμένων μοντέλων δεδομένων στο Odoo ξεκινά με μικρές αποφάσεις όπως η επιλογή του σωστού τύπου πεδίου. Η σωστή επιλογή από την αρχή είναι ένα από τα χαρακτηριστικά μιας σταθερής υλοποίησης του Odoo, και το πεδίο ημερομηνίας είναι ένα θεμελιώδες κομμάτι αυτού του παζλ.

Στη Dasolo, βοηθάμε τις εταιρείες να εφαρμόσουν, να προσαρμόσουν και να βελτιστοποιήσουν το Odoo σε όλα τα τμήματα και τις επιχειρηματικές διαδικασίες. Είτε χρειάζεστε βοήθεια για να σχεδιάσετε ένα καθαρό μοντέλο δεδομένων, να προσθέσετε προσαρμοσμένα πεδία και ροές εργασίας, είτε να δημιουργήσετε ένα πλήρες module Odoo από την αρχή, η ομάδα μας είναι εδώ για να βοηθήσει. Επικοινωνήστε μαζί μας και ας μιλήσουμε για το έργο σας στο Odoo.

Πεδίο Ημερομηνίας στο Odoo: Ο Απόλυτος Οδηγός
Dasolo 6 Μαρτίου 2026
Share this post
Σύνδεση to leave a comment