---
id: JNY-COM-ORD-002
title: An organization purchase is accepted on terms
feature: FEAT-COM-ORD-02
product_area: commerce
module: orders
revision: 1
status: draft
product_intent: confirmed
implementation_evidence: observed
supersedes:
  - COM-ACC-0859
  - COM-ACC-0860
  - COM-ACC-0864
  - COM-ACC-0316
  - COM-ACC-0286
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-COM-014
goal: >-
  Place a purchase for an organization, accept it on terms and inspect the financial position returned by
  Accounting.
capabilities:
  - CAP-COM-ORD-001
  - CAP-COM-ORD-003
  - CAP-COM-ORD-005
  - CAP-COM-ORD-006
  - CAP-COM-ORD-007
  - CAP-COM-ORD-010
screens:
  - '/console/{tenantId}/crm/contacts/{id}/orders/new'
  - '/console/{tenantId}/orders/{orderId}'
steps:
  - 'n': 1
    surface: '/console/{tenantId}/crm/contacts/{id}/orders/new'
    action: >-
      Start from the contact and select their organization as the billed customer despite the missing
      purchasing role.
    capability: CAP-COM-ORD-001
    expected: The composer explains the recorded staff override and creates the organization’s cart.
    provenance: test
    source: >-
      react-console:components/order-composer/__tests__/live-composer.test.tsx#lets an organization buy
      through a contact with no purchasing role, and says Commerce records it
  - 'n': 2
    surface: previewCheckout
    action: Select the product and inspect the preview.
    capability: CAP-COM-ORD-003
    expected: 'The displayed amounts match the price, tax and total returned by Commerce.'
    provenance: test
    source: >-
      react-console:components/order-composer/__tests__/live-composer.test.tsx#shows exactly the figures
      Commerce's preview answered
  - 'n': 3
    surface: placeCheckout
    action: Place the prepared cart.
    capability: CAP-COM-ORD-005
    expected: The order exists with billing still pending.
    provenance: test
    source: >-
      services-commerce:modules/checkout/tests/e2e/placement.e2e.spec.js#answers 200 with the order: numbered
      10000, placed, pending billing, pay now with a thirty-minute tender window, created
  - 'n': 4
    surface: tenderOrder
    action: Select Bill on Terms and record purchase reference PO-7781.
    capability: CAP-COM-ORD-007
    expected: Acceptance creates the real invoice with a thirty-day due date and takes no immediate payment.
    provenance: test
    source: >-
      react-console:components/order-composer/__tests__/live-composer.test.tsx#bills on terms with the
      purchase order number, and takes no money
  - 'n': 5
    surface: tenderOrder
    action: Inspect the accepted purchase’s delivery condition.
    capability: CAP-COM-ORD-006
    expected: >-
      The default terms condition permits delivery before payment; fulfilment still performs the delivery
      work.
    provenance: test
    source: >-
      services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#opens the gate of the console
      order when it is billed: the invoice is unpaid and the line is no longer waiting
  - 'n': 6
    surface: '/console/{tenantId}/orders/{orderId}'
    action: Use Receive Payment from the order.
    capability: CAP-COM-ORD-007
    expected: The Settle Invoices destination in Accounting identifies the chosen invoice.
    provenance: test
    source: >-
      react-console:components/console/order/__tests__/order-360-live-cards.test.tsx#shows Receive Payment as
      a link to Accounting's Settle Invoices with the invoice selected, and no Take Payment
  - 'n': 7
    surface: '/console/{tenantId}/orders/{orderId}'
    action: Refresh the order after returning.
    capability: CAP-COM-ORD-010
    expected: The money panel uses the latest Accounting position read by Commerce.
    provenance: test
    source: >-
      services-commerce:modules/orders/tests/integration/services/mirror/refresh-money-mirror.integration.spec.js#writes
      the mirror of the billed order from the view: paid counts the credit application once, the rest their
      columns
alternates:
  - from_step: 5
    condition: An item’s policy requires payment before delivery
    path: Keep that line waiting for payment
    outcome: Accounting’s reported payment enables its delivery condition
    provenance: test
    source: >-
      services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#leaves a console order waiting
      when the product’s own policy requires payment first
