Zum Inhalt springen

Company-abhängiges Feld in Odoo: Funktionsweise und Einsatzfälle

Praktischer Leitfaden zu einer oft missverstandenen, aber extrem nützlichen Funktion im Odoo-Datenmodell
6. März 2026 durch
Company-abhängiges Feld in Odoo: Funktionsweise und Einsatzfälle
Dasolo
| Noch keine Kommentare

Einleitung


Eine Funktion, über die oft nur am Rande gesprochen wird, ist das firmenabhängige Feld in Odoo. Es ist ein kleines Attribut, das in Multi-Company-Umgebungen große Auswirkungen haben kann — vor allem sobald dieselben Datensätze von mehreren rechtlichen Einheiten genutzt werden.


Normalerweise hat ein Feld in Odoo für einen Datensatz einen einzigen Wert, den alle Nutzer sehen. Probleme tauchen auf, wenn beispielsweise zwei Gesellschaften dasselbe Produkt benutzen, aber jede ihre eigenen internen Artikelnummern oder Standardkonten benötigt. Ohne firmenabhängige Felder müsste man Daten duplizieren oder komplizierte Workarounds bauen.


Genau hier setzt das Attribut company_dependent an. Ob Sie Odoo entwickeln, konfigurieren oder sich einfach mit dem Framework vertraut machen: Das Verständnis dieses Mechanismus eröffnet clevere, saubere Lösungen für Multi-Company-Szenarien.

Was ist ein firmenabhängiges Feld in Odoo?


Ein firmenabhängiges Feld speichert pro Unternehmen einen eigenen Wert auf demselben Datensatz. Ein Benutzer aus Unternehmen A sieht beim Lesen des Felds den Wert von Unternehmen A; ein Benutzer aus Unternehmen B sieht auf demselben Datensatz den Wert von Unternehmen B.


Für Anwender verhält sich das Feld wie jedes andere: Eingaben, Formulare und Ansichten sind gleich — die Besonderheit passiert transparent im Hintergrund innerhalb des Odoo-ORM.


Darstellung in der Benutzeroberfläche

In der Oberfläche unterscheidet sich ein firmenabhängiges Feld nicht von einem gewöhnlichen Feld. Es gibt keine sichtbare Markierung, die dem Anwender anzeigt, dass der Wert unternehmensspezifisch ist. Diese Unsichtbarkeit ist gewollt, damit die Bedienung intuitiv bleibt.


Aus Entwicklersicht lässt sich company_dependent auf viele Feldtypen anwenden: Char, Boolean, Integer, Float, Many2one usw. Das Setzen von company_dependent=True aktiviert dieses Verhalten im ORM.


In Odoo Studio sind einige firmenabhängige Felder auf Standardmodellen bereits vorhanden (z. B. produktbezogene Buchungskonten). Eigene firmenabhängige Felder lassen sich ebenfalls anlegen, aber die Studio-Unterstützung für dieses Attribut variiert je nach Odoo-Version.

Wie das Feld funktioniert


Technisch gesehen arbeitet das Feature anders als normale Felder. Wer den Mechanismus kennt, kann beim Entwickeln, Testen und Debuggen böse Überraschungen vermeiden.


Speicherung in ir.property

In Odoo 16 und früher werden Werte firmenabhängiger Felder nicht in der Tabelle des Modells selbst abgelegt, sondern in einer zentralen Systemtabelle namens ir.property gespeichert.

Jeder Eintrag in ir.property verknüpft konkret:

  • einen bestimmten Datensatz (z. B. Produkt mit ID 42),
  • ein bestimmtes Feld (z. B. property_account_income_id),
  • eine bestimmte Firma,
  • und den tatsächlichen Wert für diese Kombination.

Deshalb wirkt das Verhalten für Anwender transparent: das ORM liest und schreibt automatisch in ir.property, je nach der aktuellen Firmenkontext-Einstellung.


