Skip to Content

Odoo 19: Ανοιχτά υπόλοιπα στην πύλη πελατών με ημερομηνία αναφοράς και εξαγωγή PDF – Πρόσθετο portal_open_items

5 Νοεμβρίου 2026 | Odoo 19 Community | Εσωτερική ανάπτυξη
5 Νοεμβρίου 2026 από
Odoo 19: Ανοιχτά υπόλοιπα στην πύλη πελατών με ημερομηνία αναφοράς και εξαγωγή PDF – Πρόσθετο portal_open_items

Πρόσθετο portal_open_items για το Odoo 19: κατάσταση ανοιχτών υπολοίπων στην πύλη πελατών με ημερομηνία αναφοράς και εξαγωγή σε PDF

«Πόσα ακριβώς εκκρεμούν ακόμη από εσάς;» Αυτή η ερώτηση τίθεται τακτικά σε κάθε πελατολόγιο, συνήθως λίγο πριν από το τέλος του τριμήνου, πριν από τον έλεγχο της ετήσιας κλεισίματος ή όταν το λογιστήριο του πελάτη προετοιμάζει πληρωμές. Όποιος δεν την απαντά μόνος του, την δέχεται με email ή τηλέφωνο, και κάποιος πρέπει να εξαγάγει από τη λογιστική μια λίστα ανοιχτών υπολοίπων (λίστα OP) και να την αποστείλει. Με το Odoo 19 Community αυτό δεν γίνεται αυτόματα: η πύλη πελατών εμφανίζει μεν τα επιμέρους τιμολόγια, όχι όμως μια λίστα με τα ανοιχτά υπόλοιπα ολόκληρης της εταιρείας, και πολύ περισσότερο όχι για μια ελεύθερα επιλεγμένη ημέρα.

Γι’ αυτό αναπτύξαμε το πρόσθετο Ανοιχτά υπόλοιπα στην πύλη πελατών (portal_open_items) για το Odoo 19. Οι πελάτες με ενεργοποιημένη πρόσβαση βλέπουν στην πύλη μια κατάσταση με όλα τα ανεξόφλητα τιμολόγια, τα πιστωτικά και τις πληρωμές της εταιρείας τους που δεν έχουν ακόμη αντιστοιχιστεί. Μπορούν να επιλέξουν μια ημερομηνία αναφοράς και να κατεβάσουν την κατάσταση σε PDF. Το πρόσθετο είναι ελεύθερο λογισμικό με άδεια AGPL-3 και διατίθεται στο GitHub:

github.com/Alex0176/odoo-portal-open-items

Εγκαταστήσαμε τη μονάδα στις 5 Νοεμβρίου 2026 στο παραγωγικό μας σύστημα. Η επιλογή είναι εκεί από προεπιλογή απενεργοποιημένη και ενεργοποιείται μόνο κατόπιν συνεννόησης με μεμονωμένους πελάτες. Η εμπειρία από τη λειτουργία είναι επομένως ακόμη σύντομη· δοκιμάσαμε με δεκατρείς αυτόματες δοκιμές και μια βάση δεδομένων δοκιμών με υποδειγματικούς πελάτες. Όποιος υιοθετήσει τη μονάδα, θα πρέπει να διαβάσει τις ενότητες για τον Υπολογισμός με ημερομηνία αναφοράς, για τη συνέπεια πληρωμών και για τους περιορισμούς διαβάστε.

Το πρόβλημα: καταστάσεις ανοιχτών υπολοίπων κατόπιν αιτήματος

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

  • Τριμηνιαίο και ετήσιο κλείσιμο: Το λογιστήριο του πελάτη θέλει να μάθει ποιες υποχρεώσεις υπήρχαν στις 31.12. Πρόκειται για ημερομηνία αναφοράς στο παρελθόν.
  • Συμφωνία υπολοίπων: Ο πελάτης πιστεύει ότι έχει εξοφλήσει ένα τιμολόγιο, ενώ εμείς το βλέπουμε ακόμη ανοιχτό. Μια κοινή κατάσταση με ημερομηνία, ημερομηνία λήξης και ποσό ξεκαθαρίζει το ζήτημα πιο γρήγορα από μια αλυσίδα email.
  • Προγραμματισμένες πληρωμές: Όποιος ετοιμάζει πληρωμές κάθε εβδομάδα ή κάθε μήνα χρειάζεται να βλέπει συγκεντρωμένα όλα τα ανεξόφλητα τιμολόγια ενός προμηθευτή, με τα ληξιπρόθεσμα πρώτα.
  • Πολλά πρόσωπα επικοινωνίας: Σε μια εταιρεία, άλλος κάνει τις παραγγελίες και άλλος πληρώνει. Τα ανοιχτά υπόλοιπα αφορούν την εταιρεία και όχι ένα μεμονωμένο πρόσωπο.

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

