| R1 | A barcode is scanned or typed. | Only Chocolate, Confectionery, Gum and Healthy categories may be counted. Any other category (or an unknown barcode) is rejected immediately — no entry is created. | Item category, per barcode. |
| R2 | Location = Checkout, and the scanned barcode is on the restricted list. | Entry is blocked entirely — cannot be saved. The same barcode counts normally at the other three locations. | Checkout-restricted flag, per barcode. |
| R3 | Item is matched. | Unit of measure (Outer or Case) is fixed per item and shown, not chosen. Piece is never offered as an option. | UOM, per item. |
| R4 | Merchandiser is entering an expiry for a count line. | Picker offers exactly 6 options: the current month, the next 4, and a 6th open-ended option covering every date 6 months out and beyond. The 6 options roll forward automatically as the calendar month changes. | Current system date only. |
| R5 | The same item is scanned again with a different expiry date already recorded this visit. | Saved as a new, separate line. Existing lines for that item are never overwritten. | Count lines already recorded this visit. |
| R6 | Item's Created Date is within the last 6 months, and the entered expiry is less than 6 months from today. | Non-blocking confirmation naming the item as new and asking the merchandiser to confirm the date. Declining returns to the count screen to edit the expiry — nothing saves. Confirming saves. This must never affect any accuracy/performance score. | Item Created Date (Mars item master). |
| R7 | This visit's running quantity for an item + expiry date exceeds what last month's report recorded for the same store, item and expiry date. | Non-blocking confirmation showing last month's quantity vs. this visit's, asking the merchandiser to confirm. Declining returns to the count screen to edit the quantity — nothing saves until confirmed. | Last month's quantity for the same store + item + expiry (via the store+month key, §2). |
| R8 | Selected expiry = the current month. | Warning, not a block. Merchandiser is instructed to pull the stock, mark the barcode, and move it to damages. Entry saves and is flagged accordingly once confirmed. | None beyond the entry itself. |
| R9 | A Warehouse-location entry and an in-store entry exist for the same item, and the warehouse date is nearer than the in-store date (in either direction of entry). | Blocking — cannot save until corrected. Message must name which in-store location it was compared against and both dates. | All count lines for that item across locations, this visit. |
| R10 | Merchandiser presses Finish count. | Must ask first whether this store's count is fully finished or will continue on a future visit, before anything else runs. A partial answer skips R11 entirely and hides R12 until a later visit is marked fully finished; existing lines stay saved and reappear exactly as left. | This visit's draft report and its finished/partial state. |
| R11 | Runs only after "fully finished" (R10). For every item on last month's report (same store) whose expiry falls within the next 4 months and that has not been counted this visit. | Ask "sold and no longer in the market?" — Yes/No. Yes: log to a separate sold record (merchandiser name + ID, store, item, expiry, timestamp). No: item returns to this visit's task list; must be counted or explicitly marked "confirmed not present" before the count can finish. | Last month's report for the store (store+month key), filtered to the 4-month window; this visit's counted barcodes. |
| R12 | Reachable only after a full finish (R10) and submission. | Exports the entire report — never a month-limited subset. Columns, in order: City, Store, Brand, Item, Expiry, Qty, Location, UOM, Note. Sorted by nearest expiry, then location, then brand and item. See §5 for the required shading. | The full submitted report for this visit. |
| R13 | After any store's report is submitted for a period. | Generate a 5–10 item review checklist per store for the leader, in priority order: (1) R14 mismatch if triggered, (2) items that raised an R6 warning this period, (3) quantities differing 50%+ vs. last month, (4) an item present in the two prior reports that has no line this period and whose recorded expiry is within the near-term window, (5) random sample. Leader's only options are Matches / Needs correction — the leader cannot edit values directly. Needs correction sends a task to the merchandiser with the leader's note; before/after value, who resolved it, and when must all be stored. This checklist must never block the merchandiser's count from closing. | This period's and the prior period's report per store (store+month key); R6-flagged lines; correction records. |
| R14 | The merchandiser (name + employee ID) who submitted this store's report this period differs from who submitted it last period. | Always ranks first in R13's checklist, ahead of every other item. The leader-facing notification must state the reason explicitly — e.g. "the merchandiser who counted this month is different from the one who counted this store last month" — not a generic "review this store." | Submitting-merchandiser identity per store, this period and the prior one (store+month key). |