---
id: FAS-ACC-PRD-02
title: Product Pricing Acceptance
feature: FEAT-ACC-PRD-02
product_area: accounting
module: products
revision: 1
status: proposed
product_intent: proposed
source_sha:
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
capabilities:
  - CAP-ACC-PRD-008
  - CAP-ACC-PRD-009
scenarios:
  - id: FAS-ACC-PRD-02-01
    title: Kinds guide the price experience and saved grid
    kind: behaviour
    exercises:
      - CAP-ACC-PRD-008
      - CAP-ACC-PRD-002
      - CAP-ACC-PRD-015
    relies_on:
      - ATS-ACC-PRD-008-01
      - ATS-ACC-PRD-008-03
      - ATS-ACC-PRD-015-02
    preconditions: A unit supports fixed-priced and giver-priced products.
    steps: >-
      Create a fixed-priced offer with audience rows and a donation without rows; retrieve both and inspect
      their list prices.
    expected: The fixed grid reads back in minor units and the donation presents a donor-chosen amount.
    negative: false
    data_needs: A unit supports fixed-priced and giver-priced products.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/products/planning/features/FEAT-ACC-PRD-02-pricing.md#capabilities;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-01;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-03;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-015-decide-where-a-product-s-money-goes.md#ATS-ACC-PRD-015-02
  - id: FAS-ACC-PRD-02-02
    title: Commerce activation changes whether a migrated offer can be corrected
    kind: interaction
    exercises:
      - CAP-ACC-PRD-008
      - CAP-ACC-PRD-009
      - CAP-ACC-PRD-004
    relies_on:
      - ATS-ACC-PRD-008-08
      - ATS-ACC-PRD-009-03
      - ATS-ACC-PRD-004-06
    preconditions: A migrated offer holds a local audience that is absent from a newly available Commerce register.
    steps: >-
      Try a descriptive correction resending the grid, realize the audience through the intended Commerce
      path, then retry.
    expected: >-
      The first attempt preserves the old offer; completion should admit a later valid save without losing
      migrated context.
    negative: true
    data_needs: A migrated offer holds a local audience that is absent from a newly available Commerce register.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/products/planning/features/FEAT-ACC-PRD-02-pricing.md#capabilities;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-08;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-009-hand-rhythm-1-0-special-prices-over-to-commerce.md#ATS-ACC-PRD-009-03;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-004-change-a-product-without-losing-another-person-s-edit.md#ATS-ACC-PRD-004-06
  - id: FAS-ACC-PRD-02-03
    title: Migration extends the grid while retaining earlier offer rows
    kind: lifecycle
    exercises:
      - CAP-ACC-PRD-008
      - CAP-ACC-PRD-009
    relies_on:
      - ATS-ACC-PRD-009-01
      - ATS-ACC-PRD-008-08
    preconditions: Two products have standard prices and former special-price rows with criteria and ordering.
    steps: >-
      Apply the migration in an isolated transaction; inspect ordinary grid rows and their corresponding
      handovers.
    expected: >-
      Existing prices precede the new audience cells and preserved handover context identifies each migrated
      offer.
    negative: false
    data_needs: Two products have standard prices and former special-price rows with criteria and ordering.
    bound_to:
      - TST-ACC-PRD-033
    provenance: test
    source: >-
      services-accounting:modules/products/tests/integration/db/special-prices-a12-migration.integration.spec.js
  - id: FAS-ACC-PRD-02-04
    title: Price corrections use catalogue update authority
    kind: permission
    exercises:
      - CAP-ACC-PRD-008
      - CAP-ACC-PRD-009
      - CAP-ACC-PRD-004
    relies_on:
      - ATS-ACC-PRD-004-07
      - ATS-ACC-PRD-008-08
      - ATS-ACC-PRD-009-03
    preconditions: A reader can inspect a migrated product and a manager can replace products.
    steps: >-
      Attempt a grid correction as the reader, then make an admissible correction as the manager without an
      Accounting handover-edit operation.
    expected: >-
      The reader cannot change the grid; authorized correction preserves handover context and does not claim
      realization authority.
    negative: true
    data_needs: A reader can inspect a migrated product and a manager can replace products.
    bound_to: []
    provenance: proposed
    source: >-
      rhythm-v2-docs:specs/accounting/products/planning/features/FEAT-ACC-PRD-02-pricing.md#capabilities;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-004-change-a-product-without-losing-another-person-s-edit.md#ATS-ACC-PRD-004-07;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-08;
      rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-009-hand-rhythm-1-0-special-prices-over-to-commerce.md#ATS-ACC-PRD-009-03
  - id: FAS-ACC-PRD-02-05
    title: A failed grid correction retains its prior audience configuration
    kind: regression
    exercises:
      - CAP-ACC-PRD-008
      - CAP-ACC-PRD-004
    relies_on:
      - ATS-ACC-PRD-004-06
      - ATS-ACC-PRD-008-07
    preconditions: A product has an ordered price grid at a read version.
    steps: Replace it with overlapping dated prices and retrieve the product after refusal.
    expected: The invalid replacement leaves the earlier prices and version unchanged.
    negative: true
    data_needs: A product has an ordered price grid at a read version.
    bound_to:
      - TST-ACC-PRD-030
    provenance: test
    source: 'services-accounting:modules/products/tests/e2e/products.e2e.spec.js'
