Load the counts
Drop the .count.json files the counters sent in. Load as many as you like,
in any order, as many times as you like. Every entry carries its own id, so re-loading a file someone
already sent cannot double a location.
Paste a count instead
Monitor
By zone. Locations are not equal. A rack bin with
three pallets counts in two minutes and GR12 full of sockets does not, so a single
rate looks alarming while a team is in Grover and then recovers.
By counter. A counter with no entry for a while is either on a break, on a lift, or stuck.
Coverage
Discrepancies
Three outcomes, not two. Two counts that agree get exported. Anything else waits for a supervisor to count it a third time, and that number is what gets exported. A SKU one counter found and the other did not is a discrepancy, not an acceptance, and in the Grover room it will be the most common one by a wide margin.
Export for Odoo
One workbook, four tabs.
Reconciled is the only one that gets uploaded: its first three columns map to
product_id, location_id and inventory_quantity, which is the
same structure the app captures, so nothing gets reformatted by hand.
Discrepancies is what is missing from it. Coverage is every location and what happened
to it. Raw is every submission, deleted ones included, and nobody edits it.
Nothing here writes to Odoo. Upload the Reconciled tab, review the Counted Quantity column in Odoo's own staging step, then Apply. The Expected Quantity column is deliberately empty this year, because Odoo starts with no stock and this first count is additive. Next year it is a reconciling count and the column already has a home.