Kaizen
Browse modulesPricingpricing/sharedSchemas and constants

Variable: PricingDomainConfig

const PricingDomainConfig: ZodDiscriminatedUnion<[ZodObject<{
  actions: ZodArray<ZodObject<{
     adjustmentKind: ZodDefault<ZodLiteral<"base_price">>;
     amount_cents: ZodNumber;
     glCode: ZodOptional<ZodString>;
     label: ZodString;
     per: ZodOptional<ZodEnum<{
        day: "day";
        hour: "hour";
        night: "night";
     }>>;
     responsibleParty: ZodOptional<ZodEnum<{
        platform: "platform";
        processor: "processor";
        tax_authority: "tax_authority";
        tenant: "tenant";
     }>>;
     type: ZodLiteral<"BASE_PRICE">;
     unit: ZodEnum<{
        day: "day";
        flat: "flat";
        hour: "hour";
        month: "month";
        night: "night";
        person: "person";
        unit: "unit";
        year: "year";
     }>;
  }, $strip>>;
  calculation_phase: ZodLiteral<"base">;
  level: ZodEnum<{
     line: "line";
     order: "order";
  }>;
}, $strip>, ZodObject<{
  actions: ZodArray<ZodDiscriminatedUnion<[ZodObject<{
     adjustmentKind: ZodDefault<ZodEnum<...>>;
     glCode: ZodOptional<ZodString>;
     label: ZodString;
     method: ZodEnum<{
        flat: ...;
        percentage: ...;
     }>;
     responsibleParty: ZodOptional<ZodEnum<...>>;
     scaling: ZodDefault<ZodEnum<...>>;
     type: ZodLiteral<"FEE">;
     value: ZodNumber;
   }, $strip>, ZodObject<{
     adjustmentKind: ZodDefault<ZodLiteral<...>>;
     glCode: ZodOptional<ZodString>;
     label: ZodString;
     method: ZodEnum<{
        flat: ...;
        percentage: ...;
     }>;
     responsibleParty: ZodOptional<ZodEnum<...>>;
     scaling: ZodDefault<ZodEnum<...>>;
     type: ZodLiteral<"DISCOUNT">;
     value: ZodNumber;
  }, $strip>], "type">>;
  calculation_phase: ZodEnum<{
     compounding: "compounding";
     non_compounding: "non_compounding";
     post: "post";
  }>;
  level: ZodEnum<{
     line: "line";
     order: "order";
  }>;
}, $strip>], "calculation_phase">;

Defined in: shared/pricing/types/domain-config.ts:72

Pricing-domain domain_config schema. Discriminated on calculation_phase so the allowed actions[] shape varies by phase:

  • calculation_phase: "base" → actions: BasePriceAction[]
  • other phases → actions: AdjustmentAction[] (i.e. FeeAction | DiscountAction)

TypeScript narrows on calculation_phase, so consumers get editor-time safety: a compounding rule cannot carry a BASE_PRICE action, and a base rule cannot carry a FEE or DISCOUNT, without a Zod parse failure and a TS error at the call site.