failures:
  - from_step: 7
    condition: Accounting events have not updated Commerce
    path: Use the planned hourly financial refresh
    outcome: The mirrored position catches up when the refresh reads the payment
    provenance: documented
    source: 'services-commerce:docs/milestones/plans/COMM-M2-plan.md#8. Dependencies'
rules_in_play:
  - BR-CAP-COM-ORD-001-04
  - BR-CAP-COM-ORD-005-01
  - BR-CAP-COM-ORD-006-01
  - BR-CAP-COM-ORD-006-09
  - BR-CAP-COM-ORD-006-10
  - BR-CAP-COM-ORD-007-09
  - BR-CAP-COM-ORD-007-14
  - BR-CAP-COM-ORD-010-06
assertions:
  - id: AS-JNY-COM-ORD-002-01
    statement: Terms acceptance produces a real invoice without an immediate charge.
    provenance: test
    source: >-
      services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#pay later converts the pro
      forma to a real invoice and accepts the order on terms
  - id: AS-JNY-COM-ORD-002-02
    statement: The default console terms condition permits delivery while the invoice remains unpaid.
    provenance: test
    source: >-
      services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#opens the gate of the console
      order when it is billed: the invoice is unpaid and the line is no longer waiting
  - id: AS-JNY-COM-ORD-002-03
    statement: An Accounting payment can refresh the order to a paid position with no balance.
    provenance: test
    source: >-
      services-commerce:modules/orders/tests/unit/mirror/money-mirror.spec.js#sums the positions: paid counts
      payments and credit applications once, credited the memos, the balance what is due
e2e_policy: required
e2e_reason: >-
  The browser proof must follow the organization purchase through the composer, order detail and Accounting
  settlement handoff, then demonstrate that the reported financial position returns.
evidence:
  - >-
    Examined reference: react-console:components/console/order/__tests__/order-360-live-cards.test.tsx#shows
    Receive Payment as a link to Accounting's Settle Invoices with the invoice selected, and no Take Payment
  - >-
    Examined reference: react-console:components/order-composer/__tests__/live-composer.test.tsx#bills on
    terms with the purchase order number, and takes no money
  - >-
    Examined reference: react-console:components/order-composer/__tests__/live-composer.test.tsx#lets an
    organization buy through a contact with no purchasing role, and says Commerce records it
  - >-
    Examined reference: react-console:components/order-composer/__tests__/live-composer.test.tsx#shows exactly
    the figures Commerce's preview answered
  - 'Examined reference: services-commerce:docs/milestones/plans/COMM-M2-plan.md#8. Dependencies'
  - >-
    Examined reference: services-commerce:modules/checkout/tests/e2e/placement.e2e.spec.js#answers 200 with
    the order: numbered 10000, placed, pending billing, pay now with a thirty-minute tender window, created
  - >-
    Examined reference: services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#leaves a
    console order waiting when the product’s own policy requires payment first
  - >-
    Examined reference: services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#opens the
    gate of the console order when it is billed: the invoice is unpaid and the line is no longer waiting
  - >-
    Examined reference: services-commerce:modules/orders/tests/e2e/billing-and-tender.e2e.spec.js#pay later
    converts the pro forma to a real invoice and accepts the order on terms
  - >-
    Examined reference:
    services-commerce:modules/orders/tests/integration/services/mirror/refresh-money-mirror.integration.spec.js#writes
    the mirror of the billed order from the view: paid counts the credit application once, the rest their
    columns
  - >-
    Examined reference: services-commerce:modules/orders/tests/unit/mirror/money-mirror.spec.js#sums the
    positions: paid counts payments and credit applications once, credited the memos, the balance what is due
---
# An organization purchase is accepted on terms

## Story

A clerk purchases for an organization whose contact lacks the purchasing role. The composer records the staff override, and the clerk accepts the sale on terms using the customer’s reference. The order permits the default delivery work before payment. Later the clerk follows the invoice into Accounting and refreshes the order to inspect the reported financial position.
