
«Πόσα ακριβώς εκκρεμούν ακόμη από εσάς;» Αυτή η ερώτηση τίθεται τακτικά σε κάθε πελατολόγιο, συνήθως λίγο πριν από το τέλος του τριμήνου, πριν από τον έλεγχο της ετήσιας κλεισίματος ή όταν το λογιστήριο του πελάτη προετοιμάζει πληρωμές. Όποιος δεν την απαντά μόνος του, την δέχεται με email ή τηλέφωνο, και κάποιος πρέπει να εξαγάγει από τη λογιστική μια λίστα ανοιχτών υπολοίπων (λίστα OP) και να την αποστείλει. Με το Odoo 19 Community αυτό δεν γίνεται αυτόματα: η πύλη πελατών εμφανίζει μεν τα επιμέρους τιμολόγια, όχι όμως μια λίστα με τα ανοιχτά υπόλοιπα ολόκληρης της εταιρείας, και πολύ περισσότερο όχι για μια ελεύθερα επιλεγμένη ημέρα.
Γι' αυτό γράψαμε τη μονάδα Ανοιχτά υπόλοιπα στην πύλη πελατών (portal_open_items) για το Odoo 19. Οι πελάτες με ενεργοποιημένη πρόσβαση βλέπουν στην πύλη μια λίστα με όλα τα ανοιχτά τιμολόγια, τα πιστωτικά και τις πληρωμές της εταιρείας τους που δεν έχουν ακόμη αντιστοιχιστεί, μπορούν να επιλέξουν ημερομηνία αναφοράς, να κατεβάσουν τη λίστα ως PDF και βλέπουν με μια ματιά πώς διαμορφώνεται η συνέπεια πληρωμών τους. Η μονάδα είναι ελεύθερο λογισμικό υπό την άδεια AGPL-3 και βρίσκεται στο GitHub:
github.com/Alex0176/odoo-portal-open-items
Εγκαταστήσαμε τη μονάδα στις 5 Νοεμβρίου 2026 στο παραγωγικό μας σύστημα. Η επιλογή είναι εκεί από προεπιλογή απενεργοποιημένη και ενεργοποιείται μόνο κατόπιν συνεννόησης με μεμονωμένους πελάτες. Η εμπειρία από τη λειτουργία είναι επομένως ακόμη σύντομη· δοκιμάσαμε με δεκατρείς αυτόματες δοκιμές και μια βάση δεδομένων δοκιμών με υποδειγματικούς πελάτες. Όποιος υιοθετήσει τη μονάδα, θα πρέπει να διαβάσει τις ενότητες για τον υπολογισμό της ημερομηνίας αναφοράς, για τη συνέπεια πληρωμών και για τους περιορισμούς .
Περιεχόμενα αυτής της ανάρτησης
- Το πρόβλημα: λίστα OP κατά παραγγελία
- Η λύση με μια ματιά
- Ενεργοποίηση ανά επαφή: η επιλογή
- Η λίστα στην πύλη πελατών
- Ανοιχτά υπόλοιπα με ημερομηνία αναφοράς
- Εξαγωγή PDF
- Συνέπεια πληρωμών: αξιολόγηση με μια ματιά
- Ποιος μπορεί να βλέπει τι; Το μοντέλο πρόσβασης
- Τεχνική υλοποίηση
- Δοκιμές
- Εγκατάσταση και ρύθμιση
- Περιορισμοί και υποδείξεις
- Συχνές ερωτήσεις
- Υποστήριξη από την Biricon IT Services
Το πρόβλημα: λίστα OP κατά παραγγελία
Μια λίστα ανοιχτών υπολοίπων δείχνει ποια τιμολόγια ενός πελάτη δεν έχουν ακόμη εξοφληθεί, ποια από αυτά είναι ληξιπρόθεσμα και πόσο ανέρχεται το υπόλοιπο. Για τον προμηθευτή αποτελεί εργαλείο προγραμματισμού ρευστότητας και παρακολούθησης οφειλών. Για τον πελάτη αποτελεί τη βάση για να προγραμματίσει πληρωμές, να συμφωνήσει τα τιμολόγια με τη δική του λογιστική και να ξεκαθαρίσει απορίες χωρίς να ανοίξει κάθε τιμολόγιο ξεχωριστά. Τυπικές περιπτώσεις:
- Τριμηνιαίο και ετήσιο κλείσιμο: Το λογιστήριο του πελάτη θέλει να μάθει ποιες υποχρεώσεις υπήρχαν στις 31.12. Πρόκειται για ημερομηνία αναφοράς στο παρελθόν.
- Συμφωνία: Ο πελάτης πιστεύει ότι έχει πληρώσει ένα τιμολόγιο, ενώ εμείς το βλέπουμε ακόμη ανοιχτό. Μια κοινή λίστα με ημερομηνία, λήξη και ποσό το ξεκαθαρίζει ταχύτερα από μια αλυσίδα email.
- Κύκλοι πληρωμών: Όποιος προετοιμάζει πληρωμές εβδομαδιαία ή μηνιαία χρειάζεται όλα τα ανοιχτά τιμολόγια ενός προμηθευτή με μια ματιά, με τα ληξιπρόθεσμα στην κορυφή.
- Πολλοί υπεύθυνοι επικοινωνίας: Σε μια εταιρεία ο ένας παραγγέλνει και ο άλλος πληρώνει. Τα ανοιχτά υπόλοιπα ανήκουν στην εταιρεία και όχι σε ένα μεμονωμένο πρόσωπο.
Μέχρι τώρα τραβούσαμε αυτές τις λίστες χειροκίνητα από τη λογιστική και τις στέλναμε με email. Αυτό απαιτεί χρόνο και στο τέλος είναι ένα στιγμιότυπο που παλιώνει ήδη την επόμενη ημέρα. Καλύτερη είναι μια λίστα που ο πελάτης ανοίγει ο ίδιος οποιαδήποτε στιγμή στην πύλη, πάντα με την τρέχουσα κατάσταση.
Η λύση με μια ματιά
Η μονάδα εμπλουτίζει την πύλη πελατών του Odoo με μια σελίδα Ανοιχτά υπόλοιπα και ένα πλακίδιο στο Ο λογαριασμός μου. Το εύρος λειτουργιών:
- Επιλογή ανά επαφή: «Εμφάνιση λίστας ανοιχτών υπολοίπων στην πύλη». Μόνο όταν είναι ενεργοποιημένη, ο χρήστης της πύλης βλέπει το πλακίδιο και τη σελίδα. Από προεπιλογή είναι απενεργοποιημένη.
- Ολόκληρη η εταιρεία: Η λίστα περιλαμβάνει τα ανοιχτά υπόλοιπα όλων των επαφών της εταιρείας, όχι μόνο εκείνα του συνδεδεμένου χρήστη.
- Ημερομηνία αναφοράς: Ο πελάτης επιλέγει μια ημερομηνία και βλέπει τι ήταν ανοιχτό εκείνη την ημέρα.
- Εξαγωγή PDF: Η λίστα ως PDF στη διάταξη της εταιρείας σας, με επικεφαλίδα, υπόλοιπο και σύνολο ληξιπρόθεσμων εγγραφών.
- Συνέπεια πληρωμών: ποσοστό των τιμολογίων που πληρώθηκαν εγκαίρως, με μικρή καθυστέρηση και αργά, το παλαιότερο ανοιχτό τιμολόγιο και μια αξιολόγηση καλή ή κακή, στην πύλη και στο PDF.
- Οι ληξιπρόθεσμες εγγραφές επισημαίνονται με χρώμα και δείχνουν τις ημέρες μετά την ημερομηνία λήξης.
- Τα πιστωτικά και οι πιστωτικές θέσεις εμφανίζονται στη λίστα με αρνητικό ποσό και μειώνουν το υπόλοιπο.
- Σύνδεση: Κάθε τιμολόγιο της λίστας οδηγεί στην προβολή του τιμολογίου στην πύλη.
- Πολυγλωσσία: Η διεπαφή και το PDF ακολουθούν τη γλώσσα του χρήστη· συμπεριλαμβάνεται η γερμανική μετάφραση.

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

