Zum Inhalt springen

Das stock.move Modell: Odoos Architektur der Bestandsbewegungen Verstehen

Ein umfassender Leitfaden zum zentralen Bestandsbewegungsmodell von Odoo für Entwickler und funktionale Berater
10. März 2026 durch
Das stock.move Modell: Odoos Architektur der Bestandsbewegungen Verstehen
Dasolo
| Noch keine Kommentare

Einführung


In Odoo definieren Modelle, wie Daten strukturiert und in der Datenbank gespeichert werden. Jedes Stück Geschäftsdaten, mit dem Sie arbeiten, von Verkaufsaufträgen über Rechnungen bis hin zu Bestandsbewegungen, lebt in einem Modell.


Das Verständnis von Odoo-Modellen ist sowohl für Entwickler als auch für funktionale Berater unerlässlich. Modelle sind das Fundament der Odoo-Datenarchitektur. Sie definieren Felder, Beziehungen und Geschäftslogik.


Dieser Artikel konzentriert sich auf eines der wichtigsten Modelle in Odoo: stock.move. Egal, ob Sie benutzerdefinierte Lager-Module erstellen, externe Systeme integrieren oder Bestandsabläufe konfigurieren, Sie werden mit diesem Modell arbeiten.

Was ist das stock.move Modell


Das stock.move-Modell stellt eine einzelne Bestandsbewegung in Odoo dar. Es definiert den Transfer eines Produkts von einem Standort zu einem anderen. Jedes Mal, wenn Waren von einem Regal genommen, zwischen Lagern bewegt oder an einen Kunden geliefert werden, wird ein stock.move-Datensatz erstellt.


Dieses Modell in Odoo wird vom Modul Inventory (Stock) verwendet. Verkauf, Einkauf, Fertigung und E-Commerce erstellen alle stock.move-Datensätze, wenn sie Bestandsoperationen auslösen. Wenn Sie einen Lieferauftrag bestätigen, Waren von einem Anbieter erhalten oder einen Fertigungsauftrag abschließen, erstellen oder aktualisieren Sie stock.move-Datensätze.


Das Modell ist im Lager-Modul definiert. Andere Module erweitern es durch die Vererbung von Odoo-Modellen. Der Verkauf fügt sale_line_id hinzu. Der Einkauf fügt purchase_line_id hinzu. Die Fertigung fügt production_id hinzu. Jedes Modul fügt hinzu, was es benötigt, ohne die Kernstruktur zu duplizieren.

Wichtige Felder im Modell


Hier sind die wichtigsten Odoo-Felder im stock.move-Modell. Das Verständnis dieser Felder wird Ihnen helfen, effektiv mit Bestandsbewegungen zu arbeiten.


1. name

Typ: Char. Dieses Feld speichert den Namen oder die Beschreibung der Bewegung. Es wird typischerweise aus dem Produktnamen und der Menge erstellt. Wird in vielen Odoo-Ansichten angezeigt und ist der primäre Identifikator für die Bewegung in Listen.


2. product_id

Typ: Many2one (product.product). Das Produkt, das bewegt wird. Dies ist ein erforderliches Feld. Jede Bestandsbewegung muss auf ein Produkt verweisen. Odoo verwendet dies, um Mengen zu verfolgen und Bestandsregeln anzuwenden.


3. product_uom

Typ: Many2one (uom.uom). Die Maßeinheit für die Menge. Erforderlich. Entspricht typischerweise der Standard-UoM des Produkts. Odoo validiert, dass die Mengen in dieser Einheit ausgedrückt werden.


4. product_uom_qty

Typ: Float. Die Menge, die in der Maßeinheit des Produkts bewegt werden soll. Dies ist die Nachfragemenge. Wenn die Bewegung abgeschlossen ist, ist quantity_done die tatsächlich verarbeitete Menge.


5. Menge

Typ: Float. Ein berechnetes oder angezeigtes Feld, das die Menge zeigt. Oft in Ansichten für eine benutzerfreundliche Anzeige verwendet. Kann gleich sein wie product_uom_qty oder ein umgerechneter Wert.


6. location_id

Typ: Many2one (stock.location). Der Quellstandort. Wo das Produkt herkommt. Erforderlich. Bei ausgehenden Bewegungen ist dies der Lagerstandort. Bei eingehenden Bewegungen kann es sich um einen Lieferanten- oder Produktionsstandort handeln.


7. location_dest_id

Typ: Many2one (stock.location). Der Zielstandort. Wohin das Produkt geht. Erforderlich. Bei eingehenden Bewegungen ist dies der Lagerstandort. Bei ausgehenden Bewegungen kann es sich um einen Kunden- oder Schrottstandort handeln.