Η λύση με μια ματιά

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

  • Επιλογή ανά επαφή: «Εμφάνιση κατάστασης ανοιχτών υπολοίπων στην πύλη». Ο χρήστης της πύλης βλέπει το πλακίδιο και τη σελίδα μόνο όταν η επιλογή είναι ενεργοποιημένη. Από προεπιλογή είναι απενεργοποιημένη.
  • Ολόκληρη η εταιρεία: Η κατάσταση περιλαμβάνει τα ανοιχτά υπόλοιπα όλων των επαφών της εταιρείας και όχι μόνο του συνδεδεμένου χρήστη.
  • Ημερομηνία αναφοράς: Ο πελάτης επιλέγει μια ημερομηνία και βλέπει ποια υπόλοιπα ήταν ανοιχτά εκείνη την ημέρα.
  • Εξαγωγή σε PDF: Η κατάσταση σε PDF με τη διάταξη εγγράφων της εταιρείας σας, με επιστολόχαρτο, συνολικό υπόλοιπο και σύνολο ληξιπρόθεσμων υπολοίπων.
  • Συνέπεια πληρωμών: ποσοστό των τιμολογίων που πληρώθηκαν εγκαίρως, με μικρή καθυστέρηση και αργά, το παλαιότερο ανοιχτό τιμολόγιο και μια αξιολόγηση καλή ή κακή, στην πύλη και στο PDF.
  • Τα ληξιπρόθεσμα υπόλοιπα επισημαίνονται με χρώμα και εμφανίζουν τις ημέρες που έχουν περάσει από την ημερομηνία λήξης.
  • Τα πιστωτικά τιμολόγια και τα πιστωτικά υπόλοιπα εμφανίζονται στην κατάσταση με αρνητικό ποσό και μειώνουν το συνολικό υπόλοιπο.
  • Σύνδεσμοι: Κάθε τιμολόγιο της κατάστασης οδηγεί στην προβολή του στην πύλη.
  • Πολυγλωσσική υποστήριξη: Το περιβάλλον χρήσης και το PDF ακολουθούν τη γλώσσα του χρήστη. Περιλαμβάνεται γερμανική μετάφραση.

Πύλη πελατών στο Odoo 19 με το πλακίδιο Ανοιχτά υπόλοιπα δίπλα στις παραγγελίες και τα τιμολόγια

Το πλακίδιο εμφανίζεται στην αρχική σελίδα Ο λογαριασμός μου, δίπλα στις παραγγελίες και τα τιμολόγια. Όποιος δεν έχει ενεργοποιημένη την επιλογή δεν το βλέπει.

Ενεργοποίηση πρόσβασης ανά επαφή: η επιλογή

Μια κατάσταση ανοιχτών υπολοίπων εμφανίζει επιχειρηματικά δεδομένα ολόκληρης της εταιρείας. Γι’ αυτό το πρόσθετο δεν παρέχει πρόσβαση σε όλους τους χρήστες της πύλης, αλλά μόνο σε όσους επιλέξετε ρητά. Στη φόρμα της επαφής, στην ενότητα Ιστότοπος, υπάρχει το πλαίσιο ελέγχου «Εμφάνιση κατάστασης ανοιχτών υπολοίπων στην πύλη». Είναι ορατό σε χρήστες με δικαιώματα τιμολόγησης (ομάδα account.group_account_invoice) και ισχύει μόνο για τη συγκεκριμένη επαφή.

Φόρμα επαφής του Odoo με την επιλογή Εμφάνιση κατάστασης ανοιχτών υπολοίπων στην πύλη

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

Η κατάσταση στην πύλη πελατών

Με ένα κλικ στο πλακίδιο ανοίγει η διεύθυνση /my/open-items. Η σελίδα εμφανίζει την επωνυμία της εταιρείας, την επιλογή ημερομηνίας αναφοράς και τον πίνακα με τα ανοιχτά υπόλοιπα:

Κατάσταση ανοιχτών υπολοίπων στην πύλη πελατών του Odoo με ληξιπρόθεσμα τιμολόγια, πιστωτικό, συνολικό υπόλοιπο και σύνολο ληξιπρόθεσμων υπολοίπων