Αυτό ταιριάζει με την πράξη: Σε μια εταιρεία η διεύθυνση ή το λογιστήριο πρέπει να βλέπει τη λίστα, ενώ ένας υπάλληλος που βλέπει μόνο αιτήματα (tickets) όχι. Η επιλογή ισχύει για την επαφή, ενώ οι εμφανιζόμενες εγγραφές ανήκουν στην ολόκληρη εταιρεία. Ορίστε λοιπόν την επιλογή στο πρόσωπο που πρέπει να έχει συνολική εικόνα της εταιρείας.
Η λίστα στην πύλη πελατών
Ένα κλικ στο πλακίδιο ανοίγει το /my/open-items. Η σελίδα εμφανίζει την επωνυμία της εταιρείας, την επιλογή της ημερομηνίας αναφοράς και τον πίνακα με τα ανοιχτά υπόλοιπα:

| Στήλη | Περιεχόμενο |
|---|---|
| Παραστατικό | Αριθμός παραστατικού του τιμολογίου ή του πιστωτικού, με σύνδεσμο προς την προβολή του τιμολογίου στην πύλη· από κάτω η αναφορά, εφόσον υπάρχει |
| Ημερομηνία | Ημερομηνία τιμολογίου ή ημερομηνία καταχώρισης αντίστοιχα |
| Λήξη | Ημερομηνία λήξης· στις ληξιπρόθεσμες εγγραφές από κάτω «n ημέρες ληξιπρόθεσμο» με κόκκινο χρώμα |
| Ποσό | Αρχικό ποσό της εγγραφής |
| Ανοιχτό | Ποσό που παραμένει ανοιχτό (μετά από μερικές πληρωμές) |
Κάτω από τον πίνακα εμφανίζονται το υπόλοιπο, δηλαδή το άθροισμα όλων των ανοιχτών ποσών, και το σύνολο των ληξιπρόθεσμων εγγραφών. Οι ληξιπρόθεσμες γραμμές έχουν χρωματιστό φόντο, ώστε να διακρίνονται αμέσως με μια πρόχειρη ματιά. Τα πιστωτικά και οι πληρωμές που δεν έχουν ακόμη αντιστοιχιστεί σε τιμολόγιο εμφανίζονται με αρνητικό πρόσημο και μειώνουν το υπόλοιπο· μια υπόδειξη κάτω από τον πίνακα το εξηγεί στον πελάτη. Εάν η εταιρεία σας εργάζεται σε περισσότερα νομίσματα, το υπόλοιπο εμφανίζεται ανά νόμισμα.
Ανοιχτά υπόλοιπα με ημερομηνία αναφοράς
Πάνω από τον πίνακα υπάρχει ο τίτλος «Ανοιχτά υπόλοιπα με ημερομηνία αναφοράς», δίπλα ένα πεδίο ημερομηνίας και το κουμπί Εμφάνιση. Με ημερομηνία αναφοράς στο παρελθόν, η λίστα δείχνει τι δεν ήταν ακόμη πληρωμένο εκείνη την ημέρα. Αυτή είναι ακριβώς η αξιολόγηση που χρειάζεται για κλεισίματα, ελέγχους και συμφωνίες: «Ποιες υποχρεώσεις είχαμε στις 31.12. προς αυτόν τον προμηθευτή;»

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

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

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

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

