Kaizen
Browse modulesPricingpricing/sharedInterfaces

Interface: PricingMatrixRateTier

Defined in: shared/pricing/types/matrix.ts:34

One row of the matrix: a PricingRateTiers row plus its current requirement condition ids and its cells, keyed by scheduleConditionId. cells is sparse — a schedule with no price set for this tier is simply absent from the record, not present with a null/zero amount.

Properties

cells

cells: Record<string, PricingMatrixCell>;

Defined in: shared/pricing/types/matrix.ts:39


defaultAmountCents

defaultAmountCents: number | null;

Defined in: shared/pricing/types/matrix.ts:59

The tier's default price (PLA-141) — the price charged to a line naming this tier that matches NO schedule column. That makes it an effective price, in both halves: evaluatePricing charges it (see applyRateTierDefaults), and the matrix grid renders it as its own leading "All open hours" column. It is also the value seeded into a schedule column's cells when that column is added. cells remains the source of truth for a tier x SCHEDULE, and changing this default never rewrites existing cells.

A line that fails the tier's requirementConditionIds is NOT charged the default — an ineligible customer must not fall back to the eligible price.

Null when the tier has no default, in which case adding a column leaves its cell for this tier unpriced. defaultAmountCents: 0 with a unit set is a real default meaning "free" — the same priced-at-zero convention as PricingMatrixCell.isFree.

Both fields move together: either both are null or both are set.


defaultPer

defaultPer: "day" | "hour" | "night" | null;

Defined in: shared/pricing/types/matrix.ts:72

The default's optional SECOND axis — "$10 per attendee per hour".

Independently nullable, so it does NOT move with the pair above: a default always has an amount and a unit, and may or may not have a duration.

Surfaced here so the tier modal can round-trip what the operator chose. Before this existed the Duration select had nowhere to read from, so reopening a two-axis tier showed it empty — the selection looked discarded even when the cells were priced correctly.


defaultUnit

defaultUnit: 
  | "flat"
  | "unit"
  | "year"
  | "month"
  | "day"
  | "hour"
  | "night"
  | "person"
  | null;

Defined in: shared/pricing/types/matrix.ts:60


description

description: string | null;

Defined in: shared/pricing/types/matrix.ts:37


name

name: string;

Defined in: shared/pricing/types/matrix.ts:36


rateTierId

rateTierId: string;

Defined in: shared/pricing/types/matrix.ts:35


requirementConditionIds

requirementConditionIds: string[];

Defined in: shared/pricing/types/matrix.ts:38

On this page