Änderungen ab Odoo 17

Ab Odoo 17 wurde die Speicherung überarbeitet: Firmenabhängige Felder werden nun direkt in der Model-Tabelle in einem jsonb-Feld abgelegt. Die Werte pro Firma liegen als JSON-Dictionary vor. Das beschleunigt Abfragen deutlich und vereinfacht die Datenhaltung.


Die Oberfläche und das Entwickler-API bleiben im Wesentlichen gleich, doch Abfragen großer Datenmengen sind jetzt spürbar performanter.


Standardwerte

Firmenabhängige Felder unterstützen firmenbezogene Standardwerte. Fehlt für eine Firma ein expliziter Eintrag, fällt das Feld auf den Standard zurück. In Odoo 16 und älter kommen diese Defaults über ir.property, in Odoo 17+ werden sie direkt am Modell bzw. Feld verwaltet.


Interaktion mit dem ORM

Das ORM respektiert beim Zugriff stets die aktuelle Firma im Environment (self.env.company). Das bedeutet konkret:

  • Lesen liefert den Wert für die aktive Firma.
  • Schreiben ändert nur den Wert für die aktive Firma.
  • Mit record.with_company(company) können Sie gezielt Werte für eine bestimmte Firma lesen oder schreiben.

Geschäftliche Einsatzszenarien


Das firmenabhängige Feld ist kein theoretisches Spielzeug, sondern löst konkrete Probleme im Alltag von Multi-Company-Setups. Nachfolgend typische Einsatzfälle, in denen es sich besonders lohnt.


1. Buchhaltung: Firmenindividuelle Ertrags- und Aufwandskonten

Das klassischste Beispiel: Auf Produkten werden Konten wie property_account_income_id und property_account_expense_id firmenabhängig gepflegt.


So kann dasselbe Produkt in Unternehmen A und Unternehmen B verwendet werden, obwohl beide Unternehmen unterschiedliche Kontenpläne haben — ohne das Produkt zu duplizieren. Das Produkt bleibt zentral, die Buchungslogik ist je Firma unterschiedlich.


2. Vertrieb & CRM: Firmenabhängige Preislisten

In Konzernen mit mehreren Verkaufseinheiten kann jede Gesellschaft eigene Preisstrategien fahren. Ein firmenabhängiges Preislistenfeld ermöglicht es, dass ein gemeinsamer Kunde je nach verarbeitender Firma unterschiedliche Standardpreislisten verwendet.


Auf diese Weise bleibt die CRM-Datenbasis zentral, während jede Einheit ihre kommerziellen Regeln autonom durchsetzt.


3. Lager: Valuationsmethode pro Firma

Unternehmen in verschiedenen Ländern oder mit unterschiedlichen rechtlichen Anforderungen benötigen mitunter unterschiedliche Bewertungsmethoden (FIFO vs. Durchschnitt). Firmenabhängige Felder auf Produkt- oder Kategorieniveau vermeiden das Kopieren ganzer Kataloge.


4. Fertigung: Firmenabhängiger Standardlieferant

Wenn verschiedene Gesellschaften dasselbe Produkt von unterschiedlichen Lieferanten bevorzugen, hält ein firmenabhängiges Many2one-Feld auf res.partner die firmenspezifische Bezugsquelle sauber getrennt.


5. Gesetzliche und regulatorische Felder

Bei grenzüberschreitenden Geschäften müssen oft landesspezifische Kennzeichnungen auf Produkten gespeichert werden (HS-Codes, Steuerklassifikationen etc.). Ein firmenabhängiges Char-Feld ist hier eine schlanke Lösung, um Unterschiede je juristischer Einheit abzubilden.

Anlegen und Anpassen des Feldes


Felder anlegen: Studio oder Python-Code


Es gibt zwei gängige Wege, firmenabhängige Felder zu erstellen: per Odoo Studio oder direkt per Python in einem Modul.

Odoo Studio


