#12 — partial consume: - POST /inventory/items/{id}/consume now accepts optional {quantity} body; decrements by that amount and only marks status=consumed when quantity reaches zero (store.partial_consume_item) - OFFs barcode scan pre-fills sub-unit quantity when product data includes a pack size (number_of_units or 'N x ...' quantity string) - Consume button shows quantity-aware label and opens ActionDialog with number input for multi-unit items ('use some or all') - consumeItem() in api.ts now returns InventoryItem and accepts optional quantity param #60 — disposal logging: - Migration 031: adds disposal_reason TEXT column to inventory_items (status='discarded' was already in the CHECK constraint) - POST /inventory/items/{id}/discard endpoint with optional DiscardRequest body (free text or preset reason) - Calm framing: 'item not used' not 'wasted'; reason presets avoid blame language ('went bad before I could use it', 'too much — had excess') - Muted discard button (X icon, tertiary color) — not alarming Shared: - New ActionDialog.vue component for dialogs with inline inputs (quantity stepper or reason dropdown); keeps ConfirmDialog simple - disposal_reason field added to InventoryItemResponse Closes #12 Closes #60 |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| db | ||
| models | ||
| services | ||
| staples | ||
| static | ||
| styles | ||
| tasks | ||
| utils | ||
| __init__.py | ||
| cloud_session.py | ||
| main.py | ||
| tiers.py | ||