8. picking_id

Typ: Many2one (stock.picking). Das Transfer- oder Kommissionierungsdokument, das diese Bewegung gruppiert. Ein Lieferauftrag, eine Empfangsbestätigung oder ein interner Transfer. Bewegungen werden für Benutzeroperationen nach Picking gruppiert.


9. picking_type_id

Typ: Many2one (stock.picking.type). Der Operationstyp. Definiert, ob es sich um eine ausgehende Lieferung, einen eingehenden Empfang oder einen internen Transfer handelt. Steuert den Workflow und die Standardstandorte.


10. status

Typ: Auswahl. Der aktuelle Status der Bewegung. Werte: Entwurf, Wartend, Bestätigt, Zugeteilt, Erledigt, Storniert. Entwurf ist noch nicht bestätigt. Zugeteilt bedeutet, dass der Bestand reserviert ist. Erledigt bedeutet, dass die Bewegung abgeschlossen ist.


11. datum

Typ: Datum/Uhrzeit. Das geplante Datum für den Umzug. Wird für die Planung und Terminierung verwendet. Odoo nutzt dies, um Transfers zu priorisieren und Operationen zu planen.


12. fristdatum

Typ: Datum/Uhrzeit. Die Frist für den Umzug. Bei Kundenlieferungen ist dies oft das versprochene Lieferdatum. Wird in Dringlichkeitsberechnungen verwendet.


13. ursprung

Typ: Char. Referenz zum ursprünglichen Dokument. Zum Beispiel eine SO-Nummer, PO-Nummer oder MO-Nummer. Hilft, den Umzug zu seiner Quelle zurückzuverfolgen.


14. move_dest_id

Typ: Many2one (stock.move). Der Zielumzug in einer Kette. Wenn ein Umzug einen anderen speist (z. B. produziert ein Fertigungsausgang eine Lieferung), verbindet dies sie. Wird für Umzugsketten und -propagation verwendet.


15. move_orig_ids

Typ: One2many (stock.move). Die ursprünglichen Umzüge. Das Gegenstück zu move_dest_id. Listet Umzüge auf, die in diesen Umzug einfließen. Wird für die Rückverfolgbarkeit verwendet.


16. move_line_ids

Typ: One2many (stock.move.line). Die Umzugszeilen. Detaillierte Aufschlüsselung des Umzugs mit Los-, Serien- oder Standortdetails. Wenn Sie Lagerbestände reservieren oder verarbeiten, werden Umzugszeilen erstellt.


17. partner_id

Typ: Many2one (res.partner). Der Partner, der mit dem Vorgang verbunden ist. Bei Kundenlieferungen der Kunde. Bei Lieferantenempfängen der Lieferant. Wird für Adresse und Berichterstattung verwendet.


18. company_id

Typ: Many2one (res.company). In Multi-Company-Setups zeigt dies an, zu welcher Odoo-Firma der Vorgang gehört. Beeinflusst die Sichtbarkeit von Datensätzen und intercompany Regeln.


19. quantity_done

Typ: Float. Die Menge, die verarbeitet oder erledigt wurde. Wenn der Benutzer auswählt oder empfängt, wird dies aktualisiert. Der Vorgang ist abgeschlossen, wenn quantity_done gleich product_uom_qty ist.


20. reserved_availability

Typ: Float. Die Menge, die für diesen Vorgang reserviert wurde. Der Bestand wird reserviert, wenn der Vorgang zugewiesen wird. Dieses Feld zeigt, wie viel verfügbar ist.


21. create_date

Typ: Datetime. Speichert das Datum und die Uhrzeit, zu der der Datensatz erstellt wurde. Wird automatisch von Odoo verwaltet. Nützlich für Berichterstattung und Prüfung.


22. write_date

Typ: Datetime. Speichert das Datum und die Uhrzeit der letzten Änderung. Ebenfalls automatisch verwaltet. Hilft dabei, nachzuvollziehen, wann die Daten zuletzt aktualisiert wurden.


23. Sequenz

Typ: Ganzzahl. Anzeigeordnung innerhalb eines Picks. Wird verwendet, um Bewegungen in der Benutzeroberfläche zu sortieren. Niedrigere Zahlen erscheinen zuerst.


24. Priorität

Typ: Auswahl. Dringlichkeitsstufe. Oft 0 für normal, 1 für dringend. Wird in der Planung und Terminierung verwendet. Dringende Bewegungen können in den Operationen priorisiert werden.


25. Beschreibung_Picking

