ModifierOption Model

A modifier option represents a "Modifier" that can be optionally applied to a RemoteOrderProduct via the ProductModifierID

Modifiers represent a variation on the ordered product that doesn't functionally represent a change to the actual product but
instead represents a change in form of the product (eg - Ordering a Large/medium/Small drink or Ordering a Chocolate/Strawberry milkshake)

Modifiers are independent of eachother as each product may only have a single modifier selected (at maximum).

Required MaxLength(16) Truncates
optionName : string

The name of this option to be presented to the consumer

Required decimal(18, 2)
priceVariance : number (decimal)

The amount to vary the individual RemoteOrderProduct.Price when selecting this modifier. This change in price will also need to be applied to TotalAmount

This will be a variance in price, to get the actual item price (when selecting this ModifierOption for a MenuItem) you'll need to add this variance to the RemoteOrderProduct.Price

Can be zero or negative.

Nullable MaxLength(64)
productIDOverride : string

Can be null. Either ProductIDOverride OR ProductModifierID can be set. If both are null then this option represents a "no modifier" option

If this option is selected don't apply a modifier, instead change the ordered Product ID to this value.

This exists to support sites that represent product forms as seperate products. Eg having PLUs for "Large Cheese Pizza" and "Small Cheese Pizza"

Nullable MaxLength(64)
productModifierID : string

Can be null. Either ProductIDOverride OR ProductModifierID can be set. If both are null then this option represents a "no modifier" option

If specified, when creating a RemoteOrderProduct apply this value to the RemoteOrderProduct.ProductModifierID

Nullable
taxVariance : TaxVariance []

These amounts will be the variations on the various taxes defined in the RemoteProduct.MenuItemTaxes.

This will be a variance in tax amounts, to get the actual item tax amounts (when selecting this ModifierOption for a MenuItem) you'll need to add these variances (matching TaxId) to the RemoteOrderProduct.MenuItemTaxes

Any missing/null values can be assumed to be 0. Can contain negative / zero values.

This list can also be null/empty

isDefaultOption : bool

If true, this ModifierOption should be treated as the default initial selection when the user is prompted to choose.

A maximum of 1 ModifierOption for any given product will have this set.

Example
{
  "optionName": "string value",
  "priceVariance": 1.23,
  "productIDOverride": "string value",
  "productModifierID": "string value",
  "taxVariance": [],
  "isDefaultOption": true
}