Skip to Content

Odoo 19: Αρχειοθέτηση εταιρείας μαζί με χρήστες πύλης – άρθρωμα partner_archive_users με ερώτηση επιβεβαίωσης αντί για μήνυμα σφάλματος

3 Νοεμβρίου 2026 | Odoo 19 Community | Δική μας ανάπτυξη
3 Νοεμβρίου 2026 από
Odoo 19: Αρχειοθέτηση εταιρείας μαζί με χρήστες πύλης – άρθρωμα partner_archive_users με ερώτηση επιβεβαίωσης αντί για μήνυμα σφάλματος

Άρθρωμα Odoo 19 partner_archive_users: ερώτηση επιβεβαίωσης κατά την αρχειοθέτηση μιας εταιρείας με χρήστες πύλης

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

Γι' αυτό γράψαμε το μικρό άρθρωμα Αρχειοθέτηση εταιρείας μαζί με χρήστες πύλης (partner_archive_users) για το Odoo 19. Αντί για το μήνυμα σφάλματος εμφανίζεται μια ερώτηση επιβεβαίωσης, και με «Ναι» οι χρήστες πύλης και η εταιρεία αρχειοθετούνται σε ένα βήμα. Το άρθρωμα διατίθεται ως ελεύθερο λογισμικό υπό την άδεια AGPL-3 στο GitHub:

github.com/Alex0176/odoo-partner-archive-users

Χρησιμοποιούμε το άρθρωμα στην Biricon IT Services από τις 3 Νοεμβρίου 2026 στο παραγωγικό μας σύστημα. Είναι καινούργιο, άρα η εμπειρία μαζί του είναι σύντομη. Όποιος το υιοθετήσει, θα πρέπει να διαβάσει τις ενότητες για το Εύρος και Όρια .

Το πρόβλημα στο τυπικό Odoo

Το Odoo ελέγχει κατά την αρχειοθέτηση μιας επαφής αν συνδέεται με αυτήν κάποιος χρήστης, και διακόπτει αν ναι. Ο έλεγχος έχει νόημα, διότι κάθε χρήστης χρειάζεται μια επαφή. Για εσωτερικούς χρήστες, δηλαδή υπαλλήλους, το κλείδωμα είναι και επιθυμητό. Στους χρήστες πύλης των πελατών όμως είναι κυρίως χειρωνακτική εργασία. Κάθε εταιρεία-πελάτης με πρόσβαση πύλης, για παράδειγμα για προβολή τιμολογίων και tickets, χρειάζεται κατά την αρχειοθέτηση την ίδια διαδικασία:

  1. αναζήτηση των χρηστών της εταιρείας και των προσώπων επικοινωνίας της,
  2. αρχειοθέτηση του καθενός ξεχωριστά,
  3. επιστροφή στην εταιρεία,
  4. αρχειοθέτηση της εταιρείας.

Η λύση: μια ερώτηση επιβεβαίωσης

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

Σύγκριση: μήνυμα σφάλματος του Odoo κατά την αρχειοθέτηση μιας εταιρείας και ο διάλογος ερώτησης του αρθρώματος

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

Τι αρχειοθετείται και τι όχι

Το εύρος είναι σκόπιμα στενό:

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

  • Μόνο χρήστες πύλης και δημόσιοι χρήστες (share = True). Οι εσωτερικοί χρήστες δεν αρχειοθετούνται ποτέ μέσω αυτής της διαδρομής. Αν στην επαφή συνδέεται πρόσβαση υπαλλήλου, το μήνυμα σφάλματος του Odoo παραμένει. Έτσι κανείς δεν κλειδώνει κατά λάθος έναν υπάλληλο επειδή αρχειοθέτησε μια εταιρεία.
  • Τα πρόσωπα επικοινωνίας παραμένουν ενεργά ως επαφές. Αρχειοθετούνται μόνο οι προσβάσεις πύλης τους. Αυτό αντιστοιχεί στο τυπικό Odoo, το οποίο κατά την αρχειοθέτηση μιας εταιρείας δεν θίγει ούτε τις υποεπαφές.
  • Μόνο η διαδρομή αρχειοθέτησης της διεπαφής. Μια άμεση write({'active': False}), για παράδειγμα σε εισαγωγή ή script, περνά αμετάβλητη από τον έλεγχο του Odoo.

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

Το άρθρωμα δεν έχει νέα πεδία σε υπάρχοντα μοντέλα. Αποτελείται από μια επέκταση της res.partner.action_archive και έναν βοηθό (partner.archive.users.wizard), που εμφανίζεται ως διάλογος.

Δομικό στοιχείοΛειτουργία
action_archive στην επαφήΑναζητά ενεργούς χρήστες με share = True που συνδέονται με την επαφή ή (στις εταιρείες) με επαφές της εταιρείας. Αν υπάρχουν, αντί για αρχειοθέτηση επιστρέφεται ο διάλογος.
ΒοηθόςΑποθηκεύει την εταιρεία και τους χρήστες που βρέθηκαν, τους εμφανίζει και, με «Ναι», εκτελεί την αρχειοθέτηση με το κλειδί context archive_linked_users.
Context skip_archive_users_wizardΑπενεργοποιεί τον διάλογο. Τότε ισχύει ξανά ο έλεγχος του Odoo.
ΠρόσβασηΤον βοηθό μπορούν να δημιουργούν και να χρησιμοποιούν εσωτερικοί χρήστες (base.group_user).
ΜετάφρασηΠεριλαμβάνονται τα γερμανικά (de.po) και το πρότυπο (.pot).

Οι χρήστες αναζητούνται και αρχειοθετούνται με αυξημένα δικαιώματα (sudo). Έτσι ο διάλογος λειτουργεί και για χρήστες χωρίς πρόσβαση στη διαχείριση χρηστών. Η αντίστροφη όψη αναφέρεται στο Όρια.

Ένα εύρημα: Η δοκιμή ήταν πράσινη, ο διάλογος όμως χαλασμένος

Το άρθρωμα είχε στην πρώτη χρήση ένα σφάλμα που δεν βρήκαν οι αυτόματες δοκιμές. Στο πρώτο κλικ στο «Αρχειοθέτηση» στη διεπαφή εμφανίστηκε αντί για τον διάλογο η οθόνη σφάλματος του Odoo με Cannot read properties of undefined (reading 'map').

Η αιτία: Ο web client καλεί απευθείας την action_archive και εκτελεί μια ενέργεια που επιστρέφεται χωρίς περαιτέρω επεξεργασία. Διαβάζει υποχρεωτικά το κλειδί views της ενέργειας. Η δική μας ενέργεια είχε μόνο view_mode. Τις ενέργειες από κουμπιά με type="object" τις συμπληρώνει ο διακομιστής εκ των προτέρων (clean_action στο call_button), την άμεση κλήση της action_archive όχι. Οι δοκιμές καλούσαν τη μέθοδο μόνο σε Python, και εκεί το πεδίο που έλειπε δεν γινόταν αντιληπτό.

Η διόρθωση είναι μία γραμμή ("views": [(False, "form")]), στην οποία προστέθηκε ένας έλεγχος στη δοκιμή που απαιτεί ακριβώς αυτό το κλειδί. Δεν αρχειοθετήθηκε τίποτα κατά τη διαδικασία. Το δίδαγμα: όποιος επιστρέφει μια ενέργεια από μέθοδο που καλείται απευθείας από τον client (action_archive, action_unarchive και παρόμοιες), θα πρέπει να περιλαμβάνει πάντα το views.

Εγκατάσταση

git clone https://github.com/Alex0176/odoo-partner-archive-users.git
ln -s /pfad/odoo-partner-archive-users/partner_archive_users /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i partner_archive_users --stop-after-init

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

Όρια

  • Δικαίωμα. Επειδή οι χρήστες αρχειοθετούνται με αυξημένα δικαιώματα, όποιος μπορεί να αρχειοθετήσει μια επαφή μπορεί μέσω του διαλόγου να αρχειοθετήσει και τις προσβάσεις πύλης αυτής της εταιρείας. Για εσωτερικούς χρήστες αυτό δεν ισχύει. Όποιος θέλει να ασφαλίσει πιο λεπτομερώς τις προσβάσεις πύλης, πρέπει να προσαρμόσει το άρθρωμα.
  • Καμία αυτόματη επαναφορά. Αν η εταιρεία ενεργοποιηθεί ξανά αργότερα, οι χρήστες παραμένουν αρχειοθετημένοι. Πρέπει να επανενεργοποιηθούν χειροκίνητα.
  • Μόνο επαφές. Το άρθρωμα αφορά εταιρείες ως επαφές (res.partner). Η αρχειοθέτηση μιας εταιρείας Odoo (res.company) έχει άλλους ελέγχους, για παράδειγμα όταν είναι ακόμη η προεπιλεγμένη εταιρεία χρηστών. Γι' αυτό δεν προορίζεται το άρθρωμα.
  • Δοκιμασμένο μόνο για Odoo 19.0 Community. Για άλλες εκδόσεις δεν το έχουμε ελέγξει.

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

Γιατί δεν αρχειοθετούνται και οι υπάλληλοι;

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

Μπορώ να απενεργοποιήσω την ερώτηση επιβεβαίωσης;

Στον κώδικα μέσω του context skip_archive_users_wizard. Ρύθμιση στη διεπαφή δεν υπάρχει. Όποιος απεγκαταστήσει το άρθρωμα, παίρνει ξανά την τυπική συμπεριφορά του Odoo.

Υπό ποια άδεια διατίθεται;

Υπό την AGPL-3. Σφάλματα και βελτιώσεις είναι ευπρόσδεκτα ως issue στο αποθετήριο GitHub .

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

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

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

Κατάσταση: 3 Νοεμβρίου 2026. Έκδοση αρθρώματος 19.0.1.0.0 με τη διόρθωση της ίδιας ημέρας. Όλα τα ονόματα και τα ονόματα σύνδεσης στις εικόνες είναι τυχαία επιλεγμένα.