Typ: Char. Eine Beschreibung oder Notiz für die Bewegung. Auf Picking-Dokumenten angezeigt. Nützlich für spezielle Anweisungen oder Handhabungsnotizen.


26. Referenz

Typ: Char. Interne Referenz oder Code. Kann für die Zuordnung zu externen Systemen oder zur benutzerdefinierten Verfolgung verwendet werden.


27. Gruppen-ID

Typ: Many2one (procurement.group). Die Beschaffungsgruppe. Gruppiert verwandte Bewegungen aus der gleichen Beschaffung (z. B. eine einzelne Verkaufsbestellung). Wird für Planung und Verkettung verwendet.


28. Beschaffungsmethode

Typ: Auswahl. Auf Lager produzieren oder auf Bestellung produzieren. Bestimmt, ob der Bestand aus vorhandenen Beständen entnommen oder für die Produktion/Beschaffung ausgelöst wird.


29. sale_line_id

Typ: Many2one (sale.order.line). Hinzugefügt durch das Verkaufsmodul. Verknüpft die Bewegung mit der Verkaufsbestellzeile, die sie ausgelöst hat. Wird für Nachverfolgbarkeit und Berichterstattung verwendet.


30. purchase_line_id

Typ: Many2one (purchase.order.line). Hinzugefügt durch das Einkaufsmodul. Verknüpft die Bewegung mit der Einkaufsbestellzeile. Wird beim Empfang von Waren von Lieferanten verwendet.


31. production_id

Typ: Many2one (mrp.production). Hinzugefügt durch die Fertigung. Verknüpft die Bewegung mit dem Fertigungsauftrag. Wird für den Verbrauch von Rohmaterialien und die Ausgabe von Fertigprodukten verwendet.


32. active

Typ: Boolean. Soft-Delete-Flag. Wenn False, wird der Datensatz archiviert und von den Standardansichten verborgen. Datensätze werden nicht physisch gelöscht.

Wie dieses Modell in Geschäftsabläufen verwendet wird


1. Kundenlieferung

Wenn eine Verkaufsbestellung bestätigt wird, erstellt Odoo stock.move-Datensätze für jede Produktlinie. Jede Bewegung hat location_id als Lagerort und location_dest_id als Kundenstandort. Die Bewegungen werden in einem Picking (Lieferauftrag) gruppiert. Wenn das Lager die Waren kommissioniert und versendet, wird quantity_done aktualisiert und der Bewegungsstatus wird auf erledigt gesetzt.


2. Lieferantenempfang

Wenn eine Einkaufsbestellung bestätigt wird, erstellt Odoo stock.move-Datensätze für eingehende Waren. location_id ist der Standort des Lieferanten, location_dest_id ist der Lagerort. Die Bewegungen werden in einem Empfang gruppiert. Wenn die Waren ankommen, validiert der Benutzer und quantity_done wird festgelegt.


3. Interne Übertragung

Übertragungen zwischen Lagern oder Standorten erstellen stock.move-Datensätze. location_id ist das Quelllager, location_dest_id ist das Ziel. Wird für Nachschub, Bestandsanpassungen oder Multi-Lager-Betrieb verwendet.


4. Fertigung

Fertigungsaufträge erstellen zwei Arten von Bewegungen: eingehende Rohmaterialien (von Lager zu Produktion) und ausgehende Fertigprodukte (von Produktion zu Lager). Das Feld production_id verknüpft diese Bewegungen mit dem Fertigungsauftrag. Die Bewegungsverkettung über move_dest_id verbindet die Produktionsausgaben mit nachgelagerten Lieferungen.


5. Rücksendungen und Schrott

Kundenrücksendungen erzeugen umgekehrte Bewegungen. Schrottoperationen erstellen Bewegungen zu einem Schrottstandort. Dasselbe stock.move-Modell behandelt all diese Flüsse. Der picking_type_id bestimmt den Operationstyp und den Workflow.

Wie Entwickler dieses Modell erweitern


Entwickler erweitern stock.move mit mehreren Mustern. Die Vererbung von Odoo-Modellen ist der Hauptmechanismus.


Modellvererbung

Verwenden Sie _inherit = 'stock.move', um das Modell zu erweitern. Fügen Sie neue Felder hinzu, überschreiben Sie Methoden oder fügen Sie Einschränkungen hinzu. Das vererbte Modell in Odoo hält Ihre Änderungen in einem separaten Modul für einfache Upgrades.


Felder hinzufügen

