command

Propose Sales Order

Workflow #8 — draft a Fishbowl sales order (status Estimate) from an approved customer PO; created only once sales approves.

CommandCommand — approval-gatedkind: order-entryapprovers: admin · sales

Overview

MCP tool propose_order_entry — agent-callable, but it only queues: it creates a pending proposal (Proposal CreatedProposal CreatedEventv0.1.0A propose_* command queued a mutation: a Proposal now exists in status `pending` with a freshly-minted per-card widget t...Ownervisionary-engineeringMapView docs) on 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 and returns the approval card. No vendor write happens here. 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.

On approval OrderEntryApplier (workflow #8)OrderEntryApplier (workflow #8)Servicev0.1.0Applies an approved sales order: imports a draft SO (status Estimate) via Fishbowl's CSV import path.Publishesfishbowl-import-sales-orderSubscribesproposal-approvedOwnervisionary-engineeringMapRepoView docs imports the draft SO via 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 CSV import path — its only write surface). Fishbowl is not live yet — at apply time an outage degrades to a structured failed proposal, never a crash.

Response shape note (CQRS): the tool returns the public pending proposal (id, kind, summary, status) so the host can render the approval card — the command’s real “return” is the proposal id; the mutation result only ever exists on the proposal record after a human approves.

Reading this page: a message page renders its contract and its one hop — who sends it, who receives it (that is EventCatalog’s grain: message = contract). The service page shows this workflow’s full fan-out (its sends); the flow shows the lifecycle step by step.

Input schema

Architecture diagram

Input (from the zod tool schema)

10 properties
customerNamestring
required
Min length: 1
customerPostring
soNumstring
opportunityIdstring
notestring
linesarray[object]
required