No description
Find a file
Hardik 3b3a26eafe feat(receipt): allow partial receipt confirmation with per-item delivery tracking
Submitters can now mark individual item quantities as received when
confirming delivery, rather than treating a PO as all-or-nothing.

Schema (migration: 20260516103013_partial_receipt):
- POStatus: new PARTIALLY_CLOSED value between PAID_DELIVERED and CLOSED
- ActionType: new PARTIAL_RECEIPT_CONFIRMED value
- POLineItem: new deliveredQuantity Decimal? field — accumulates delivered qty
  across multiple receipt events

State machine:
- PAID_DELIVERED → confirm_partial_receipt → PARTIALLY_CLOSED (new)
- PARTIALLY_CLOSED → confirm_receipt → CLOSED (all delivered)
- PARTIALLY_CLOSED → confirm_partial_receipt → PARTIALLY_CLOSED (more partial)

Receipt page / form:
- Loads line items with ordered qty, previously delivered qty, and remaining qty
- Per-row numeric input for "receiving now" defaulting to all remaining
- "Mark all remaining" shortcut
- Dynamic button: "Confirm Partial Receipt" vs "Confirm Receipt & Close PO"
- Info banner telling user if the PO will stay open or close

Receipt action:
- Accumulates deliveredQuantity per line item
- If all lines fully delivered → CLOSED + fires notifications + updates inventory
- If any line still outstanding → PARTIALLY_CLOSED (no notifications yet)
- Inventory auto-update runs per-event for the delivered quantities only

Dashboard & PO detail:
- Open Orders count now includes PARTIALLY_CLOSED
- "Confirm Receipt" CTA in po-detail handles PARTIALLY_CLOSED with
  distinct amber styling and "Confirm Remaining" label
- Activity log shows PARTIAL_RECEIPT_CONFIRMED with appropriate label
- PARTIALLY_CLOSED gets warning (amber) badge variant

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 16:02:44 +05:30
.claude chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
App/pelagia-portal feat(receipt): allow partial receipt confirmation with per-item delivery tracking 2026-05-16 16:02:44 +05:30
design_handoff_pelagia_portal chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
GstService fix(gst): correct microservice default port and captcha field name 2026-05-14 17:07:31 +05:30
Progress TODO update 15/05 2026-05-16 03:12:01 +05:30
Prototype chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
Spec chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
.gitignore chore: initialize Next.js 15 project with Tailwind, TypeScript and tooling config 2026-05-05 23:23:43 +05:30
DESIGN.md chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
generate_po.py chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
inspect_po.py chore(inventory): remove item detail page; move SiteSelect to shared components 2026-05-16 00:07:04 +05:30
PLAYRIGHT_TEST_DESIGN.md docs: add Playwright test design doc with scripts for inventory sort and tag fixes 2026-05-16 02:43:29 +05:30