Die größte Stärke von Odoo beginnt dort, wo die fertigen Module enden. Mit Python + XML ist es möglich, unternehmensspezifische Geschäftsregeln ins System einzubringen und in der Standard-Odoo-Oberfläche laufen zu lassen. In diesem Beitrag behandeln wir die Schritte, Best Practices und Deploy-Strategien der individuellen Modulentwicklung.
01. Die Anatomie eines Moduls
Ein Odoo-Modul als Ordnerstruktur:
- manifest.py (Metadaten)
- models/ (Python-Geschäftsregeln)
- views/ (XML-Oberflächendefinitionen)
- security/ (Zugriffsregeln)
- data/ (Standarddatensätze)
- static/ (Icon, CSS, JS)
Ein kurzes Modul funktioniert mit 50–100 Codezeilen.
02. Modelldefinition und Vererbung
Der ORM (Object-Relational Mapper) von Odoo bildet die Datenbank auf Python-Klassen ab. Für eine neue Modelldefinition: class MyModel(models.Model): _name = "my.model"; und die Felder werden definiert. Um einem bestehenden Modell ein Feld hinzuzufügen, wird _inherit verwendet.
03. Ansichten (Views) definieren
Formulare, Listen und Suchfilter werden mit XML definiert. Mit dem Attribut inherit_id lässt sich einem bestehenden Odoo-Formular ein Feld hinzufügen; mit xpath-Ausdrücken wird bestimmt, wo es platziert wird.
04. Studio vs. Code
Einfache Änderungen (ein neues Feld hinzufügen, ein Formular ändern) lassen sich mit Studio ohne Code umsetzen. Doch für komplexe Geschäftsregeln, automatische Berechnungen oder die Integration einer externen API ist das Schreiben von Python-Code nötig. Codebasierte Module sind wartungsfreundlicher als Studio.
05. Deploy und Versionskontrolle
Individuelle Module sollten in Git versioniert werden. odoo.sh ist eine Plattform, die Ihr eigenes Git-Repository automatisch baut. Bei self-hosted-Installationen wird das Deploy mit CI/CD-Pipelines automatisiert.