Τι μετράει
- Αξιολογούνται τα τιμολόγια προς τον πελάτη που έχουν καταχωριστεί. Τα πιστωτικά και τα προσχέδια δεν προσμετρώνται. Σε πληρωμή με δόσεις κάθε δόση μετράει χωριστά.
- Περίοδος: τα τιμολόγια των τελευταίων δώδεκα μηνών και όλα τα τιμολόγια που είναι ακόμη ανοιχτά, ακόμη κι αν είναι παλαιότερα.
- Ημέρα πληρωμής είναι η ημερομηνία της τελευταίας συμφωνίας με μια πληρωμή, όπως και στην ημερομηνία αναφοράς.
- Ανοιχτά τιμολόγια: Αν ένα τιμολόγιο είναι ληξιπρόθεσμο κατά την ημερομηνία αναφοράς, προσμετράται σαν να είχε πληρωθεί την ημερομηνία αναφοράς, δηλαδή πορτοκαλί ή κόκκινο. Ένα ανοιχτό τιμολόγιο που δεν έχει ακόμη λήξει δεν αξιολογείται.
- Με ημερομηνία αναφοράς στο παρελθόν ισχύει η κατάσταση εκείνης της ημέρας: οι πληρωμές μετά την ημερομηνία αναφοράς δεν προσμετρώνται ακόμη.
- Αν δεν υπάρχει τίποτα προς αξιολόγηση, εμφανίζεται «Δεν υπάρχουν τιμολόγια των τελευταίων 12 μηνών προς αξιολόγηση.» και δεν υπάρχει αξιολόγηση.
Πότε είναι η συνέπεια πληρωμών «καλή»;
Η αξιολόγηση είναι καλή όταν τουλάχιστον το 70 % των τιμολογίων είναι πράσινα ή πορτοκαλί (εγκαίρως ή με καθυστέρηση το πολύ μία εβδομάδα) και κανένα ανοιχτό τιμολόγιο δεν είναι ληξιπρόθεσμο για περισσότερο από 30 ημέρες. Διαφορετικά είναι κακή. Τα όρια (7 ημέρες, 70 %, 30 ημέρες, 12 μήνες) βρίσκονται ως σταθερές στην αρχή του models/res_partner.py και μπορούν να προσαρμοστούν εκεί.
Σημαντικό: Η μονάδα δεν μεταφέρει κανέναν σε προπληρωμή. Η υπόδειξη στο υποσέλιδο είναι ένα σταθερό κείμενο που δείχνει στους πελάτες με κακή αξιολόγηση τι μπορεί να προκύψει από αυτήν. Το αν και πότε θα αποφασίσετε κάτι τέτοιο είναι δική σας υπόθεση. Αν η πρόταση δεν σας ταιριάζει, αλλάξτε την στα δύο πρότυπα (σελίδα πύλης και αναφορά) ή στη μετάφραση.
Ποιος μπορεί να βλέπει τι; Το μοντέλο πρόσβασης
Τα ανοιχτά υπόλοιπα είναι ευαίσθητα δεδομένα, γι' αυτό η πρόσβαση ήταν για εμάς πιο σημαντική από οποιαδήποτε πρόσθετη λειτουργία. Το μοντέλο είναι σκόπιμα απλό:

