PRD: Price & Fare Editing on the Product Screen
| Module | Products | PRD ID | PRD-FAR-001 |
| Status | Ready to dev | FEAT | FAR |
| Epic | — | Plane | BANA-1554 |
| Date | 2026-06-03 | Version | v1.0 |
| Packages | @nx/pricing · @nx/commerce | URD | FAR |
| Surface | Client · Owner/Mgr | ||
| Owner | Phát Nguyễn | ||
What price & fare editing on the product screen is
A sellable variant needs a price, but owners have nowhere to set or edit that price except the product screen itself - where they already create and edit the variant's name, description, and options. If setting a price meant leaving the product screen for a separate pricing screen, pricing would drift apart from building the product and get skipped.
This PRD builds the pricing panel right inside the product edit screen on Client: owners set the default selling price, create a SALE or OVERRIDE parent fare with its child fares, and set an effective date range or quantity window for each fare - all in the same variant-edit flow. The actual pricing engine (winning-fare selection, tax, packaging the immutable pricing snapshot) belongs to the Pricing module, not this PRD - see PRD: Fare & Tax Pricing Engine.
Price and fare, who owns what
| Where | What happens there |
|---|---|
| Product screen (this PRD) | Owner sets/edits the default selling price, creates a SALE/OVERRIDE parent fare and child fares, sets an effective window and a quantity window |
| Pricing module (engine) | Selects the winning fare at sale time, computes tax, packages the immutable pricing snapshot attached to the order |
Saving the variant is enough - the price sync to the fare set in the Pricing module runs automatically, with nothing further for the owner to do.
One pricing pass, from the product screen to a sale
An owner opens the product edit screen for a variant → sets the default selling price and, if needed, creates a SALE or OVERRIDE parent fare with its child fares (amount, date range, quantity window) → saves the variant → the price change syncs to the fare set in the Pricing module, where the engine uses it to price the item at sale time.
Where this is easy to get wrong
This PRD does not decide which price wins at sale time
The pricing panel on the product screen is only where the selling price, parent fare, effective window, and quantity window are entered. The winning-fare selection algorithm, tax computation, and packaging the pricing snapshot at sale time do not run here - they belong entirely to the Pricing module's engine (PRD-FARE-001). Reading this PRD as where the final selling price gets decided misreads the UI/engine boundary.