ΣτήληΠεριεχόμενο
ΠαραστατικόΑριθμός παραστατικού του τιμολογίου ή του πιστωτικού, με σύνδεσμο προς την προβολή του τιμολογίου στην πύλη· από κάτω εμφανίζεται το στοιχείο αναφοράς, εφόσον υπάρχει
ΗμερομηνίαΗμερομηνία τιμολογίου ή λογιστικής εγγραφής
Ημερομηνία λήξηςΗμερομηνία λήξης· για τα ληξιπρόθεσμα υπόλοιπα εμφανίζεται από κάτω η ένδειξη «n ημέρες καθυστέρησης» με κόκκινο χρώμα
ΠοσόΑρχικό ποσό της εγγραφής
Ανοιχτό υπόλοιποΠοσό που παραμένει ανεξόφλητο (μετά τις μερικές πληρωμές)

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

Ανοιχτά υπόλοιπα κατά την ημερομηνία αναφοράς

Πάνω από τον πίνακα υπάρχει ο τίτλος «Ανοιχτά υπόλοιπα με ημερομηνία αναφοράς», δίπλα ένα πεδίο ημερομηνίας και το κουμπί Εμφάνιση. Με ημερομηνία αναφοράς στο παρελθόν, η λίστα δείχνει τι δεν ήταν ακόμη πληρωμένο εκείνη την ημέρα. Αυτή είναι ακριβώς η αξιολόγηση που χρειάζεται για κλεισίματα, ελέγχους και συμφωνίες: «Ποιες υποχρεώσεις είχαμε στις 31.12. προς αυτόν τον προμηθευτή;»

Ανοιχτά υπόλοιπα κατά την ημερομηνία αναφοράς 02.11.2026 στην πύλη πελατών του Odoo

Πώς υπολογίζονται τα υπόλοιπα κατά την ημερομηνία αναφοράς

Για κάθε εγγραφή ισχύει: Ανοιχτό υπόλοιπο κατά την ημερομηνία αναφοράς = ποσό τιμολογίου μείον όλες τις πληρωμές που είχαν συμφωνηθεί λογιστικά έως και την ημερομηνία αναφοράς. Μια εγγραφή περιλαμβάνεται στην κατάσταση αν είχε ήδη καταχωριστεί λογιστικά κατά την ημερομηνία αναφοράς και εξακολουθούσε να έχει ανεξόφλητο υπόλοιπο. Έτσι, ένα τιμολόγιο της 7ης Σεπτεμβρίου ύψους 1.250,50 €, για το οποίο καταβλήθηκαν 500,00 € στις 20 Οκτωβρίου και το υπόλοιπο εξοφλήθηκε στις 5 Νοεμβρίου, εμφανίζεται στην κατάσταση της 2ας Νοεμβρίου με 750,50 €, ενώ στην κατάσταση της 5ης Νοεμβρίου δεν εμφανίζεται πλέον.

Χρονοδιάγραμμα: τιμολόγιο, μερική πληρωμή, ημερομηνία αναφοράς και εξόφληση, μαζί με τον υπολογισμό του ανοιχτού υπολοίπου κατά την ημερομηνία αναφοράς

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

Τι σημαίνει εδώ «ημερομηνία πληρωμής»

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

Εξαγωγή σε PDF

Με την επιλογή Λήψη PDF, το πρόσθετο δημιουργεί την κατάσταση ως αρχείο PDF για την επιλεγμένη ημερομηνία αναφοράς. Το κουμπί Εκτύπωση ανοίγει την ίδια κατάσταση στο παράθυρο εκτύπωσης του προγράμματος περιήγησης. Το PDF χρησιμοποιεί τη διάταξη εγγράφων της εταιρείας σας στο Odoo (λογότυπο, διεύθυνση και υποσέλιδο από τις ρυθμίσεις) και ευρωπαϊκό μέγεθος χαρτιού:

PDF ανοιχτών υπολοίπων κατά την ημερομηνία αναφοράς, με επιστολόχαρτο, πίνακα, συνολικό υπόλοιπο και σύνολο ληξιπρόθεσμων υπολοίπων

  • Τίτλος με ημερομηνία αναφοράς: «Ανοιχτά υπόλοιπα κατά την ημερομηνία αναφοράς 02.11.2026», ακόμη και όταν η ημερομηνία αναφοράς είναι η σημερινή. Αν δεν υπάρχουν ανοιχτά υπόλοιπα, εμφανίζεται το μήνυμα «Δεν υπάρχουν ανοιχτά υπόλοιπα.»
  • Διεύθυνση του πελάτη στο πεδίο διεύθυνσης της εταιρικής διάταξης εγγράφων, ώστε η κατάσταση να φέρει τα σωστά στοιχεία και όταν εκτυπώνεται.
  • Ληξιπρόθεσμα υπόλοιπα με έντονα γράμματα, ώστε να ξεχωρίζουν και στην ασπρόμαυρη εκτύπωση.
  • Συνολικό υπόλοιπο και σύνολο ληξιπρόθεσμων υπολοίπων στο τέλος του πίνακα, ανά νόμισμα όταν χρησιμοποιούνται πολλά νομίσματα.
  • Όνομα αρχείου με την εταιρεία και την ημερομηνία, π.χ. Open_items_Muster_Handels_GmbH_2026-11-02.pdf.

Συνέπεια πληρωμών: αξιολόγηση με μια ματιά

Από την έκδοση 19.0.1.1.0 πάνω από τον πίνακα εμφανίζεται μια σύντομη ανάλυση του πόσο συνεπώς πληρώνει η εταιρεία τα τιμολόγιά της. Η ίδια ανάλυση εμφανίζεται και στο PDF. Έτσι ο πελάτης βλέπει μόνος του πού βρίσκεται, και εσείς δεν χρειάζεται πλέον να του το εξηγείτε ξεχωριστά.

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

  • Πράσινο: «47 % πληρώθηκαν εντός της προθεσμίας πληρωμής.» Πρόκειται για τιμολόγια που πληρώθηκαν την ημέρα λήξης ή νωρίτερα.
  • Πορτοκαλί: «29 % πληρώθηκαν την εβδομάδα μετά τη λήξη της προθεσμίας πληρωμής.» Πρόκειται για πληρωμές από μία έως επτά ημέρες μετά τη λήξη.
  • Κόκκινο: «24 % πληρώθηκαν αργότερα, κατά μέσο όρο μετά από 39 ημέρες (25 ημέρες μετά τη λήξη της προθεσμίας πληρωμής).» Ο πρώτος αριθμός μετράει από την ημερομηνία του τιμολογίου, ο αριθμός στην παρένθεση από τη λήξη. Η γραμμή εμφανίζεται μόνο όταν υπάρχουν τέτοια τιμολόγια.
  • «Τα τιμολόγια παραμένουν ανοιχτά έως και 60 ημέρες.» Αυτή είναι η ηλικία του παλαιότερου τιμολογίου που εξακολουθεί να είναι ανοιχτό κατά την ημερομηνία αναφοράς, υπολογισμένη από την ημερομηνία του τιμολογίου.

Από κάτω εμφανίζεται η αξιολόγηση της συνέπειας πληρωμών: καλή ή κακή, και στο τέλος της σελίδας, στο PDF στο τέλος της σελίδας, η υπόδειξη «Οι πελάτες με κακή συνέπεια πληρωμών μεταφέρονται σε προπληρωμή.» Το PDF δείχνει τις ίδιες γραμμές στη διάταξη με επικεφαλίδα:

PDF ανοιχτών υπολοίπων με ημερομηνία αναφοράς 05.10.2026 με συνέπεια πληρωμών, αξιολόγηση καλή και υπόδειξη για την προπληρωμή

Τι μετράει

  • Αξιολογούνται τα τιμολόγια προς τον πελάτη που έχουν καταχωριστεί. Τα πιστωτικά και τα προσχέδια δεν προσμετρώνται. Σε πληρωμή με δόσεις κάθε δόση μετράει χωριστά.
  • Περίοδος: τα τιμολόγια των τελευταίων δώδεκα μηνών και όλα τα τιμολόγια που είναι ακόμη ανοιχτά, ακόμη κι αν είναι παλαιότερα.
  • Ημέρα πληρωμής είναι η ημερομηνία της τελευταίας συμφωνίας με μια πληρωμή, όπως και στην ημερομηνία αναφοράς.
  • Ανοιχτά τιμολόγια: Αν ένα τιμολόγιο είναι ληξιπρόθεσμο κατά την ημερομηνία αναφοράς, προσμετράται σαν να είχε πληρωθεί την ημερομηνία αναφοράς, δηλαδή πορτοκαλί ή κόκκινο. Ένα ανοιχτό τιμολόγιο που δεν έχει ακόμη λήξει δεν αξιολογείται.
  • Με ημερομηνία αναφοράς στο παρελθόν ισχύει η κατάσταση εκείνης της ημέρας: οι πληρωμές μετά την ημερομηνία αναφοράς δεν προσμετρώνται ακόμη.
  • Αν δεν υπάρχει τίποτα προς αξιολόγηση, εμφανίζεται «Δεν υπάρχουν τιμολόγια των τελευταίων 12 μηνών προς αξιολόγηση.» και δεν υπάρχει αξιολόγηση.

Πότε είναι η συνέπεια πληρωμών «καλή»;

Η αξιολόγηση είναι καλή όταν τουλάχιστον το 70 % των τιμολογίων είναι πράσινα ή πορτοκαλί (εγκαίρως ή με καθυστέρηση το πολύ μία εβδομάδα) και κανένα ανοιχτό τιμολόγιο δεν είναι ληξιπρόθεσμο για περισσότερο από 30 ημέρες. Διαφορετικά είναι κακή. Τα όρια (7 ημέρες, 70 %, 30 ημέρες, 12 μήνες) βρίσκονται ως σταθερές στην αρχή του models/res_partner.py και μπορούν να προσαρμοστούν εκεί.

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

Ποιος μπορεί να δει τι; Το μοντέλο πρόσβασης

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

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

  • Μόνο με ενεργοποιημένη την επιλογή. Αν δεν έχει επιλεγεί το πλαίσιο στην επαφή, δεν εμφανίζεται πλακίδιο και η πρόσβαση στη διεύθυνση /my/open-items ανακατευθύνει στη σελίδα Ο λογαριασμός μου.
  • Πάντα η δική τους εταιρεία. Η εταιρεία προσδιορίζεται από τον συνδεδεμένο χρήστη και όχι από κάποια παράμετρο στη διεύθυνση. Δεν υπάρχει δυνατότητα να ζητήσει κανείς στοιχεία άλλης εταιρείας μέσω της γραμμής διευθύνσεων.
  • Ο ίδιος έλεγχος και στο PDF. Το Odoo διαθέτει γενικά τις αναφορές PDF και μέσω μιας γενικής διεύθυνσης. Γι’ αυτό το πρόσθετο επαναλαμβάνει τον έλεγχο μέσα στην ίδια την αναφορά: μόνο χρήστες με λογιστικά δικαιώματα ή χρήστες της πύλης με ενεργοποιημένη την επιλογή για τη δική τους εταιρεία λαμβάνουν PDF. Όλοι οι υπόλοιποι λαμβάνουν σφάλμα πρόσβασης.
  • Μόνο οριστικοποιημένες λογιστικές εγγραφές. Πρόχειρα και ακυρωμένα παραστατικά δεν εμφανίζονται ποτέ.
  • Μόνο εταιρείες με δικαίωμα πρόσβασης: Λαμβάνονται υπόψη μόνο οι λογιστικές εγγραφές εταιρειών στις οποίες έχει πρόσβαση ο χρήστης.

Τεχνική υλοποίηση

Το πρόσθετο εξαρτάται μόνο από τα account και portal, δηλαδή από στοιχεία του Odoo Community. Προσθέτει ένα μόνο πεδίο στην επαφή και κατά τα άλλα αποτελείται από controller, κλάση αναφοράς και πρότυπα.

