Consumption-model categories
Every supply belongs to one of 4 consumption-model categories (gh#736). The category drives per-supply spend config, stale-stock warnings, and how the supply surfaces in checklists.
The 4 categories
1. Guest Consumables
Things the guest USES UP (coffee capsules, toilet paper, sugar packets, shower gel).
Behavior:
- Per-stay consumption baseline (e.g. expected 2 capsules/day/guest).
- Stale-stock warning if stock doesn't deplete over N stays (configurable).
- Checklist "Add supply" widget surfaces by this category first.
2. Cleaning Supplies
Things the CLEANER uses (mop heads, all-purpose cleaner, scouring pads).
Behavior:
- Per-cleaning consumption baseline.
- Stale-stock warning if N cleanings happen without using the supply.
- Operator can configure: should this supply spawn a per-cleaning use_supplies checklist item?
3. Stay Essentials
Things the GUEST EXPECTS to find but doesn't necessarily consume (towels, sheets, soap, kitchen utensils — operator-managed; not single-use).
Behavior:
- No per-stay depletion expected.
- Stale-stock warning suppressed (it's normal that towels don't deplete).
- "Missing supply" tasks fire if cleaner reports a missing essential.
4. Reusables
Long-life items (vacuum, iron, mattress protector covers).
Behavior:
- No depletion tracking.
- Maintenance schedule per item (e.g. mattress protector replace every 12 months).
Per-supply spend config (gh#736)
Each supply row carries:
- Expected consumption rate (per stay / per cleaning / per day / N/A) — drives the stale-stock warning.
- Average unit cost — drives the cost breakdown in Accounting.
- Vendor preference — last-seen receipt vendor for re-orders.
Stale-stock mis-config warning
When a supply's stock hasn't moved in N stays AND the consumption rate predicts it should have:
- The Supplies row carries a
⚠ stale-stockchip. - Tooltip: "Coffee Capsules: 12 stays since last consumption. Expected 240 capsules used. Stock is the same. Probably missed checklist
use_suppliesaction OR mis-configured."
Operator clicks to investigate — usually the fix is to add the missing use_supplies action to the cleaning checklist.
"Not depleting" filter (gh#826)
The Supplies list has a Not depleting filter — shows supplies that haven't been referenced by any checklist use_supplies action. Useful for catching the stale-stock mis-config above.
Earlier gh#826 fixed the filter that showed none when many should have appeared.
Group + filter checklist "Add supply" dropdown (gh#788)
When editing a checklist item that uses supplies, the Add supply dropdown groups + filters by consumption category. Operator can scope to "show only Cleaning Supplies for this cleaning checklist" instead of scrolling all 50+ supplies.
Implements: gh#736 (consumption-model categories + per-supply spend config + stale-stock warning), gh#788 (group + filter Add supply by category), gh#826 (Not depleting filter fix). Related: 4-level model, Stock tracking.