Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Terminology & overview: Oracle Config POS - Overview

Different pricing between service modes will be managed by priceSequence within the same definitionSequence. Applicable for all products (item, combo, modifier).

  • DefinitionSequence always = 1

    • pricingSequence = 1 → pick-up Service Mode

    • pricingSequence = 2 → delivery Service Mode

GET Menus: check for PLU + DefSeq + PriceSeq to verify if item is active or not in the restaurant. Items that are not active are

Standards

  1. GET Menus: check for PLU + DefSeq + PriceSeq to verify if item is active or not in the restaurant. Items that are not active are unavailable. However, this endpoint doesn’t take restaurant-level availability into account fully.

  2. To retrieve unavailable items per store, we need to make another call to the GET Unavailable endpoint, which returns the list of unavailable items. Hence, whenever we build the store menu (after a guest selects a restaurant in the platform), we need to call both endpoints to determine availability on a store-level. Unavailable items from GET Unavailable must be removed from the active list retrieved from GET Menus.

  3. Call GET Menu - using v1/menus (Khumbu already does)

  4. Call GET Unavailable endpoint --- using (menus/items/unavailable) (Khumbu already does)

    1. Actively listen to Configuration Notifications webhook for changes to availability (notifications API) (Khumbu doesn't do this currently.)

    2. If an item is unavailable in this endpoint, is means it is unavailable in all service modes.

    3. Note that the Configuration Notification will only indicate there’s been a change in availability but will not specify what items are impacted by the change (additional details on the webhooks section).

Operators in the restaurant manage items availability on a store-level using the POS, Oracle POS only supports that on store-level for both service modes - not distinguishing availability per service mode (pick-up and delivery).

Assumption: In general, menu item availability is not managed differently per service mode on a store-level, meaning availability for pick-up and delivery is generally the same.

For specific items whose availability is different for pickup and delivery within the same store, the following will be the suggestion to the operator:

...

Info

Khumbu will concatenate 3 IDs for items, combos, modifiers: PLU-DefSeq-PriceSeq. 

For items:

  • 1 dimension - service modes.

  • We can distinguish between service modes using any of the 3 IDs.

  • Recommendation: Use priceSeq and constantPLU, keep definitionSequence constant.

For modifiers, 

  • 2 dimensions - service mode and quantities (multipliers).

  • We can distinguish between service modes and multipliers using a combination of the 3 IDs.

  • Recommendation: Use priceSeq and single constantPLU per modifier, keep definitionSequence constant, no PLUs to be defined for modifier multipliers separately.

For combos, 

  • 2 dimensions - service mode and size.

  • We can distinguish between service modes and size using a combination of the 3 IDs.

  • Recommendation: use priceSeq for service mode, and sizeBasedPlu ID ('large', 'medium', 'small') to distinguish size. Same PLU is used for different combo sizes.

Configuration in Sanity

  • Market-level Configuration – Operators only input PLU

  • priceSeq and defSeq are configured elsewhere for the whole market, not inputted by operators.

    1. Regardless of the standardization between brands/markets, the priceSequence or definitionSequence should only be configured once for a given menu item type (item, combo, modifier) in a given brand/market. E.g. priceSequence & defSequence always same for all items (no difference between individual item documents).

    2. Example configuration matrix - for each brand/market:

...

Menu Product Type

...

priceSequence

...

definitionSequence

...

Item

...

Delivery → 2

In-restaurant → 1

...

Delivery → 1

In-restaurant → 1

...

Combo

...

Modifier

...

Reward

Info

To see configurations in practice:/wiki/spaces/~554304973/pages/5254775064

Detailed Menu Structure guide: Oracle - Menu Structure options 1.pptx

Note

Note that some existing markets use definitionSequence and priceSequence differently. For example, priceSequence used for indicating different sizes for combos. Even though we would be able to support some of these configurations, these markets would be suggested to change their configuration based on the standard guidelines defined by RBI / Oracle with a one-off configuration migration which Oracle can support via an Excel upload.

...

...

2 dimensions - service mode and quantities (multipliers).

...

We can distinguish between service modes and multipliers using a combination of the 3 IDs.

  • Most markets support 2 levels of modifiers for mobile ordering: ADD and NO.

    • Remove (“No”). No multiples available.

    • “Add”, which will have several quantities (multiples for each quantity – e.g. 1x ketchup, 2x ketchup).

...

Only 2 levels of modifiers will be supported for mobile ordering: ADD and NO. Additional modifier multipliers (more granular levels of customization such as ‘heavy ketchup’, ‘light ketchup’) won’t be supported for mobile ordering in the initial scope.

...

priceSequences will be used for determining the ADD and NO modifiers, as well as pricing across service modes:

  • priceSeq 2 = In Restaurant Add

    priceSeq 3 = In Restaurant No

    priceSeq 6 = Delivery Add

    priceSeq 7 = Delivery No

...

A single Sanity document will be used for each modifier, with a single PLU used for both in-restaurant and delivery service modes.

For Add and No, a toggle will be added to the Sanity document under item → Options.

Option 1 (tentative):

...

A single modifier document called Ketchup in Sanity.

...

If a given item needs to have Ketchup, it is added under Item --> Options as it is currently done (example here).

...

Upon clicking on Ketchup under Options, today we see additional Options (Item --> Options --> Options) for ketchup (its modifier multipliers):

...

Scenario

...

UI Configuration

...

If a guest can remove a modifier from an item and can also add more.

...

Both the Add and No UI selections will be selected/turned on.

...

If a guest cannot remove a modifier from an item but can still add more of it.

...

The Add UI selection will be selected/turned on.

...

If a guest can remove a modifier from an item but cannot add more.

...

The No UI selection will be selected/turned on.

...

If a guest cannot do anything about a modifier from an item.

...

No need to add that modifier under Item --> Options

Info
  • Later on, additional toggles (or any other UI mechanism) can be added to allow for multiples of Add (light, heavy, 2x, 3x.).

  • Note: The new toggles will
    • Operators should only input PLU

    • priceSeq and defSeq should be configured elsewhere for the whole market, not inputted by operators.

      1. The priceSequence or definitionSequence should only be configured once for a given menu item type (item, combo, modifier) in a given brand/market. E.g. priceSequence & defSequence always same for all items (no difference between individual item documents).

      2. Consider the following matrix as an example for a brand/market-level configuration:

    Menu Product Type

    priceSequence

    definitionSequence

    Item

    Delivery → 2

    In-restaurant → 1

    1 for both Delivery and In-restaurant.

    Combo

    Delivery → 2

    In-restaurant → 1

    1 for both Delivery and In-restaurant.

    Modifier

    priceSeq 2 = In Restaurant Add

    priceSeq 3 = In Restaurant No

    priceSeq 6 = Delivery Add

    priceSeq 7 = Delivery No

    1 for both Delivery and In-restaurant.

    Info

    To see configurations in practice:/wiki/spaces/~554304973/pages/5254775064

    Detailed Menu Structure guide: Oracle - Menu Structure options 1.pptx

    Note

    Note that some existing markets use definitionSequence and priceSequence differently. For example, priceSequence used for indicating different sizes for combos. Even though we would be able to support some of these configurations, these markets would be suggested to change their configuration based on the standard guidelines defined by RBI / Oracle with a one-off configuration migration which Oracle can support via an Excel upload.

    Info
    • We can distinguish between service modes and multipliers using a combination of the 3 IDs.

      • Most markets support 2 levels of modifiers for mobile ordering: ADD and NO.

        • Remove (“No”). No multiples available.

        • “Add”, which will have several quantities (multiples for each quantity – e.g. 1x ketchup, 2x ketchup).

    • Only 2 levels of modifiers will be supported for mobile ordering: ADD and NO. Additional modifier multipliers (more granular levels of customization such as ‘heavy ketchup’, ‘light ketchup’) won’t be supported for mobile ordering in the initial scope.

    • priceSequences will be used for determining the ADD and NO modifiers, as well as pricing across service modes:

      • priceSeq 2 = In Restaurant Add

        priceSeq 3 = In Restaurant No

        priceSeq 6 = Delivery Add

        priceSeq 7 = Delivery No

    • A single Sanity document will be used for each modifier, with a single PLU used for both in-restaurant and delivery service modes.

    • For Add and No, a UI option will be added to Sanity as part of https://www.figma.com/board/nGPWERMGDYTk1O8e2RWa5X/%5BTRX-3023%5D-Improve-the-Modifier-%26-Modifier-Multiplier-Set-up-for-Operators?node-id=0-1&p=f&t=pSVqFabbZADzE63S-0

    Info
    • TBD: The new modifier UI might be specific to Oracle POS in order to not introduce breaking changes for existing markets. For example, BK UK having both NCR that uses Modifier Multiplier, and Oracle that will use the togglesnew UI. For NCR, the PLUs will be sent from the modifier multiplier document as it is done today and new toggle values UI won’t be sent. For Oracle, the modifiers will be managed via toggle values.To understand if a modifier document in Sanity is ‘'Add’' and ‘'No’' to be able to assign the correct priceSequence, the UI selections for these options in Sanity should be exposed to Khumbuused.

    • Having only 1 PLU per modifier in Sanity, and control whether it’s NO, +1, +2, etc. using the quantity attribute. Khumbu would need to do additional mapping to translate the quantity to the applicable priceSequence.

      • Question: Will we be relying on some common interface with Khumbu like add-delivery/no-pickup or will we send actual PLUs like remove bacon 300-1-3 for example. In the second case we would need to maintain a translation between price sequence and modifier variant + service mode?

    • No PLU defined for modifier multiplier.

    • Similarly, for management We won’t make use of modifier multipliers beyond the ADD and NO values for modifiers (light, heavy), other pricing sequences or definitionSequence can be used later(meaning, also no additional PLU for modifier multipliers).

    • Different quantities of modifiers (e.g. 2 bacons) will be managed with the Quantity field.

    • Khumbu will manage the mapping for PLU+definitionSeq+PriceSeq as shown in phase 2 on the slide deck.

      • In cases where a modifier is not available in delivery service mode specifically (while available for pickup), this could be managed via empty vendor config in Sanity for display in whitelabel. (The pricing for the modifier will still be managed via the mapping with Khumbu).

    Open questions to answer in the implementation:

    • Whitelabel changes to consume prices of modifiers since we won't manage it the way we do now - assigning separate PLU per modifier multiplier

    • how are we going to handle the mapping between Sanity toggles and price sequences for modifier multipliers (Add/No + service modes)

    Alternative to using PricingSequence or DefinitionSequence for Multipliers - the Quantity Field: This will be enabled by RBI Tech platform by utilizing the multiconstant PLU solution. Having the multiconstant PLU solution work will require additional engineering effort (e.g. there are gaps in partnersAPI, and potentially Menu Service in general).

    To improve the experience of the operator, a single Sanity document should be used for management of modifiers on Sanity later on. Therefore, removing the modifier multiplier document from Sanity completely.

    image (37)-20241031-101500.pngImage Removedimage (38)-20241031-101503.pngImage Removed
    • Later on, additional toggles (or any other UI mechanism) can be added to allow for multiples of Add (light, heavy, 2x, 3x.). Similarly, for management of modifier multipliers beyond the ADD and NO values for modifiers (light, heavy), other pricing sequences or definitionSequence can be used later.

    Info

    Combo pricing can be configured in 2 different ways. RBI Tech needs to support both scenarios, it is not possible to have one standardized way of managing combo pricing due to different taxation requirements of countries.

    1. Price is at the combo level. Menu items inside the combo are priced at 0, unless they’re premium. Examples are markets like BK DE, BK UK, BK MX.

      1. In general, anything premium (item or modifier) adds up to the total combo price.

    2. Price is at the combo items' level. Combo is priced at 0. The sum of the combo items' prices adds up to the combo PLU. This gives operators the flexibility to build a price allocation different from the ALC prices, which can optimize the VAT allocation.

      1. Premium modifier PLU is added to the applicable item price instead of the combo.

    In both cases the total combo price = combo price + main item price + side 1 price + side 2 price. Therefore, summing up prices of everything always gives to total. Most of the logic here should be handled by Khumbu.

    Additional context under phase 3 in slide deck.

    ...