OrderEntryApplier (workflow #8)
Applies an approved sales order: imports a draft SO (status Estimate) via Fishbowl's CSV import path.
Overview
src/workflows/order-entry/order-entry.applier.ts. Receives Proposal ApprovedProposal ApprovedEventv0.1.0A cleared human approved in the card (app-only commit path, RBAC-checked against the authenticated session).Ownervisionary-engineeringMapView docs dispatched by kind (order-entry) from the Approval Bus (command service — owns the queue)Approval Bus (command service — owns the queue)Servicev0.1.0The command side: owns the proposal queue. propose_* only queue; a cleared human approves in the card; only then does th...Publishesproposal-created, proposal-approved +3Subscribespropose-vendor-bill, propose-bill-date-correction +6Ownervisionary-engineeringMapRepoView docs — in code this is a synchronous by-kind dispatch inside the commit path, not a broker subscription (see the event’s implementation note). Single vendor write: Fishbowl Import Sales OrderFishbowl Import Sales OrderCommandv0.1.0Creates a draft SO (status Estimate) via Fishbowl's /api/import CSV path — Fishbowl's only write surface.Ownervisionary-engineeringMapView docs — Fishbowl’s /api/import
CSV path, its only write surface. Fishbowl is not live: an apply while it is absent degrades to
a structured failed proposal (surfaced on the card), never a crash. Gated behind the VIS-41
RBAC decision before it joins the live cut.
Watch the full lifecycle: Propose Sales Order — command lifecyclePropose Sales Order — command lifecycleFlowv0.1.0One propose_order_entry call end to end: queue → sales approves → applier imports a draft SO (status Estimate) via Fishb...Ownervisionary-engineeringView flowView docs (from Propose Sales OrderPropose Sales OrderCommandv0.1.0Workflow #8 — draft a Fishbowl sales order (status Estimate) from an approved customer PO; created only once sales appro...Ownervisionary-engineeringSchemaMapView docs to the vendor write).