Skip to main content

Pricing

Overview

The Pricing types are discriminated unions of possible pricing structures.

This enables a variety of UI treatments, such as price ranges, strikethrough prices, promotional messaging, and unknown prices.


// When it will always be a single price
type Pricing =
UnknownPrice
| PromotionPrice
| SalePrice
| ListPrice

// Pricing for a product that has not been narrowed down to a single
// purchasable unit, e.g, [`ContainerProduct](./ContainerProduct), and the price may be a range.
type ProductPricing =
UnknownPrice
| PromotionPrice
| SalePrice
| ListPrice
| RangePrice

// When it must be a single, known price, such as on orders
type KnownPricing =
PromotionPrice
| SalePrice
| ListPrice

UnknownPrice

Attributes

type

type: literal = 'unknown'


Currently unknown price

PromotionPrice

Attributes

type

type: literal = 'promotion'

originalPrice

type: Money


The money amount prior to the applied promotion

finalPrice

type: Money


The money value after the applied promotion. The money value that will be paid.

promotion

type: Promotion


The promotion affecting this price.

SalePrice

Attributes

type

type: literal = 'sale'


originalPrice

type: Money


finalPrice

type: Money


The sale price money value. The money value that will be paid.

ListPrice

Attributes

type

type: literal = 'list'

finalPrice

type: string


The money value that will be paid.

RangePrice

Attributes

type

type: literal = 'range'

min

type: Money


The minimum money value for the range.

max

type: Money