---
id: SCR-COM-ORD-003
title: New order
route: '/console/{tenantId}/crm/contacts/{id}/orders/new'
surface: console
product_area: commerce
module: orders
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
purpose: 'Prepare a contact purchase, review live prices, place it once and collect payment or proceed on terms.'
supports:
  - JNY-COM-ORD-001
  - JNY-COM-ORD-002
  - CAP-COM-ORD-001
  - CAP-COM-ORD-002
  - CAP-COM-ORD-003
  - CAP-COM-ORD-004
  - CAP-COM-ORD-005
  - CAP-COM-ORD-007
permission: commerce.orders.create
entry_from:
  - Contact 360 (Create order)
exits_to:
  - '/console/{tenantId}/crm/contacts/{id}/orders/{orderId}'
  - Contact 360 Orders tab (Back)
displays:
  - field: 'Customer, bill-to and acting contact'
    source: CRM contact read; organization affiliation for organization purchases
  - field: Store products and their prices
    source: 'stores, storefront and sellable catalogue reads (catalog module and listCatalogProductTypes)'
  - field: 'Line prices, discounts, promotion breakdown, tax, fee and totals'
    source: previewCheckout
  - field: Problems that block placement
    source: 'previewCheckout problems, by item'
  - field: Payment methods the policy allows
    source: the cart's checkout policy settings
  - field: Placed order and payment outcome
    source: 'placeCheckout, tenderOrder, getOrder'
actions:
  - label: Select and edit purchase items
    operation_id: addCheckoutItem
    permission: commerce.checkouts.update
    confirm: false
  - label: Create the cart when the first item is selected
    operation_id: createCheckout
    permission: commerce.checkouts.create
    confirm: false
  - label: Edit units or the receiving party
    operation_id: changeCheckoutItem
    permission: commerce.checkouts.update
    confirm: false
  - label: Delete the selected purchase item
    operation_id: removeCheckoutItem
    permission: commerce.checkouts.update
    confirm: false
  - label: Apply or clear a promotion code
    operation_id: applyCheckoutPromotionCode
    permission: commerce.checkouts.update
    confirm: false
  - label: Clear the selected promotion code
    operation_id: removeCheckoutPromotionCode
    permission: commerce.checkouts.update
    confirm: false
  - label: Recalculate automatically after cart changes
    operation_id: previewCheckout
    permission: commerce.checkouts.update
    confirm: false
  - label: Replace the cart when its purchaser or bill-to changes
    operation_id: abandonCheckout
    permission: commerce.checkouts.update
    confirm: false
  - label: Place order
    operation_id: placeCheckout
    permission: commerce.orders.create
    confirm: true
  - label: 'Choose card, offline collection or terms billing'
    operation_id: tenderOrder
    permission: commerce.orders.tender
    confirm: true
states:
  - loading
  - empty
  - error
  - inactive
validation:
  - BR-CAP-COM-ORD-001-03
  - BR-CAP-COM-ORD-001-04
  - BR-CAP-COM-ORD-001-05
  - BR-CAP-COM-ORD-003-12
  - BR-CAP-COM-ORD-004-02
  - BR-CAP-COM-ORD-005-03
  - BR-CAP-COM-ORD-005-12
  - BR-CAP-COM-ORD-007-13
patterns:
  - >-
    order composer (the v0 order workspace, approved by Andrew for every kind of order; live mode shows
    Merchandise only)
  - contact selector for parties
  - 'Accounting''s card entry dialog, never a Commerce copy'
  - pricing debounced (two hundred and fifty milliseconds) and requests serialised per screen
  - RequirePermission guard on the page
component: components/order-composer/new-order-screen.tsx
evidence:
  - >-
    react-console at baf6dae3: app/(console)/console/[tenantId]/crm/contacts/[id]/orders/new/page.tsx;
    components/order-composer/*.tsx; lib/order-composer/live/*.ts; lib/commerce/composer/live.ts.
  - >-
    services-commerce at c8b66a98: docs/milestones/COMM-M2-take-a-staff-order.md (reuse the v0 New Order
    screen).
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004, TC-CRY-001, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-002, TC-PI-003, TC-PRV-001, TC-PRV-002]
---

# New order

## What the Screen Is For

A clerk begins from a contact and builds the proposed purchase, reviews calculated prices and then places and pays it. The successful flow opens the resulting order.

## What It Shows and Lets People Do

Customer and bill-to begin as the routed contact. Product and quantity changes trigger a debounced live assessment showing prices, offers, tax, fees and blockers. Code edits also recalculate. Party or purchase-reference changes abandon and rebuild the cart. Placement reuses the cart key, and payment follows the configured methods with Accounting card entry.

## States and Errors

Contact loading and missing contact have explicit feedback. Refused placement leaves the cart available for correction, while decline preserves the placed order for another attempt. An empty selection disables placement.

## Patterns It Must Respect

The existing composer and contact selector remain the baseline. Live mode exposes Merchandise and holds Membership back. Shipping choice, installment selection and explicit policy switching are not offered by this screen.