ΣτοιχείοΛειτουργία
Πεδίο portal_open_items στο res.partnerΛογική επιλογή «Εμφάνιση κατάστασης ανοιχτών υπολοίπων στην πύλη», η οποία δεν αντιγράφεται και είναι απενεργοποιημένη από προεπιλογή.
_open_items_data()Αναζητά τις οριστικοποιημένες γραμμές απαιτήσεων της εταιρείας που δεν έχουν ακόμη συμφωνηθεί λογιστικά και υπολογίζει για κάθε γραμμή το υπόλοιπο, αν είναι ληξιπρόθεσμη και τις ημέρες καθυστέρησης. Επιστρέφει τις γραμμές, τα σύνολα ανά νόμισμα και την ημερομηνία αναφοράς.
_payment_morale()Αξιολογεί τα τιμολόγια των τελευταίων δώδεκα μηνών και όλα τα ανοιχτά τιμολόγια κατά την ημερομηνία αναφοράς: ποσοστά εγκαίρως, με καθυστέρηση έως επτά ημέρες και αργότερα, μέση διάρκεια, παλαιότερο ανοιχτό τιμολόγιο και την αξιολόγηση καλή ή κακή.
_open_items_residual()Υπόλοιπο μιας γραμμής κατά την ημερομηνία αναφοράς: ποσό μείον όλες τις μερικές λογιστικές συμφωνίες με ημερομηνία έως και την ημερομηνία αναφοράς, στο νόμισμα του τιμολογίου.
Controller /my/open-itemsΕμφανίζει τη σελίδα, ελέγχει την ημερομηνία αναφοράς (κενή, μη έγκυρη ή μελλοντική = σήμερα) και, αν δεν είναι ενεργοποιημένη η επιλογή, ανακατευθύνει στη σελίδα Ο λογαριασμός μου.
Controller /my/open-items/pdfΔημιουργεί το PDF με την ίδια ημερομηνία αναφοράς και το παρέχει με όνομα αρχείου.
Αναφορά report_open_itemsΠρότυπο QWeb με τη διάταξη εγγράφων της εταιρείας (web.external_layout) και δικό του έλεγχο δικαιωμάτων.
Πρότυπα πύληςΠλακίδιο στη σελίδα Ο λογαριασμός μου, διαδρομή πλοήγησης, σελίδα με φόρμα ημερομηνίας και πίνακα.
Φόρμα επαφήςΕπιλογή στην ενότητα Ιστότοπος, ορατή μόνο στην ομάδα account.group_account_invoice.
ΜετάφρασηΠεριλαμβάνονται η γερμανική μετάφραση (de.po) και το πρότυπο (.pot).

Τα ανοιχτά υπόλοιπα αντλούνται από τις γραμμές λογιστικών εγγραφών και όχι από τα τιμολόγια. Αυτό είναι ουσιώδες: μόνο έτσι εμφανίζονται και τα πιστωτικά και οι πληρωμές που δεν έχουν ακόμη αντιστοιχιστεί, και μόνο έτσι μπορεί να ανασυντεθεί η εικόνα μιας προηγούμενης ημέρας από τις λογιστικές συμφωνίες (account.partial.reconcile). Το ερώτημα εκτελείται για ολόκληρη την εταιρεία (commercial_partner_id) με αυξημένα δικαιώματα, αφού προηγουμένως ελεγχθεί αν ο χρήστης δικαιούται να δει τα στοιχεία.

Δοκιμές

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

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

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

Εγκατάσταση και ρύθμιση

git clone https://github.com/Alex0176/odoo-portal-open-items.git
ln -s /pfad/odoo-portal-open-items/portal_open_items /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i portal_open_items --stop-after-init

Οι εξαρτήσεις είναι τα account και portal. Μετά την εγκατάσταση πρέπει να επανεκκινήσετε την υπηρεσία Odoo, επειδή το πρόσθετο περιέχει κώδικα Python. Αν χρησιμοποιείτε το σύστημα σε παραγωγικό περιβάλλον, εγκαταστήστε πρώτα το πρόσθετο σε αντίγραφο της βάσης δεδομένων. Στη συνέχεια:

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

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

Περιορισμοί και επισημάνσεις

  • Σημερινή εικόνα των οριστικοποιημένων παραστατικών. Ο υπολογισμός για την ημερομηνία αναφοράς βασίζεται στις εγγραφές όπως υπάρχουν τώρα στο σύστημα. Αν ένα τιμολόγιο ακυρώθηκε ή επανήλθε σε πρόχειρη κατάσταση μετά την ημερομηνία αναφοράς, δεν εμφανίζεται στην κατάσταση. Δεν πρόκειται για αμετάβλητο στιγμιότυπο «όπως είχε εκτυπωθεί τότε».
  • Οι πληρωμές υπολογίζονται από την ημέρα της συμφωνίας τους. Αν μια πληρωμή αντιστοιχιστεί σε τιμολόγιο αρκετές ημέρες μετά την είσπραξή της, το τιμολόγιο εμφανίζεται μέχρι τότε ως ανεξόφλητο στην κατάσταση. Για ακριβείς αναφορές ανά ημερομηνία, φροντίστε να αντιστοιχίζετε έγκαιρα τις πληρωμές. Το Odoo Community δεν περιλαμβάνει αντιστοίχιση τραπεζικών κινήσεων με τιμολόγια· γι’ αυτό χρησιμοποιούμε το δικό μας πρόσθετο Bank-Statement-Matcher.
  • Η συνέπεια πληρωμών είναι τόσο καλή όσο η συμφωνία σας. Μετράει το πότε μια πληρωμή αντιστοιχίστηκε σε ένα τιμολόγιο. Πληρωμές που δεν έχουν συμφωνηθεί για μεγάλο διάστημα κάνουν έναν πελάτη να φαίνεται χειρότερος απ' ό,τι είναι. Ελέγξτε την αξιολόγηση των πελατών σας πριν εξαγάγετε οποιοδήποτε συμπέρασμα από αυτήν.
  • Η αξιολόγηση είναι ορατή στον πελάτη. Όποιος έχει την επιλογή, βλέπει και το αποτέλεσμα και την υπόδειξη για την προπληρωμή. Η μονάδα δεν αλλάζει σε αυτό τίποτα στους όρους πληρωμής.
  • Μόνο απαιτήσεις. Το πρόσθετο εμφανίζει όσα σας οφείλει ο πελάτης, όχι τις δικές σας υποχρεώσεις απέναντί του.
  • Χωρίς στάδια όχλησης και χωρίς σύνδεσμο πληρωμής στην κατάσταση. Ο πελάτης μπορεί να ανοίξει ένα τιμολόγιο από την κατάσταση και να το πληρώσει εκεί, σύμφωνα με τις συνήθεις δυνατότητες της πύλης σας.
  • PDF και λειτουργία με πολλαπλές διεργασίες. Για να δημιουργήσει αναφορές PDF, το Odoo καλεί εσωτερικά τη δική του διεύθυνση ιστού. Αν το σύστημά σας λειτουργεί με μία μόνο διεργασία εργασίας, αυτό μπορεί να προκαλέσει εμπλοκή. Το ίδιο ισχύει για όλες τις αναφορές PDF στην πύλη, όχι μόνο για αυτό το πρόσθετο. Μετά την εγκατάσταση, δοκιμάστε το κουμπί PDF σε πραγματικές συνθήκες λειτουργίας.
  • Δοκιμασμένο μόνο στο Odoo 19.0 Community. Δεν το έχουμε ελέγξει σε άλλες εκδόσεις.
  • Δεν υποκαθιστά τη διαχείριση οχλήσεων πληρωμής και την καρτέλα λογαριασμού. Η κατάσταση δεν αντικαθιστά ούτε τη λογιστική καρτέλα λογαριασμού ούτε τις διαδικασίες όχλησης για πληρωμή· απλώς παρουσιάζει με σαφήνεια την εικόνα των υπολοίπων.

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

Τι είναι μια λίστα ανοιχτών υπολοίπων (λίστα OP);

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

Γιατί η πύλη του Odoo δεν εμφανίζει εξαρχής μια λίστα OP;

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

Βλέπουν την κατάσταση όλοι οι χρήστες της πύλης μιας εταιρείας;

Όχι. Μόνο οι επαφές για τις οποίες έχει ενεργοποιηθεί η σχετική επιλογή. Ωστόσο, η κατάσταση που εμφανίζεται καλύπτει ολόκληρη την εταιρεία και όχι μόνο τα τιμολόγια της συγκεκριμένης επαφής.

Μπορώ να επιλέξω ημερομηνία αναφοράς από το παρελθόν, για παράδειγμα τις 31.12. του προηγούμενου έτους;

Ναι, οποιαδήποτε ημερομηνία έως και σήμερα. Η κατάσταση εμφανίζει τότε τα στοιχεία που είχαν οριστικοποιηθεί και παρέμεναν ανεξόφλητα εκείνη την ημέρα. Λάβετε υπόψη τις διευκρινίσεις για τον υπολογισμό: καθοριστική είναι η ημέρα συμφωνίας της πληρωμής.

Υποστηρίζεται μελλοντική ημερομηνία αναφοράς;

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

Εμφανίζονται στην κατάσταση πιστωτικά τιμολόγια και προκαταβολές;

Ναι. Τα πιστωτικά τιμολόγια και οι πληρωμές που δεν έχουν ακόμη αντιστοιχιστεί σε τιμολόγιο εμφανίζονται στην κατάσταση με αρνητικό ποσό και μειώνουν το υπόλοιπο. Μια σημείωση κάτω από τον πίνακα το εξηγεί στον πελάτη.

Πώς εντοπίζονται οι ληξιπρόθεσμες οφειλές;

Μια οφειλή είναι ληξιπρόθεσμη όταν η ημερομηνία λήξης της προηγείται της ημερομηνίας αναφοράς και παραμένει θετικό ανεξόφλητο υπόλοιπο. Οι ημέρες καθυστέρησης υπολογίζονται έως την ημερομηνία αναφοράς.

Είναι διαθέσιμο το PDF και σε άλλες γλώσσες;

Ναι, το περιβάλλον χρήστη και το PDF ακολουθούν τη γλώσσα του χρήστη. Περιλαμβάνεται η γερμανική μετάφραση· για άλλες γλώσσες αρκεί ένα αρχείο .po ή η μετάφραση μέσω του περιβάλλοντος χρήστη του Odoo.

Μπορεί ένας πελάτης να δει την κατάσταση άλλης εταιρείας αλλάζοντας τη διεύθυνση;

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

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

Από τα καταχωρισμένα τιμολόγια πελατών των τελευταίων δώδεκα μηνών και όλα τα ανοιχτά τιμολόγια. Για κάθε τιμολόγιο μετράει πόσες ημέρες μετά τη λήξη πληρώθηκε: το πολύ την ημέρα λήξης (πράσινο), έως επτά ημέρες μετά (πορτοκαλί) ή αργότερα (κόκκινο). Η αξιολόγηση είναι καλή όταν τουλάχιστον το 70 % είναι πράσινα ή πορτοκαλί και κανένα τιμολόγιο δεν παραμένει ανοιχτό ληξιπρόθεσμο για περισσότερο από 30 ημέρες. Οι λεπτομέρειες βρίσκονται στην ενότητα συνέπεια πληρωμών.

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

Όχι. Δείχνει μόνο την αξιολόγηση και την υπόδειξη. Οι όροι πληρωμής, η προπληρωμή και οι αποκλεισμοί παραμένουν δική σας απόφαση και δική σας διαδικασία στο Odoo.

Στέλνει το πρόσθετο email ή οχλήσεις πληρωμής;

Όχι. Παρέχει μόνο τη σελίδα και το PDF. Δεν δημιουργεί μηνύματα, ειδοποιήσεις ή δραστηριότητες.

Λειτουργεί το πρόσθετο με το Odoo Enterprise;

Εξαρτάται μόνο από τα account και portal, τα οποία υπάρχουν και στις δύο εκδόσεις. Το έχουμε δοκιμάσει μόνο στην έκδοση Community του Odoo 19.

Με ποια άδεια διατίθεται το πρόσθετο;

Με την AGPL-3. Μπορείτε να το χρησιμοποιείτε, να το τροποποιείτε και να το αναδιανέμετε, εφόσον τηρείτε τους όρους της άδειας. Αναφορές σφαλμάτων και προτάσεις βελτίωσης μπορούν να υποβάλλονται ως issue στο αποθετήριο στο GitHub είναι ευπρόσδεκτες.

Υποστήριξη από την Biricon IT Services

Υποστηρίζουμε εγκαταστάσεις Odoo για μικρές και μεσαίες επιχειρήσεις: από την αρχική υλοποίηση έως τις προσαρμογές, τις μεταβάσεις και την καθημερινή λειτουργία. Αν θέλετε να παρέχετε στους πελάτες σας ανοιχτά υπόλοιπα, τιμολόγια και αιτήματα υποστήριξης στην πύλη, να επεκτείνετε τις λογιστικές δυνατότητες του Odoo Community ή να εγκαταστήσετε με ασφάλεια ένα πρόσθετο στο παραγωγικό σας περιβάλλον, θα χαρούμε να βοηθήσουμε. Άλλα πρόσθετα που έχουμε αναπτύξει: Αρχειοθέτηση εταιρείας μαζί με τους χρήστες της πύλης, Εμπορικό μητρώο και έλεγχος διευθύνσεων για πελάτες στην Αυστρία, Αρίθμηση παραστατικών με πρόθεμα, έτος και αύξοντα αριθμό και Σετ προϊόντων ως ενότητα στην προσφορά.

Επικοινωνήστε μαζί μας τώρα

Κατάσταση: 6 Νοεμβρίου 2026. Έκδοση μονάδας 19.0.1.1.1. Αλλαγές από την πρώτη έκδοση της 5ης Νοεμβρίου: συνέπεια πληρωμών (19.0.1.1.0) και διόρθωση του ανοιχτού ποσού κατά την ημερομηνία αναφοράς μετά από μερικές πληρωμές (19.0.1.1.1). Όλα τα ονόματα, οι αριθμοί παραστατικών και τα ποσά στις εικόνες είναι φανταστικά.