Definieren Sie neue Odoo-Felder in Ihrem vererbten Modell. Verwenden Sie den richtigen Feldtyp: Char, Many2one, Boolean, Integer, Text, Auswahl. Berücksichtigen Sie unternehmensabhängige Felder für mehrere Unternehmen. Bei Bestandsbewegungen umfassen gängige Erweiterungen benutzerdefinierte Sendungsnummern, Frachtführerreferenzen oder Batch-Attribute.


Python-Erweiterungen

Überschreiben Sie _action_done, _action_assign oder _action_cancel, um Logik hinzuzufügen. Verwenden Sie super(), um die Originalmethode aufzurufen. Seien Sie vorsichtig mit Bestandsaktualisierungen und Bewegungsverkettungen. Das API-Modell in Odoo stellt diese Methoden zur Erweiterung zur Verfügung.


Odoo Studio

Odoo Studio ermöglicht es Ihnen, Felder ohne Code hinzuzufügen. Gut für schnelle Anpassungen wie benutzerdefinierte Felder in Bewegungsformularen. Für komplexe Logik oder Workflow-Änderungen sind benutzerdefinierte Module wartungsfreundlicher.

Best Practices


  • Stellen Sie immer sicher, dass location_id und location_dest_id korrekt gesetzt sind. Falsche Standorte können zu falschen Bestandsniveaus führen.
  • Verwenden Sie die picking_id, um verwandte Bewegungen zu gruppieren. Erstellen Sie keine Bewegungen ohne eine Picking, wenn sie zu einem Transfer gehören.
  • Beim Erstellen von API-Integrationen verwenden Sie die XML-RPC- oder JSON-RPC-API. Das Modell stock.move ist vollständig exponiert. Ordnen Sie externe IDs sorgfältig zu.
  • Für benutzerdefinierte Felder verwenden Sie das x_-Präfix oder ein Modul-Präfix, um Konflikte mit zukünftigen Odoo-Versionen zu vermeiden.
  • Verwenden Sie move_dest_id und move_orig_ids für die Rückverfolgbarkeit. Wenn Sie verkettete Bewegungen programmgesteuert erstellen, setzen Sie diese Links korrekt.
  • Berücksichtigen Sie quantity_done im Vergleich zu product_uom_qty bei der Validierung. Teilweise Lieferungen sind erlaubt.

Häufige Fehler


  • Erstellen von Bewegungen mit falschen Standorttypen. Quelle und Ziel müssen kompatibel sein (z. B. nicht beide Kundenstandorte).
  • Ändern von product_uom_qty, nachdem Bewegungszeilen existieren. Dies kann zu Bestandsinkonsistenzen führen. Stornieren und neu erstellen, wenn nötig.
  • Vergessen, den Ursprung festzulegen. Ohne Ursprung ist es schwierig, eine Bewegung auf das Quell-Dokument zurückzuverfolgen.
  • Das Überschreiben von _action_done, ohne super() aufzurufen. Dies kann die Bestandsaktualisierungen und andere Module beeinträchtigen.
  • Das direkte Erstellen von Bewegungen, ohne den richtigen Workflow (z. B. stock.picking) zu durchlaufen. Das Umgehen der Abholung kann Reservierungen und Zuweisungen beeinträchtigen.
  • Das Ignorieren von move_dest_id beim Aufteilen oder Zusammenführen von Bewegungen. Verkettete Bewegungen können verwaist werden.

Fazit


Das stock.move-Modell ist zentral für Odoo-Inventory. Es speichert jede Bewegung von Waren von einem Standort zu einem anderen. Das Verständnis seiner Felder und wie Module es erweitern, wird Ihnen helfen, Odoo effektiv zu konfigurieren, anzupassen und zu integrieren.


Ob Sie ein funktionaler Berater sind, der Lagerprozesse abbildet, oder ein Entwickler, der benutzerdefinierte Module erstellt, ein solides Verständnis von stock.move wird Zeit sparen und Fehler verhindern.

Brauchen Sie Hilfe bei Ihrer Odoo-Implementierung?


Dasolo hilft Unternehmen bei der Implementierung, Anpassung und Optimierung von Odoo. Wir sind auf API-Integrationen und Odoo-Entwicklung spezialisiert. Unser Team hat umfassende Erfahrung mit der Odoo-Datenarchitektur und Modellen wie stock.move.


Wenn Sie Hilfe bei Ihrer Odoo-Implementierung, benutzerdefinierten Modulen oder Integrationen benötigen, sind wir hier, um zu helfen. Vereinbaren Sie eine Demo um Ihr Projekt zu besprechen.

Das stock.move Modell: Odoos Architektur der Bestandsbewegungen Verstehen
Dasolo 10. März 2026
Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen