Skip to content

Purchase Order V1 Decisions

Design decisions for the Purchase Order V1 project (MVP2 task 13). Tracks scoping, Kanban card lifecycle, architectural patterns, and open questions from the initial design round.

#QuestionStatusDecisionRound
DQ-001Design scope strategyDecidedFull scope design; simplified spec as descope floorR1
DQ-002Kanban card state transitions for PO lifecycleDecidedThree-step: REQUESTING → REQUESTED → IN_PROCESS → FULFILLEDR1
DQ-003READY / FULFILLING state activationDecidedContinue bypass; reserved for LoopsR1
DQ-004”Order and Release” shortcutDecidedSupport REQUESTED → FULFILLED skip-receiving pathR1
DQ-005PO-to-card transition mechanismDecidedImplicit batch via PO actions, not per-card explicitR1
DQ-006Update propagation vs update on readDecidedAdopt update propagation patternR1
DQ-007Document service behaviorDecidedDocumint default; same as card/label printingR1
DQ-008Clipboard timingDecidedCopy on click; confirm on successful generationR1
DQ-009Email template ownershipDecidedFixed template until tenant settings existR1
DQ-010PO Number generationOpenR1
DQ-011Snapshot vs live syncOpenR1
DQ-012Card exclusion from PO draftOpenR1
DQ-013Order quantities, units, and editabilityOpenR1
DQ-014Vendor typeahead sourceOpenR1
DQ-015PO persistence strategyOpenR1

Context: The PM’s Simplified PO Spec V1 targets a narrow “generate PDF from Order Queue” workflow. The existing backend and technical spec design a full PO lifecycle. These scopes need to be reconciled.

OptionDescription
ADesign for full scope; use simplified spec as descope floor
BDesign only to the simplified spec

Decision: Option A. Complete the design for full PO scope (create, approve/submit, receive) to estimate remaining work. Use the Simplified PO Spec V1 as the floor for descoping to bring the release date earlier.


DQ-002: Kanban Card State Transitions for PO Lifecycle

Section titled “DQ-002: Kanban Card State Transitions for PO Lifecycle”

Context: The PO lifecycle must drive Kanban Card state transitions. The Demo202509 workflow defines per-card explicit transitions; PO V1 needs to map these to PO-level actions.

OptionDescription
AThree-step: create PO (accept), submit PO (start-processing), receive (receive)
BTwo-step: create+submit combined, receive

Decision: Option A. The three confirmed transitions are:

  • Create PO / add cards → acceptREQUESTINGREQUESTED
  • Submit PO → start-processingREQUESTEDIN_PROCESS
  • Receive → receiveIN_PROCESSFULFILLED

DQ-003: READY / FULFILLING State Activation

Section titled “DQ-003: READY / FULFILLING State Activation”

Context: The full Kanban model has IN_PROCESS → READY → FULFILLING → FULFILLED. MVP0/MVP1 bypass READY and FULFILLING. Should PO V1 activate them?

Decision: Option A (continue bypass). PO V1 changes the procurement process, not the card lifecycle. READY and FULFILLING are reserved for the future Loops feature.


Context: Demo202509 supports a 3-ALT flow where “Order and Release” skips the receiving step (REQUESTED → FULFILLED). Should PO V1 have an equivalent?

Decision: Option A. PO V1 must support a “Submit and Release” action that transitions cards directly from REQUESTED to FULFILLED. Maintains parity with the existing Demo202509 workflow.


Context: Demo202509 uses explicit per-card actions. PO V1 introduces the Purchase Order as a grouping mechanism. How should card transitions fire?

Decision: Option A (implicit batch). PO actions batch card state transitions across all cards associated with PO lines. The PO is the unit of work for the Procurement Manager.


DQ-006: Update Propagation vs Update on Read

Section titled “DQ-006: Update Propagation vs Update on Read”

Context: The current PO backend uses “update on read” patterns, which has made lookup logic overly complicated. The Item/ItemSupply/Supplier chain already implements a cleaner “update propagation” pattern via observer notifications.

Decision: Option A. PO V1 must adopt the update propagation pattern. Aligns with the established codebase pattern and produces cleaner reads.


Context: How should the generated PO PDF be delivered to the user?

Decision: Option A. Use Documint default behavior — open PDF the same way card and label printing works. Reuses existing infrastructure with no new dependencies.


Context: When should the email body be copied to the clipboard relative to PDF generation?

Decision: Option A. Copy email body on click; show confirmation prompt on successful PDF generation. Better UX — the user can start composing the email while the PDF is generating.


Context: Should the email body template be configurable per organization?

Decision: Option A (fixed template). Defer configurability until tenant settings infrastructure exists. Sufficient for V1.


Preliminary direction: User-entered initially; auto-generated once POs are persisted.

Options: User-entered, auto-generated by backend, or auto-generated with user override.

Preliminary direction: Option A — snapshot on open; validate at submit time; refresh cards on error; preserve user header edits.

Context: What happens if the Order Queue changes while the PO side panel is open.

Preliminary direction: Option A — select in Order Queue before opening panel; allow removal of lines in panel before submitting.

DQ-013: Order Quantities, Units, and Editability

Section titled “DQ-013: Order Quantities, Units, and Editability”

Open: Needs clarification on whether PO line quantity comes from ItemSupply order quantity or aggregated card reorder quantities, and whether the user can override.

Preliminary direction: Vendor is determined by Order Queue group (read-only on PO for V1). “Compatible vendor” query is deferred.

Preliminary direction: Export-only as descope floor; full persistence as the design target.

Options: Full persistence (use existing backend), export-only (PDF generation, no backend persistence), or minimal persistence (save PO record on generate without full CRUD UI).