Studio ermöglicht die Felderstellung ohne Entwicklungsaufwand, zeigt aber nicht immer einen klaren Schalter für company_dependent an — das Verhalten ist versionsabhängig. Für einfache Anforderungen ist Studio ein schneller Einstieg, für komplexe Anpassungen empfiehlt sich die technische Lösung.


Technischer Weg: Python-Felder

In einem Custom-Modul ist das Anlegen firmenabhängiger Felder unkompliziert. Das ist der übliche Entwicklungsansatz in Odoo-Projekten.

Beispiel (typisches Muster):
from odoo import fields, models

class ProductTemplate(models.Model):
    _inherit = 'product.template'

    x_internal_ref = fields.Char(
        string='Interne Referenz (pro Firma)',
        company_dependent=True,
    )

    x_preferred_carrier_id = fields.Many2one(
        comodel_name='res.partner',
        string='Bevorzugter Lieferant',
        company_dependent=True,
    )

Das Hinzufügen von company_dependent=True in der Felddeklaration genügt — das ORM kümmert sich um Speicherung und Zugriff.


Firmenbezogene Standardwerte setzen

In Odoo 16 und älter können Sie firmenweite Defaults über ir.property anlegen. Das ist praktisch, wenn alle Datensätze einer Firma einen sinnvollen Ausgangswert erhalten sollen, ohne jeden Eintrag manuell zu ändern.

Beispiel zur Programmiersetzung eines Defaults:
self.env['ir.property']._set_default(
    'x_internal_ref',
    'product.template',
    'DEFAULT-VALUE',
    company_id=self.env.company.id,
)

In Odoo 17+ werden Defaults direkt auf dem Modell gehalten und sind über die Felddefinition zugänglich.


Studio-Felder und ihre Grenzen

Achten Sie bei Custom-Feldern aus Studio auf das erforderliche x_-Prefix. Das firmenabhängige Verhalten ist in Studio nicht immer sichtbar, lässt sich aber im technischen Menü (Entwicklermodus) konfigurieren, sofern die Version es unterstützt.

Bewährte Vorgehensweisen


Praktische Empfehlungen


1. Nur verwenden, wenn Werte wirklich firmenabhängig sind

Firmenabhängige Felder erhöhen die Komplexität. Wenn der Wert über alle Firmen hinweg identisch ist, bleiben Sie bei normalen Feldern. company_dependent=True ist für Fälle reserviert, in denen Werte pro juristischer Einheit variieren müssen.


2. Immer im Multi-Company-Kontext testen

Testen Sie Funktionen mit mindestens zwei aktiven Firmen. In einer Single-Company-Testumgebung fallen viele Probleme nicht auf, die später in der Produktion auftreten.


3. Verwenden Sie with_company() für Firmenübergreifende Operationen

Wenn Code Werte für eine andere Firma lesen oder schreiben muss, nutzen Sie record.with_company(target_company). Vermeiden Sie das manuelle Umschalten des Environment-Unternehmens ohne korrektes Zurücksetzen.


4. Vorsicht bei Exporten und Importen

Beim Export spiegeln firmenspezifische Felder immer die Firma des exportierenden Nutzers wider. Importiert man dieselben Daten unter einer anderen Firma, werden die Werte für diese Firma gesetzt. Planen Sie diesen Effekt bewusst bei Migrationen und Datenübernahmen ein.


5. Dokumentieren Sie, welche Felder firmenabhängig sind

Endanwender wissen selten, welche Felder pro Firma unterschiedlich sein können. Ein Eintrag in der internen Odoo-Dokumentation oder dem Onboarding hilft Verwirrung zu vermeiden, wenn Nutzer beim Firmenwechsel andere Werte sehen.


6. Many2one statt Char für referenzielle Daten

Wenn der pro Firma unterschiedliche Wert auf eine andere Entität verweist (Konto, Preislisten, Partner), verwenden Sie ein Many2one-Feld statt eines Freitextfelds. Das hält das Datenmodell ordentlich und erleichtert Auswertungen.


