Review Cycle by ABC Class
A-class: 7-day review cycle | B-class: 14-day | C-class: 21-day
Order Buffer by Movement Profile
Fast-moving (>1/day): +10% | Medium (0.1-1/day): +20% | Slow (<0.1/day): +30%
Formula - Stage 0: Order Forecast (the velocity the order is sized on)
Serve_Window = [today + Lead_Time, today + Lead_Time + Review_Cycle]
Forecast/Day = Blended_Velocity
x Seasonal index averaged over the Serve Window
x (1 + Event_Uplift x fraction of Serve Window that is event days)
Adjusted Velocity answers "how fast is this selling today". Stock ordered today is not consumed today - it lands after the lead time and is drawn down over one review cycle. So the order is sized on demand forecast for THAT window, not for this month.
This replaces two adjustments that were being applied to the wrong period: the seasonal index used the CURRENT month, and the event uplift fired in full whenever any event fell inside today + lead time, which for a 5-month lead time is almost always true, so +50% applied year round
No growth term - measured across 200,425 SKU-month pairs, median same-month year-on-year change is 0.0% with a -43% / +67% quartile spread. A genuinely trending SKU already shows in its 90-day rate, which carries 25-60% of the blend
Review Cycle is each vendor's own measured median gap between POs (131 vendors, floor 7 days), not a fixed ABC constant
Shown on the Seirin tab as the Fcst/Day column; hover it for the serve window, seasonal index and event-day fraction
Formula - Stage 1: Recommended Qty
Recommended Qty = Safety Stock
+ MIN(CEIL(Forecast/Day x (Lead_Time + Review_Cycle) x Buffer), CEIL(Forecast/Day x 180))
- Available
Only computed for Out of Stock / Below Safety Stock / Reorder Now - every other status is 0
Formula - Stage 2: Purchase Qty
Purchase Qty = ROUND_UP_TO_PAX(MAX(0, Recommended Qty - Open_PO_Qty))
Formula - Expected arrival of an open PO
1. NetSuite "updated expected receipt date" if the vendor has committed one
2. otherwise PO date + that vendor's observed lead time
3. otherwise PO date + median observed lead time of the SKUs on the PO
4. otherwise PO date + 15 days
Resolved ONCE PER PO and stamped on every line of it. A purchase order is placed with one vendor and ships as one consignment, so every SKU on it arrives the same day
Previously derived per SKU from that item's own lead time, which gave items in the same box different arrival dates - 97 of 120 multi-SKU POs disagreed, the worst by 142 days
A star next to the date means the vendor committed to it in NetSuite; no star means it was calculated. Clicking the date shows both figures and which is in use
Per-SKU lead time is unchanged everywhere else - it still drives Safety Stock, Reorder Point and the order horizon, which are genuinely per-item questions
Rules and Overrides
Recommended Qty gated to the 3 action statuses only - Dead Stock, Slow Moving, Healthy, and both Excess Stock tiers always show 0
Demand target capped at 180 days of cover
Status, Days Cover, Safety Stock and Reorder Point stay on today's Adjusted Velocity - only the order size uses the forecast. Two different questions, two different numbers
Purchase Qty rounds up to the nearest pack size (pax); shows "-" if the open PO already covers the full Recommended Qty