---
id: SCR-ACC-PRD-003
title: Product Editor
route: /console/{tenantId}/configuration/accounting/products/{id}?unit={businessUnitId}
surface: console
product_area: accounting
module: products
revision: 3
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-accounting: f47cb263875bbc0c5640fba7dae6785ec32695f8
purpose: Inspect a saved product and correct catalogue and financial values under their separate versions and
  authority.
supports:
- JNY-ACC-PRD-001
- JNY-ACC-PRD-003
- JNY-ACC-PRD-004
- JNY-ACC-PRD-005
- CAP-ACC-PRD-003
- CAP-ACC-PRD-004
- CAP-ACC-PRD-008
- CAP-ACC-PRD-010
- CAP-ACC-PRD-011
- CAP-ACC-PRD-012
- CAP-ACC-PRD-013
- CAP-ACC-PRD-014
- CAP-ACC-PRD-015
- CAP-ACC-PRD-016
permission: Product update allows editing; product read without update opens the read-only editor. Accounting
  cards and saving apply their own read and update checks; this page does not provide an accounting-only edit
  mode.
entry_from:
- /console/{tenantId}/configuration/accounting/products (row name or Edit)
exits_to:
- /console/{tenantId}/configuration/accounting/products?type={productTypeId}&unit={businessUnitId}
- /console/{tenantId}/configuration/accounting/products/{id}/pricing (Commerce's product pricing page)
displays:
- field: The heading indicates Edit or View, with Pricing navigation for product readers.
  source: getProduct; listProductTypes
- field: Loaded product details and prices populate the form, with the complete setup available to accounting
    readers.
  source: getProduct (DOM-ACC-PRD-001, DOM-ACC-PRD-002); getProductAccounting (DOM-ACC-PRD-004)
- field: Kind support controls task instructions, quantity discounts and eligibility sections.
  source: getProduct (DOM-ACC-PRD-001); CRM task types and queues
- field: Replacement retains hidden availability, portal flag, ceiling, confirmation and components from loaded
    product data.
  source: getProduct (DOM-ACC-PRD-001)
actions:
- label: Save (product stage)
  operation_id: updateProduct
  permission: accounting.products.update
  confirm: false
- label: Save (accounting stage)
  operation_id: replaceProductAccounting
  permission: accounting.product-accounting.update
  confirm: false
- label: Reload after a conflict
  operation_id: getProduct
  permission: accounting.products.read
  confirm: false
- label: Pricing
  operation_id: none (opens Commerce's pricing page)
  permission: accounting.products.read
  confirm: false
- label: Cancel
  operation_id: none
  permission: accounting.products.read
  confirm: false
states:
- loading
- not found
- error
- read-only
- conflict
- stage failed
validation:
- BR-CAP-ACC-PRD-003-06
- BR-CAP-ACC-PRD-004-10
- BR-CAP-ACC-PRD-004-11
- BR-CAP-ACC-PRD-008-01
- BR-CAP-ACC-PRD-008-15
- BR-CAP-ACC-PRD-010-06
- BR-CAP-ACC-PRD-011-09
- BR-CAP-ACC-PRD-012-05
- BR-CAP-ACC-PRD-013-06
- BR-CAP-ACC-PRD-014-08
- BR-CAP-ACC-PRD-015-14
- BR-CAP-ACC-PRD-016-10
patterns:
- Standard layout (PageLayout width standard, PageHeader with actions)
- common product component (ProductCommonSections)
- EditorActionBar with conflict message and Reload
- read-only editor with disabled controls
- stage error panel
- toast on save
component: components/accounting-config/products/product-editor-page.tsx (ProductEditorPage) with product-editor.tsx
  (ProductEditor, mode edit)
evidence:
- 'react-console at baf6dae3: components/accounting-config/products/product-editor-page.tsx, product-editor.tsx
  (useProductEditorState), product-common-sections.tsx, product-section-types.ts (REMOVED_SECTION_KEYS); lib/accounting-config/product-form.ts
  (preservedProductFields); components/configuration/area-route.tsx (pricing route).'
- 'services-accounting at f47cb263: modules/products/aws/api/products.routes.ts (getProduct, updateProduct,
  getProductAccounting, replaceProductAccounting).'
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-005, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-005]
---

# Product Editor

## What the Screen Is For

Finance can inspect a product and edit it with product update authority. Product readers receive disabled controls. Accounting authority separately gates financial cards and saving, but this page supplies no accounting-only editing mode without product update access.

## What It Shows and Lets People Do

The form loads product values, pricing and available accounting details. Replacement sends the read version and retains settings hidden from the editor. Changed accounting saves next using its own version. Pricing opens the Commerce page. Retired products remain inspectable by readers, while the service refuses ordinary correction until reactivation.

## States and Errors

Loading, missing products and failed reads have distinct outcomes. A version conflict offers Reload to refresh the product and permitted financial details. If the financial stage fails after product replacement, the product remains saved and the page identifies the failed stage.

## Patterns It Must Respect

Use the common editor, disabled read controls and conflict action bar. Preserve loaded settings whose controls were removed. Setup deletion remains an API operation without an action on this page.
