Inventur in Odoo durchführen: Stichtag und Zählung
Kurz gesagt
In Odoo 20.0 zählen Sie unter Lager ‣ Vorgänge ‣ Bestandsaufnahme: Sie tragen je Zeile den Zählstand in die Spalte Gezählt ein und wenden die Anpassung an; Odoo bucht die Differenz als Lagerbuchung gegen einen virtuellen Lagerort und ändert Menge und Lagerwert. Haben sich die Bestände seit der Zählung geändert, verlangt Odoo laut Dokumentation vor dem Anwenden eine Bestätigung; welchen Dialog Odoo dabei zeigt, ist im Community-Zweig 20.0 belegt: Dort können Sie die gezählte Menge oder die Differenz beibehalten, und bei Differenz beibehalten ist der neue Bestand der aktuelle Bestand plus die erfasste Differenz. Den Zähltermin plant die Einstellung Datum der jährlichen Inventur als Vorschlag in der Spalte Geplant; das Datum der entstehenden Lagerbuchung setzen Sie im Anpassungsdialog der Mehrfachanwendung über das Feld Zähldatum (Feldbeschreibung im Community-Zweig 20.0). Prüfen Sie nach dem Anwenden den Stand in der Spalte Vorrätig und die Buchung in der Bewegungshistorie; im Community-Zweig 20.0 setzt Odoo Gezählt und Differenz dabei auf 0 zurück.
Das Wichtigste
- Die Zählseite heißt Bestandsaufnahme (Physical Inventory) und liegt unter Lager ‣ Vorgänge; sie zeigt Produkte mit Bestandshistorie, auch negative Bestände.
- Gezählt eintragen, Differenz rechnet Odoo selbst: grün als Zugang, rot und negativ als Abgang; Anwenden erzeugt die Lagerbuchung.
- Eine einzelne Zeile wenden Sie direkt über die Schaltfläche Anwenden am Zeilenende an; für mehrere Zeilen oder eine erfasste Begründung öffnet Odoo den Anpassungsdialog mit Grund für Inventur und Zähldatum. Haben sich die Bestände seit der Zählung geändert, verlangt Odoo vor dem Anwenden eine Bestätigung; im Community-Zweig 20.0 öffnet sich dabei auch bei einer einzelnen Zeile das Fenster Konflikt bei der Bestandsaufnahme mit Gezählte Menge behalten, Differenz beibehalten oder Verwerfen.
- Die Differenzbuchung läuft gegen einen virtuellen Lagerort außerhalb des Bestands; Menge und Lagerwert ändern sich mit dem Anwenden, bewertet zum Feld Kosten des Produkts.
- Nach dem Anwenden zeigt Vorrätig den gezählten Wert, außer Sie haben im Konfliktfall Differenz beibehalten gewählt (Auswahl des Konfliktdialogs, Community-Zweig 20.0), dann den aktuellen Bestand plus die erfasste Differenz; die Buchung steht in der Bewegungshistorie, und im Community-Zweig 20.0 setzt Odoo Gezählt und Differenz danach auf 0 zurück.
- Die Spalte Geplant nennt den geplanten Verarbeitungstag; Datum und Monat der jährlichen Inventur sind auf den 31. Dezember vorbelegt, die Inventurhäufigkeit steuert zyklische Zählungen je Lagerort.
Odoo zählt auf einer Liste, nicht auf einem Formular: Jede Zeile steht für ein Produkt an einem Lagerort, in der Spalte Gezählt tragen Sie die tatsächlich gezählte Menge ein, und Odoo rechnet die Abweichung. Diese Anleitung zeigt den Ablauf für Odoo 20.0 (App Lager), von der Vorbereitung über die Differenzbuchung bis zur zyklischen Zählung. Wie Sie den Lagerortbaum dafür vorbereiten, steht im Artikel Lagerorte und Lagerplätze einrichten.
Was Sie vorab brauchen
- Ein Benutzerkonto mit Zugriff auf die App Lager. Gezählt eintragen und Anwenden setzen keine Administratorrechte voraus; Zählung anfordern, Auf 0 setzen und Umlagern stehen im Community-Zweig 20.0 nur der Inventory-Administratorrolle zur Verfügung (stock.group_stock_manager), das Umlagern von Produkten auch laut Dokumentation 20.0.
- Entscheidung über Zähltag und Buchungsdatum: jährliche Vollzählung zu einem festen Tag oder zyklische Zählung je Lagerort.
- Die Funktion Lagerorte, wenn Sie je Raum oder Regal zählen und filtern wollen. Ohne sie führt Odoo den Bestand am Hauptlagerort des Lagerhauses, und die Spalte Lagerort erscheint nicht.
- Bei verfolgten Produkten die Los- oder Seriennummern; auf der Bestandsaufnahme steht jede identifizierte Einheit in einer eigenen Zeile.
- Optional die App Buchhaltung, wenn Sie prüfen wollen, welches Konto die Differenz aufnimmt.
- Optional, nur mit Enterprise: die App Barcode; der Editionsvergleich von Odoo S.A. führt sie ausschließlich dort.
Schritt für Schritt: zählen und Differenz buchen
Schritt 1: Stichtag und jährliche Inventur festlegen
Öffnen Sie Lager ‣ Konfiguration ‣ Einstellungen und suchen Sie im Abschnitt Vorgänge den Eintrag Datum der jährlichen Inventur (Annual Inventory Date) mit den Feldern Tag des Monats und Monat der jährlichen Inventur; vorbelegt ist der 31. Dezember. Der Hilfetext des Eintrags sagt, dass die nächste physische Bestandsaufnahme standardmäßig für dieses Datum geplant wird; im Community-Zweig 20.0 sehen nur Inventory-Administratoren den Eintrag. Diesen Tag schlägt Odoo auf der Bestandsaufnahme in der Spalte Geplant vor; die Dokumentation beschreibt Geplant als den Tag, an dem gezählt werden soll. Das Datum der entstehenden Lagerbuchung ist damit noch nicht bestimmt. Zur Feldbeschreibung im Community-Zweig 20.0: Ein Tag über dem letzten Tag des Monats wird auf den letzten Tag des Monats gesetzt, 0 oder ein negativer Wert auf den Monatsersten; ohne Monatseintrag gibt es keine automatische jährliche Inventur, und der Monat gilt laut Feldbeschreibung für Produkte, die nicht an einem Lagerort mit eigener zyklischer Inventur liegen.
Schritt 2: Zählung anfordern und Zählbogen drucken
Öffnen Sie Lager ‣ Vorgänge ‣ Bestandsaufnahme. Die Liste enthält alle Produkte mit Bestandshistorie, auch solche mit negativem Bestand. Markieren Sie die zu zählenden Zeilen — das Kästchen in der Kopfzeile wählt alle aus — und klicken Sie auf Zählung anfordern (im Community-Zweig 20.0 nur mit der Inventory-Administratorrolle). Im Fenster Inventuranfrage tragen Sie ein, wem die Zählung zugewiesen wird, wann sie geplant ist und ob die zählende Person die erwartete Menge sehen darf. Für einen Zählbogen auf Papier markieren Sie die Zeilen erneut und wählen Drucken ‣ Zählbogen; Odoo gibt ihn als PDF aus.
Schritt 3: Gezählte Menge eintragen
Klicken Sie in der Zeile in die Spalte Gezählt und tragen Sie den Zählstand ein, dann klicken Sie aus der Zeile heraus — damit ist die Anpassung gespeichert, aber noch nicht gebucht. Stimmt der Wert mit der Spalte Vorrätig überein, steht in Differenz 0,00. Ist er höher, erscheint die Differenz grün; ist er niedriger, rot und negativ. Spalten wie Lagerort, Los-/Seriennummer oder Buchungsdatum (Accounting Date) blenden Sie über das Einstellungssymbol der Kopfzeile ein; einige davon erscheinen nur, wenn die passende Funktion oder die App Buchhaltung eingerichtet ist. Das Menü Aktionen erscheint bei markierten Zeilen: damit lagern Sie Produkte um, setzen die gezählte Menge mit Menge auf vorrätig auf den Systembestand oder leeren sie mit Auf 0 setzen; Umlagern und Auf 0 setzen verlangen im Community-Zweig 20.0 die Inventory-Administratorrolle.
Schritt 4: Anpassung anwenden und Differenz buchen
Wenden Sie eine einzelne Zeile direkt über die Schaltfläche Anwenden am Zeilenende an: Solange sich der Bestand seit der Zählung nicht geändert hat, bucht Odoo sofort, ohne Dialog. Nur wenn Sie mehrere Zeilen auf einmal anwenden oder eine Begründung erfassen wollen, öffnet Odoo das Fenster Bestandsaufnahme; dafür markieren Sie die Zeilen und wählen Anwenden in der Kopfzeile oder klicken Alle anwenden. Im Fenster stehen der Grund für Inventur, vorbelegt mit dem festen Text Physical Inventory, und das Zähldatum, vorbelegt mit dem heutigen Tag; erst der Klick auf Mengen aktualisieren bucht die Differenz. Die Dokumentation beschreibt diesen Weg als den, bei dem ein Grund für die Anpassung erfasst wird; ohne Zwischenbewegungen gibt es bei der einzelnen Zeile keinen Dialog.
Wurde zwischen Zählung und Anwenden Ware bewegt, bucht Odoo nicht einfach durch: Die Dokumentation hält fest, dass Odoo als zusätzliche Vorsichtsmaßnahme vor dem Anwenden eine Bestätigung verlangt; welchen Dialog Odoo dabei zeigt, ist im Community-Zweig 20.0 belegt: Dort öffnet sich auch bei einer einzelnen Zeile das Fenster Konflikt bei der Bestandsaufnahme mit dem Hinweis, dass Lagerbuchungen seit der ursprünglichen Mengenaktualisierung die Differenz inkonsistent gemacht haben. Sie wählen dort Gezählte Menge behalten — Odoo rechnet die Differenz auf den neuen Bestand um, sodass Vorrätig auf dem gezählten Wert steht — oder Differenz beibehalten: Dann setzt Odoo die gezählte Menge auf den aktuellen Bestand plus die beim Zählen erfasste Differenz, der neue Bestand weicht also vom ursprünglichen Zählwert ab. Als dritte Möglichkeit können Sie den Dialog verwerfen und den Konflikt von Hand lösen. Für Enterprise, Odoo Online und Odoo.sh belegt der öffentliche Community-Quellcode diesen Dialog nicht; dort ist diese Rückfrage in einer Testdatenbank zu prüfen.
Mit dem Anwenden erzeugt Odoo eine Lagerbuchung gegen einen virtuellen Lagerort, der außerhalb des Bestands liegt. Eine höhere gezählte Menge ergibt einen Zugang, eine niedrigere einen Abgang; Menge und Lagerwert ändern sich sofort. Als Einstandspreis der Anpassung nennt die Dokumentation die aktuellen Durchschnittskosten des Produkts und hält fest, dass dafür das Feld Kosten des Produkts verwendet wird, auch bei der Bewertungsmethode FIFO. Anders verhält sich nur die Bewertungsmethode Standard Price: Dort ist der Einstandspreis von Hand gesetzt und wird durch keine Buchung neu berechnet. Die Anpassung steht anschließend in der Bewegungshistorie unter Lager ‣ Berichtswesen ‣ Bewegungshistorie.
Schritt 5: Zyklische Zählung je Lagerort einrichten
Wer nicht nur einmal im Jahr zählen will, setzt die Häufigkeit am Lagerort. Öffnen Sie Lager ‣ Konfiguration ‣ Lagerorte, wählen Sie einen Lagerort und tragen Sie im Abschnitt Regelmäßige Zählung im Feld Inventurhäufigkeit ein Intervall in Tagen ein; der Standardwert 0 bedeutet keine geplante Zählung. Odoo setzt die nächste Zählung nach der ersten angewendeten Zählung selbst und zeigt sie als Als nächstes erwartet; Letzte Inventur lässt sich nicht von Hand setzen. Auf der Bestandsaufnahme gruppieren oder filtern Sie nach Lagerort, um nur diesen Bereich zu zählen.
Beispielrechnung: Differenzbuchung zum 31. Dezember
Erfundenes Beispiel: Ein Handelsbetrieb zählt zum Stichtag 31. Dezember voll. Das Produkt Kaffeebohnen 1 kg liegt in WH/Stock/Raum A. Odoo zeigt als Vorrätig 120 Stück, das Feld Kosten steht auf 8,00 Euro; gezählt werden 114 Stück.
| Angabe | Wert |
|---|---|
| Vorrätig in Odoo | 120 Stück |
| Gezählt | 114 Stück |
| Differenz | −6 Stück (rot) |
| Wert der Differenz | 6 × 8,00 Euro = 48,00 Euro Abgang |
Wenden Sie die markierten Zeilen über den Anpassungsdialog an, tragen Sie als Grund für Inventur etwa Jahresinventur 2026 ein und setzen das Zähldatum auf den 31. Dezember. Nach der Feldbeschreibung des Anpassungsdialogs datiert diese Angabe die entstehenden Lagerbuchungen; sie stammt aus dem Zweig 20.0 der Community-Ausgabe. Die Spalte Geplant nennt dagegen laut Dokumentation den Tag, an dem die Anpassung verarbeitet werden soll, und folgt dem Vorschlag aus den Lager-Einstellungen. Zur Kontrolle das Gegenbeispiel: Werden 122 Stück gezählt, entsteht ein Zugang von 2 × 8,00 Euro = 16,00 Euro.
Wichtig für den Stichtag ist die Lücke zwischen Zählen und Anwenden. In dieser Zeit können Lieferungen und Entnahmen den Bestand verändern; dann passt der Zählstand nicht mehr zum Systembestand. Odoo verlangt in diesem Fall laut Dokumentation vor dem Anwenden eine Bestätigung; im Community-Zweig 20.0 lässt das Fenster wählen, ob die gezählte Menge oder die Differenz beibehalten wird. Zählen Sie daher in einer Bewegungspause und wenden Sie die Anpassung an, bevor der Betrieb weiterläuft.
So prüfen Sie das Ergebnis
Mit dem Anwenden schreibt Odoo den gezählten Wert als neuen Bestand fort — außer Sie haben im Konfliktfall Differenz beibehalten gewählt (Auswahl des Konfliktdialogs im Community-Zweig 20.0), dann steht dort der aktuelle Bestand plus die erfasste Differenz. Im Community-Zweig 20.0 leert Odoo danach die Erfassungszeile: Gezählt und Differenz werden auf 0 zurückgesetzt und die Markierung des erfassten Zählstands entfernt, sodass die Spalte Differenz in der Zeile nicht mehr erscheint; für Enterprise, Odoo Online und Odoo.sh belegt der Community-Quellcode diese Rückmeldung nicht, prüfen Sie sie dort einmal in einer Testdatenbank. Eine übereinstimmende Anzeige zweier Spalten ist deshalb keine Kontrolle. Prüfen Sie zwei Dinge: Die Spalte Vorrätig muss den erwarteten neuen Bestand zeigen, und die erzeugte Buchung muss in der Bewegungshistorie stehen. Das Historiensymbol an der Zeile zeigt, wer gezählt hat (in Klammern in der Spalte Referenz) und wer angewendet hat (Spalte Erledigt von). Ist die App Buchhaltung eingerichtet, hängt die buchhalterische Wirkung an ihren Einstellungen und am hinterlegten Konto. Für Bestandsdifferenzen lässt sich am Lagerort vom Typ Bestandsschwund ein eigenes Verlustkonto hinterlegen; ohne dieses laufen die Anpassungen beim Abschluss über das Verrechnungskonto (Variation Account). Bei kontinentaler Buchhaltung mit periodischer Bewertung und hinterlegtem Verlustkonto zeigt der Bericht Bestandsbewertung die Differenz im Abschnitt Bestandsschwund; bei angelsächsischer Buchhaltung mit permanenter Bewertung wirkt die Buchung unmittelbar auf das Bewertungskonto. Um Buchhaltung und Bestand abzugleichen, dient die Abschlussbuchung der Lagerbewertung; die Kontenlogik vertieft der Artikel Lagerbewertung in Odoo.
Wenn etwas nicht klappt
| Symptom | Ursache | Lösung |
|---|---|---|
| Produkt fehlt in der Liste | keine Bestandshistorie | Zeile mit Neu anlegen oder am Produkt über Prognostiziert und Menge aktualisieren |
| Gezählt ist nach dem Anwenden leer oder steht auf 0 | Odoo setzt die Erfassung nach dem Buchen zurück (Community-Zweig 20.0) | kein Fehler: den neuen Stand in Vorrätig und die Buchung in der Bewegungshistorie prüfen |
| Spalte Lagerort fehlt | Funktion Lagerorte ist nicht aktiviert | Lager ‣ Konfiguration ‣ Einstellungen, Kontrollkästchen Lagerorte setzen |
| Anwenden meldet einen Konflikt | zwischen Zählung und Anwenden sind Buchungen gelaufen | Gezählte Menge behalten, Differenz beibehalten oder den Dialog verwerfen und den Bestand von Hand korrigieren; die beiden Auswahlen ergeben einen anderen neuen Bestand (Fenster und Auswahlwirkungen im Community-Zweig 20.0 belegt) |
| Zeile lässt sich nicht anwenden | die Zeile ist noch nicht gespeichert | aus der Zeile klicken oder Speichern, dann Anwenden |
| Bestand wird negativ | Auf 0 setzen trotz reservierter Aufträge | reservierte Lieferungen prüfen; die reservierte Menge bleibt reserviert, die Prognose wird negativ |
| Zählung erscheint in der Barcode-App nicht | laut Dokumentation zeigt sie nur eigene, für heute oder früher geplante Zählungen | Zählung der Person zuweisen oder im Backend zählen |
Wann Sie Hilfe holen sollten
Bei mehreren Lagerhäusern, verfolgten Chargen oder bewerteten Beständen über mehrere Unternehmen hinweg lohnt sich vor der ersten Zählung ein Testlauf in einer Kopie der Datenbank: Fehler in der Startmenge verschieben später jeden Wert der Rückverfolgung (siehe Rückverfolgbarkeit in Odoo für Audits). Wo die Zählung mit der Rechnungslegung oder dem Abschluss verzahnt werden soll, klären Sie die Konten und den Zeitpunkt mit Ihrer Buchhaltung; die Einrichtung der Bestandsführung in der App Buchhaltung behandelt der Artikel Kontinental oder angelsächsisch buchen in Odoo.