- Μόνο με ενεργοποιημένη επιλογή. Χωρίς σημάδι στην επαφή δεν υπάρχει πλακίδιο, και η κλήση του
/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. Όποιος διαχειρίζεται παραγωγικό σύστημα, εγκαθιστά τη μονάδα πρώτα σε αντίγραφο της βάσης δεδομένων. Έπειτα:
- ανοίξτε την επαφή που πρέπει να βλέπει τη λίστα (πρόσωπο με πρόσβαση στην πύλη),
- στη φόρμα ενεργοποιήστε το πλαίσιο επιλογής Εμφάνιση λίστας ανοιχτών υπολοίπων στην πύλη και αποθηκεύστε,
- συνδεθείτε στην πύλη ως αυτός ο χρήστης ή ελέγξτε από κοινού με τον πελάτη: πλακίδιο, λίστα, ημερομηνία αναφοράς και PDF.
Ελέγξτε πριν από την ενεργοποίηση τις ρυθμίσεις αποστολέα και διάταξης της εταιρείας σας, επειδή το PDF παίρνει λογότυπο, διεύθυνση και υποσέλιδο από τη διάταξη εγγράφων. Η μονάδα δεν στέλνει η ίδια email και δεν δημιουργεί ειδοποιήσεις.
Περιορισμοί και υποδείξεις
- Τρέχουσα κατάσταση για καταχωρισμένα παραστατικά. Η ημερομηνία αναφοράς υπολογίζεται με βάση τις καταχωρίσεις όπως βρίσκονται τώρα στο σύστημα. Εάν μετά την ημερομηνία αναφοράς ένα τιμολόγιο ακυρώθηκε ή επανήλθε σε προσχέδιο, η λίστα δεν το εμφανίζει. Δεν πρόκειται για αμετάβλητο στιγμιότυπο «όπως εκτυπώθηκε τότε».
- Οι πληρωμές μετρούν από την ημέρα της συμφωνίας. Εάν μια πληρωμή αντιστοιχιστεί μόλις μετά από ημέρες από την είσπραξη ενός τιμολογίου, το τιμολόγιο μέχρι τότε εμφανίζεται ως ανοιχτό στη λίστα. Όποιος θέλει καθαρές αξιολογήσεις ημερομηνίας αναφοράς, πρέπει να αντιστοιχίζει τις πληρωμές σύντομα. Η τραπεζική συμφωνία σε τιμολόγια δεν περιλαμβάνεται στο Odoo Community· γι' αυτό χρησιμοποιούμε τη δική μας μονάδα Bank-Statement-Matcher.
- Η συνέπεια πληρωμών είναι τόσο καλή όσο η συμφωνία σας. Μετράει το πότε μια πληρωμή αντιστοιχίστηκε σε ένα τιμολόγιο. Πληρωμές που δεν έχουν συμφωνηθεί για μεγάλο διάστημα κάνουν έναν πελάτη να φαίνεται χειρότερος απ' ό,τι είναι. Ελέγξτε την αξιολόγηση των πελατών σας πριν εξαγάγετε οποιοδήποτε συμπέρασμα από αυτήν.
- Η αξιολόγηση είναι ορατή στον πελάτη. Όποιος έχει την επιλογή, βλέπει και το αποτέλεσμα και την υπόδειξη για την προπληρωμή. Η μονάδα δεν αλλάζει σε αυτό τίποτα στους όρους πληρωμής.
- Μόνο απαιτήσεις. Η μονάδα δείχνει τι σας οφείλει ο πελάτης, όχι τις υποχρεώσεις σας προς τον πελάτη.
- Χωρίς βαθμίδες υπενθύμισης και χωρίς σύνδεσμο πληρωμής στη λίστα. Ο πελάτης μπορεί από τη λίστα να ανοίξει ένα τιμολόγιο και να πληρώσει εκεί, όπως το επιτρέπει κατά τα άλλα η πύλη σας.
- PDF και λειτουργία πολλαπλών διεργασιών. Το Odoo για τη δημιουργία αναφορών PDF καλεί εσωτερικά τη δική του διεύθυνση ιστού. Εάν το σύστημά σας λειτουργεί με μία μόνο διεργασία εργασίας, αυτό μπορεί να μπλοκάρει. Αυτό ισχύει για όλες τις αναφορές 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). Όλα τα ονόματα, οι αριθμοί παραστατικών και τα ποσά στις εικόνες είναι φανταστικά.