Häufige Fallstricke


Häufige Probleme und wie man sie vermeidet


Fallstrick 1: Firmenkontext in automatisierten Aktionen vergessen

Geplante Aktionen oder Server-Aktionen laufen oft im Kontext der ersten Firma in der Datenbank, nicht notwendigerweise in der Firma, die Sie erwarten. Prüfen Sie den Firmenkontext explizit und nutzen Sie with_company(), wenn automatisierte Prozesse firmenabhängige Felder berühren.


Fallstrick 2: Nicht mit berechneten Feldern verwechseln

Firmenabhängige Felder sind keine computed-Felder und haben keine compute-Methode. Die Variation entsteht durch die Speicherung, nicht durch Berechnung. compute= neben company_dependent=True zu verwenden funktioniert nicht zuverlässig und kann Fehler erzeugen.


Fallstrick 3: Suchen über Firmen hinweg

ORM-Suchen auf firmenabhängigen Feldern liefern standardmäßig nur Treffer für die aktuelle Firma. Wenn Sie über alle Firmen suchen müssen, müssen Sie in Odoo 16 und älter direkt ir.property abfragen oder in Odoo 17+ das jsonb-Feld gezielt auswerten — ein häufiger Stolperstein bei Reports und Datenexporten.


Fallstrick 4: Keine Defaults für alle Firmen setzen

Neu eingeführte firmenabhängige Felder liefern für Firmen ohne expliziten Wert oft False/None. Wenn Ihre Geschäftslogik einen Default erwartet, setzen Sie diesen per Migrationsskript für alle relevanten Firmen nach.


Fallstrick 5: Mit Zugriffsrechten verwechseln

Firmenabhängige Felder regeln, welcher Wert angezeigt wird — nicht, ob das Feld sichtbar sein darf. Wenn Felder komplett für bestimmte Firmen oder Benutzer ausgeblendet werden sollen, nutzen Sie Record Rules oder feldspezifische Zugriffsrechte, nicht company_dependent.

Fazit


Das firmenabhängige Feld ist eines dieser Odoo-Features, das unauffällig bleibt, bis man es benötigt — und dann unverzichtbar wird. Es ist die richtige Lösung, wenn derselbe Datensatz unterschiedliche Werte für verschiedene juristische Einheiten tragen muss: Buchungskonten, Preislogik, regulatorische Angaben oder andere firmenspezifische Attribute.


Wer den Mechanismus auf ORM-Ebene, die Versionsunterschiede in der Speicherung und die typischen Fallstricke kennt, spart viel Zeit in Multi-Company-Projekten. Ob Sie es im Entwickler-Guide lesen oder bei der Fehlersuche in einem Live-System begegnen: Kenntnisse zu diesem Feldtyp sind ein klares Qualitätsmerkmal in Odoo-Projekten.


Wenn Sie auf dem Odoo-Framework aufbauen und per Firma unterschiedliche Daten sauber handhaben wollen, dann ist company_dependent=True meist die richtige Wahl.

Brauchen Sie Unterstützung bei Ihrer Odoo-Implementierung?


Bei Dasolo unterstützen wir Unternehmen bei Implementierung, Anpassung und Optimierung von Odoo — auch in komplexen Multi-Company-Landschaften. Egal ob Datenmodell, Strategie für Custom Fields oder komplette Rollouts: Unser Team bringt die funktionale und technische Erfahrung mit.


Bei Fragen zu firmenabhängigen Feldern oder anderen Themen rund um Ihre Odoo-Implementierung helfen wir Ihnen gerne weiter. Kontaktieren Sie uns und erzählen Sie uns, welches Projekt Sie vorhaben.

Company-abhängiges Feld in Odoo: Funktionsweise und Einsatzfälle
Dasolo 6. März 2026
Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen