App und Modul in Odoo: Definition und Unterschied
Kurz gesagt
Der Unterschied steht im Manifest: application: True macht ein Modul zur App, ohne dieses Kennzeichen bleibt es ein technisches Modul, das eine bestehende Anwendung ergänzt. Im Apps-Dashboard zeigt der Standardfilter Apps nur Apps, technische Module erscheinen über den Filter Extra. Maßgeblich ist die Dokumentation 20.0, die beide Rollen nicht nach Edition trennt.
Das Wichtigste
- Im Manifest entscheidet application: True über die Rolle als App; ohne das Kennzeichen bleibt das Paket ein technisches Modul.
- Das Apps-Dashboard zeigt standardmäßig nur Apps; technische Module erscheinen nach Auswahl des Filters Extra.
- Abhängigkeiten installiert Odoo mit; beim Deinstallieren entfernt es abhängige Apps und deren Datensätze (Dokumentation 20.0).
- Die geöffnete Dokumentationsseite 20.0 trennt die beiden Rollen nicht nach Edition; welche Apps eine Edition enthält, ist eine andere Frage.
- Eigene und Apps-Store-Module nimmt Odoo Online laut Dokumentation 20.0 nicht auf; die Apps-FAQ lässt reine Datenmodule zu.
Modul ist in Odoo ein installierbares Softwarepaket aus Python-Code, Daten und Ansichten, zu dem eine Manifest-Datei (__manifest__.py) die Metadaten liefert; eine App ist ein solches Modul, das sein Manifest mit application: True als eigenständige Anwendung ausweist.
Woher der Unterschied kommt
Was im Apps-Dashboard als Kachel erscheint, ist technisch ein Modul — auch wenn Odoo es als App führt. Ob Odoo es als eigenständige Anwendung führt oder als Zusatz zu einer bestehenden, entscheidet ein Feld in der Manifest-Datei: application. Die Vorgabe ist False; ein ausdrückliches True macht daraus eine App. Installiert, aktualisiert und entfernt wird beides über dasselbe Dashboard (Dokumentation 20.0).
| Frage | App | Technisches Modul |
|---|---|---|
| Kennzeichen im Manifest | application: True |
kein Kennzeichen, Vorgabe False |
| Zweck | eigenständige Anwendung | ergänzt eine bestehende Anwendung |
| Sichtbar im Apps-Dashboard | Standardfilter Apps | erst mit dem Filter Extra |
| Beispiel | Verkauf (Sales) | sale, sales_team, digest |
Beispiel: ein kleiner Abhängigkeitsbaum
Die App Verkauf (Sales) trägt im Quellcode den Namen sale_management und hängt von den Modulen sale und digest ab; sale selbst führt kein application-Kennzeichen. Die Restaurant-App setzt die Kassensystem-App (Point of Sale) voraus, weil sie deren Funktionen erweitert.
Verkauf (sale_management) App application: True
├── sale Modul hängt von sales_team, account_payment, utm ab
└── digest Modul
Kassensystem (point_of_sale) App application: True
└── Restaurant (pos_restaurant) App hängt von point_of_sale ab
Wird das Kassensystem entfernt, verschwindet die abhängige Restaurant-App mit; dabei löscht Odoo die zugehörigen Datensätze. Ein Modul ohne eigenes Kennzeichen, aber mit Funktion für zwei Apps, ist sale_crm: Es hängt von sale und crm ab und trägt auto_install, sodass Odoo es automatisch installiert, sobald beide Apps vorhanden sind.
Grundlage und Grenzen
Maßgeblich sind das Manifest und die Dokumentation 20.0; für Deutschland, Österreich und die Schweiz nennt die geöffnete Seite keine Abweichung, und sie trennt die beiden Rollen nicht nach Edition — welche Apps eine Edition enthält, ist eine andere Frage (siehe Community oder Enterprise). Eigene Module und Module aus dem Apps Store spielen Sie auf Odoo.sh oder einem selbst betriebenen Server ein; Odoo Online nennt die Dokumentation 20.0 dafür nicht kompatibel, die Apps-FAQ lässt dort reine Datenmodule ohne Python-Dateien zu. Vor Änderungen an einer Produktivdatenbank rät die Dokumentation zu einer Kopie zum Testen, weil Abhängigkeiten weitere Module mitbringen und das Entfernen Datensätze löscht.
Nicht zu verwechseln mit
- Fremdmodul aus dem Apps Store: die Herkunft entscheidet nicht über App oder Modul, sondern das Kennzeichen im Manifest (Prüfkriterien für Fremdmodule).
- Edition (Community oder Enterprise): der Lizenzumfang, keine Aussage über die Rolle als App oder Modul (Odoo Community).
- Abhängigkeit (
depends): die Beziehung zwischen zwei Modulen, kein eigenes Paket; ein Modul kann mehrere Abhängigkeiten haben.
Wie Sie Pakete installieren, aktualisieren und entfernen, steht in Apps und Module installieren; eigenen Code auf den Server bringen Eigene Module einspielen.