Our Stocktake Emptied Each Aisle Overnight and the Reorder Job Bought It All Again
Each of our branches does a full stocktake once a year, after closing on a Saturday. Count sheets are opened for each aisle in the evening, teams count through the night and on Sunday morning, and the counts are posted when each aisle is finished. When a count sheet is opened, our stock system sets that aisle's stock to zero, so that the posted count becomes the new figure rather than being added to the old one.
That procedure was designed about fifteen years ago, when buyers placed orders by hand on a Monday morning and nobody looked at stock on a Sunday. Since then we have automated replenishment. Every night at two, a job compares each branch's stock with its minimum levels, raises purchase orders for anything below them and sends them to suppliers electronically.
Last November one of our Midlands branches started its stocktake at five on Saturday. By two in the morning most of its aisles were open, and about six thousand two hundred products showed zero. The job did exactly what it was built to do. It raised four hundred and twelve purchase orders to ninety six suppliers, worth about three hundred and ten thousand pounds, and sent them by half past two. The branch's products also showed as out of stock for collection on our website for most of Sunday.
On Monday the buyers spent the morning on the phone. Most suppliers cancelled without fuss, but twenty three deliveries had already been picked or were on the road, and the branch received about forty one thousand pounds of stock it did not need. Some of it went back with a restocking charge, and some of it is still on the shelf.
Nothing was broken. The stocktake and the replenishment job each worked correctly. The job simply read the stock figure at a moment when it meant counting in progress rather than nothing on the shelf, and it had no way of telling the difference.
Opening a stocktake now marks the branch as being counted, and the replenishment job and the website feed both skip a branch while that mark is set. The job also compares each night's orders with that branch's usual night. If it is about to raise more than three times as many lines as normal, it holds the run and asks a buyer to release it.
Any automation that reads live data will see every half finished state the data passes through. Tell it when the data is in the middle of something, and give it a sense of what a normal night looks like.
– Serguey Shinder