Skip to main content

Inventory Count

Odoo has a built-in count procedure: Physical Inventory lists every product, location and lot on hand. Counters enter what they found, Odoo shows the difference, and an Inventory Administrator applies it. Applying moves the difference into or out of Virtual Locations/Inventory adjustment.

Blu Coffee adds a Count Date. A count often takes days to finish and encode. With a Count Date:

  • the difference is taken against the stock Odoo had at the end of that day, not today's stock, and
  • the adjustment is posted on that day, 11:59 PM, even if it is entered or applied later.

The 09/30/2026 count is an example: it was entered on 10/03/2026 and posted as of 09/30/2026, 11:59 PM. Deliveries and receipts made between the count and its entry stay as they are, so the warehouse can keep working while the sheets are being encoded.

StepWho
1. Plan the countInventory Administrator
2. Request a CountInventory Administrator
3. Count and enterCounters (Inventory Users)
4. Review differencesInventory Administrator
5. ApplyInventory Administrator
6. CheckAccounting

The count screen​

Go to Inventory → Operations → Adjustments → Physical Inventory.

Physical Inventory with Count Date and On Hand at Count Date

ColumnMeaning
On Hand QuantityToday's stock
Count DateThe day the shelves were counted. Leave it empty to count as of now
On Hand at Count DateWhat Odoo had at 11:59 PM on the Count Date: today's stock minus everything that moved after that day. Shown only when a Count Date is set
Counted QuantityWhat the counters found
DifferenceCounted minus On Hand at Count Date (minus today's on hand if there is no Count Date)
Scheduled Date, UserWhen the line is due to be counted, and by whom (set by Request a Count)
Accounting DateOptional (show it from the column picker). Fills in from the Count Date when left empty

In the screenshot all four lines were counted as of 09/30/2026. The two sleeve lines hold 5,000 today, but that stock was received after 09/30, so On Hand at Count Date is 0 and a count of 0 gives a difference of 0, not −5,000.

Step by step​

1. Plan​

Decide the Count Date and the scope (warehouse, locations, products). Use one Count Date per count, so every line posts on the same day. Hold transfers during the count if you can.

2. Request a Count​

Filter the lines to count, select them and click Request a Count. Set the scheduled date and the counter.

3. Count and enter​

Count the shelves and write the quantity per product, location and lot. Then, either:

  • line by line — filter My Counts, type the Counted Quantity and the Count Date on each line; or
  • import a sheet — gear icon → Import records. Useful columns: Location, Product, Lot/Serial Number, Counted Quantity, Count Date.
Imports update the existing stock line

An imported count lands on the stock line already there for that product, location and lot. An imported 15 against 16 on hand posts −1, not +15. (Before 10/03/2026 an import created a new, empty line instead, which doubled stock on apply.)

On a line, Set copies the on-hand quantity into Counted — handy when most lines match. Clear undoes a count and its Count Date. History shows every adjustment already applied to that product and location.

4. Review the differences​

Filter To Apply and check Difference = Counted − On Hand at Count Date. If a difference looks wrong, recount those lines and correct the Counted Quantity.

5. Apply​

Select the lines and click Apply (or Apply All for everything counted).

Counted lines selected

Odoo asks for an Inventory Reason. Write something you will recognise later, e.g. Year-end count 12/31/2026, and click Update Quantities.

Inventory Reason dialog

Odoo posts the adjustments dated the Count Date, 11:59 PM, and the accounting date defaults to the Count Date.

6. Check​

Run the Interactive Inventory Report with To = the Count Date: the counts show there as Adjustment IN and OUT. Accounting then reviews the value difference.

Rules that trip people up​

Read before the count
  • Only an Inventory Administrator can Apply. Counters can enter, Set and Clear counts, and import them.
  • The Count Date cannot be in the future, and cannot be earlier than the last count already applied to that product and location.
  • Count lot-tracked products per lot. A count without the lot asks for confirmation before it applies.
  • "Conflict in Inventory Adjustment" means something was posted on or before the Count Date after the count was entered, so the stock at the Count Date changed. Check it before choosing to keep the counted quantity. Moves dated after the Count Date do not trigger it.
  • Applying a count makes no journal entry. Blu Coffee's stock valuation is periodic; the valuation records the change and Accounting reviews the peso effect.

Reference​

ConcernFile
Count Date, On Hand at Count Date, dated apply, outdated rule, imported countsbc17/blu_stock/models/stock_quant.py
Count moves dated 11:59 PM of the Count Datebc17/blu_stock/models/stock_move.py
Count Date columns on the Physical Inventory listbc17/blu_stock/views/stock_quant_views.xml