evidence:
  - >-
    rhythm-v2-docs:specs/accounting/products/planning/features/FEAT-ACC-PRD-02-pricing.md#capabilities;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-01;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-03;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-015-decide-where-a-product-s-money-goes.md#ATS-ACC-PRD-015-02
  - >-
    rhythm-v2-docs:specs/accounting/products/planning/features/FEAT-ACC-PRD-02-pricing.md#capabilities;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-08;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-009-hand-rhythm-1-0-special-prices-over-to-commerce.md#ATS-ACC-PRD-009-03;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-004-change-a-product-without-losing-another-person-s-edit.md#ATS-ACC-PRD-004-06
  - 'services-accounting:modules/products/tests/integration/db/special-prices-a12-migration.integration.spec.js'
  - >-
    rhythm-v2-docs:specs/accounting/products/planning/features/FEAT-ACC-PRD-02-pricing.md#capabilities;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-004-change-a-product-without-losing-another-person-s-edit.md#ATS-ACC-PRD-004-07;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-008-price-a-product-for-each-audience-period-and-currency.md#ATS-ACC-PRD-008-08;
    rhythm-v2-docs:specs/accounting/products/design/tests/ATS-ACC-PRD-009-hand-rhythm-1-0-special-prices-over-to-commerce.md#ATS-ACC-PRD-009-03
  - 'services-accounting:modules/products/tests/e2e/products.e2e.spec.js'
regression_record:
  - revision: 1
    change: initial
    scenarios:
      - FAS-ACC-PRD-02-01
      - FAS-ACC-PRD-02-02
      - FAS-ACC-PRD-02-03
      - FAS-ACC-PRD-02-04
      - FAS-ACC-PRD-02-05
    reason: Initial cumulative feature acceptance coverage from the pinned specification and executable evidence.
    provenance: documented
    source: 'rhythm-v2-docs:specs/CONVENTIONS.md#5.3 Feature Acceptance Suite (`FAS`)'
---

# Product Pricing: Feature Acceptance Suite

## What the Feature Must Do as a Whole

The suite checks that staff can configure an offer while earlier special-price information remains traceable. Purchase-time audience qualification and conversion require Commerce proof beyond catalogue storage.

## Interactions Between Capabilities

Migration changes the grid that ordinary corrections resend. Activating the audience register can therefore change whether an unrelated correction succeeds; the suite retains that transition as an explicit proposed chain.

## Regression Record

| Revision | Change | Scenario | Why |
|---|---|---|---|
| 1 | initial | all | Establish cumulative acceptance for the feature and retain the unresolved execution boundaries. |
