Stock Count
Stock Count runs a formal physical-count session: start a count for the whole shop or one category, walk the floor entering what you actually counted, review the variance against system stock, then post the corrections in one go.
Overview
Unlike the quick "Start Stock Take" mode inside the Inventory page (which edits quantities directly), a Stock Count session snapshots expected quantities when it starts, lets you enter counted quantities over time, and only changes real stock when you explicitly complete the session.
Each session tracks progress (how many items counted out of the total) and how many items have a variance (counted ≠ expected), so you always know how much of the floor is left to check.
Sessions can be scoped to the whole shop or to just one product category — useful for cycle counting a few aisles at a time instead of shutting down the whole store for a full count.
Before You Start
- Products must have existing inventory records; the expected quantity for each line item is snapshotted from current stock the moment the session is created.
- Only sessions in "Counting" (IN_PROGRESS) status can have quantities entered — Completed and Cancelled sessions are read-only.
Step-by-Step Guide
1 Start a new count
- Click New Count on the Stock Count list page.
- Give it a descriptive name, e.g. "July full count" or "Aisle 3 paint".
- Optionally limit it to one product category, or leave it as "All products" for a full count.
- Click Start count — BazaarPOS snapshots the expected quantity for every included product and opens the session for counting.
2 Enter counted quantities
- Open a session from the list to see every item with its Expected quantity next to an editable Counted field.
- Type the physical count for each item as you walk the floor; the Difference column updates live (blue = higher than expected, red = lower, green = exact match).
- Use the search box to jump to a specific item/SKU, or tick "Not counted yet" to see only items you haven't touched.
- Click Save counts periodically to persist your progress without finishing the session — you can safely leave and come back later.
3 Complete or cancel the count
- Once every item (or as many as you plan to check) has a counted value, click Complete & post.
- Confirm the prompt showing how many stock-level adjustments will be posted; uncounted items are left completely unchanged.
- BazaarPOS applies every variance as a stock adjustment in one batch, and the session moves to Completed status.
- If you started a count by mistake or need to abandon it, click Cancel count instead — no stock is changed and the session is marked Cancelled.
Every Field & Button, Explained
| Field / Button | What it does |
|---|---|
New Count | Opens the modal to start a new count session (name + optional category). |
Session list — Name / Category / Status / Progress / Started | One row per count session; click a row to open it. |
Status chip | Counting (blue, IN_PROGRESS), Completed (green), Cancelled (grey). |
Progress column | Counted items / total items in the session. |
Expected column | The system stock quantity snapshotted for that item when the session started. |
Counted column | Editable field for the physically counted quantity (only while the session is IN_PROGRESS). |
Difference column | Counted minus Expected — blue/positive means more than expected, red/negative means less, green means an exact match. |
Find item or SKU… search box | Filters the item list within the open session by product name or SKU. |
"Not counted yet" checkbox | Shows only items that have neither a saved counted value nor an unsaved draft value. |
Save counts | Persists whatever counted values you have typed so far, without finishing the session. |
Complete & post | Applies every counted variance as a real stock adjustment and closes the session; disabled if there are unsaved counts. |
Cancel count | Abandons the session with no stock changes. |
Tips & Best Practices
- Use category-scoped counts for regular cycle counting (e.g. one category a week) instead of shutting the shop for a full count.
- Save counts frequently during a long session — it protects your progress if the browser is closed or the device changes.
- Review large variances before completing — a big unexpected difference is often a sign of a miscount rather than real shrinkage.
Troubleshooting & FAQ
I can't type a counted quantity into a row.
Complete & post is greyed out.
An item I need to count isn't in the session.
Will completing a count affect items I never entered a count for?
🧑💻 Developer Notes
Source component(s):
frontend-app/packages/pos-react-lib/src/pages/inventory/StockCountPage.jsx
Backend endpoints used:
GET /stock-countsPOST /stock-countsGET /stock-counts/:idPUT /stock-counts/:id/countsPOST /stock-counts/:id/completePOST /stock-counts/:id/cancelGET /products/categories
Related tables (db-core repositories):
StockCountSessionStockCountItemInventoryStockMovement
Feature flag key: inventory
Mounted generically as /stock-count in every variant's App.js. Expected quantities are snapshotted server-side at session creation so counts remain meaningful even if stock keeps moving elsewhere while the count is in progress; completing the session diffs counted vs. expected per item and posts one stock adjustment per variance.