Regular stocktakes keep your stock-on-hand levels accurate so BMS can
intelligently allocate stock.
Navigate to Stock → Stocktakes to create and manage stocktakes.
Planning Your Stocktake
Stocktaking can be done in chunks to make it more manageable — how you approach this depends on how your warehouse is organised. For example, you might have a location in your warehouse dedicated to consumables and supplies. You could perform a stocktake on this section, process it, then do another location the next day, and so on. A stocktake's Item Selection settings (Product Category and Warehouse Location filters) let you scope each stocktake to the section being counted.
Before You Begin
Ensure that any backdated receipting and dispatching for the warehouse is completed. This is very important. In other words:
Any stock that is physically in the warehouse but has not been receipted in BMS must have its receipt processed.
Any stock that has left the warehouse but has not been dispatched in BMS must have its dispatch processed.
If movements are still outstanding when you count, the counted figures and the BMS figures will disagree for reasons that have nothing to do with genuine stock variance.
Creating the Stocktake
Go to Stock → Stocktakes and click + New Stocktake.
Set the entity, warehouse, and the Count As At date, plus the Reason (for example, Stocktake Writeoff) and the GL Account any write-off will post to.
Use the Item Selection options — Product Category and Warehouse Location (starts with / from / to) — if you are counting a section rather than the whole warehouse.
To produce a count sheet for the floor, click Export Stocktake Sheet on the stocktake — it lists the stock to be counted, with the product identifier and warehouse location for each line.
Performing the Count
Work through the stocktake sheet, recording the physical quantity counted for each non-serialised product and confirming the presence of each serialised item.
Any products or serials found in the warehouse that are not on the sheet can still be counted — they are added to the stocktake when you enter the results.
Entering Counted Quantities
Once counting is complete, enter the results on the stocktake's Stocktake Items tab:
Import the completed sheet with Import Stocktake Sheet, or
Enter counts directly using + Add New Item for each line (with Delete Line to remove mistakes).
Each item line records the Item, Description, Serial No, Warehouse Location, and Count Quantity. When importing, make sure the sheet retains the columns produced by the Export Stocktake Sheet — in particular the product identifier and the warehouse location for each line — as these are used to match counts back to stock records.
Reviewing Variances
Run the Variance Report from the stocktake's actions menu to compare counted quantities against what BMS expected — the stocktake's Totals panel also shows Book Value, Count Value, and Variance. For each variance, confirm whether it is genuine (lost, damaged or miscounted stock) or explainable by an unprocessed movement. If you find an unprocessed receipt or dispatch at this stage, process it and re-check the line rather than adjusting it away.
Completing the Stocktake
When you are satisfied the variances are genuine, complete the stocktake. The completed stocktake posts as a stock Adjustment against the warehouse — it appears on the warehouse's Adjustments tab with Type Stocktake, showing the Reason, the GL Account it posted to, and whether it is included in usage figures. After the adjustment posts, the warehouse's Stock On Hand reflects the physical reality, and you can move on to the next location or section.
Troubleshooting Stocktake Imports
Error: 'Product: x invalid' in the import log.
Cause: a product on the stocktake sheet does not exist in BMS.
Solution: create the product in BMS first, then re-import the sheet. Products must exist before stock can be counted against them.
Error: 'undefined method `size' for nil:NilClass' in the import log.
Cause: the warehouse location field is blank on one or more product lines

