Files
vmall/openspec/specs/invoice/spec.md
T
james 2136a48fbe chore(openspec): archive the mock-migration waves and green the spec set
Archive the three completed changes behind replace-mock-api-wave-1/2/3. Each
merge applied cleanly to the main specs:

- catalog gains the Public product browse requirement (subtree filtering and
  price sort)
- frontend-mall picks up the per-domain adapter, the pinned home page, the
  discovery-page changes, the live auth panels and the live transaction flows
- cart's Server-side cart requirement now documents the shop and stock carried
  by every line

Also replace the TBD Purpose placeholder in all eleven specs with a one-line
description of what each capability covers. Those placeholders predate this
work and were the only reason `openspec validate --all --strict` reported
0 passed / 11 failed; it now reports 11 passed / 0 failed.
2026-09-17 16:36:10 +00:00

931 B

invoice Specification

Purpose

Invoice requests raised by buyers and their issuance by shops.

Requirements

Requirement: Invoice request

Customers SHALL request at most one open invoice (发票) per order, with title, kind (personal | company), and tax_no required for company invoices. Amount equals the order total in the order currency.

Scenario: company invoice requires tax number

  • WHEN requesting a company invoice without tax_no
  • THEN the API returns 400

Scenario: duplicate rejected

  • WHEN an order already has a requested or issued invoice
  • THEN a second request returns 409

Requirement: Invoice issuance

Merchants SHALL issue requested invoices of their own shop's orders; issuing sets invoice_no, issued_at and status issued.

Scenario: issue flow

  • WHEN the shop issues a requested invoice
  • THEN the customer sees status issued with an invoice number