In the business context, both NCR and Olayan rely on data from their respective databases, where each combo is assigned a PromoID. However, the challenge is that these PromoIDs are not unique per combo.
Given that KHU sends unique PLUs along with prices to RBI in menu services, the question arises on how to manage these combos.
For a deeper explanation, refer to https://docs.google.com/document/d/1UynTUrJIuVJjkpK-ckNKoSyMmFie_2CsFTVcqUYqB50/edit
For a deeper explanation, refer to https://docs.google.com/document/d/1UynTUrJIuVJjkpK-ckNKoSyMmFie_2CsFTVcqUYqB50/edit
Outcome
Deeper explanation on each can be found bellow. |
On this example we are setting up prices for Al Farian Store id 800876. The items are:
For the Whopper Meal Large I’m setting up the premium comboslot:
These can be found on whitelabel under Flame Grilled Burgers → Whopper Test. On Khumbu’s side Whopper Meals are supposed to share the |
Create individual Sanity combo documents, for example: Whopper Meal Medium & Whopper Meal Large and set their vendorConfigs as:
Edit their price on partners-api using the sizeBased plu concatenation: PLU + size, for example
{ "channel": "whitelabel", "plus": [ { "availability": true, "plu": "8601-large", "price": 2999 }, { "availability": true, "plu": "8601-medium", "price": 1999 } ], "region": "SA", "serviceMode": "pickup", "storeIds": [ "800876" ] } |
Edit the premium comboslot price on partners-api
{ "channel": "whitelabel", "plus": [ { "availability": true, "plu": "8601-large-10059-80019", "price": 399 } ], "region": "SA", "serviceMode": "pickup", "storeIds": [ "800876" ] } |
For premium comboslots used with composite Plus, we need the following structure:
This happens due to the way composite Plus are calculated in whitelabel. For sizeBasedPlus, the main item plu is appended to the combo plu.
|
Their prices will show up on whitelabel as
When adding to the Whopper Meal Large + 9 onion rings premium side to the cart and making a price request, Khumbu will receive the following payload:
{ "callbackUrl": "https://euc1-staging-bk-partners-api.rbictg.com/api/v1/orders/6c73e23f-0ec4-4c47-9363-1ff45d0be01d/price/callback", "cart": { "menuSelections": [ { "externalReferenceId": "", // note that the combo PLU is not added, explanation bellow "id": "08c3ba63-4ce2-41e4-9dfa-35c67139b0f3", "menuSelections": [ { "externalReferenceId": "10059", // whopper item sandwich "id": "item_1852", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "80019", // onion rings premium comboslot "id": "item_57364", "menuSelections": [], "price": { "amount": 399, "currency": "SAR" }, // premium comboslot price "quantity": 1, "type": "Item" }, { "externalReferenceId": "100501", // coca cola zero can side "id": "c77fa6e3-f2b8-497a-8bb4-1b216ce8302b", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "144001", // marker item "id": "144001", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" } ], "price": { "amount": 2999, "currency": "SAR" }, // combo price "quantity": 1, "type": "Combo" } ] }, "channel": "WHITELABEL_IN_STORE", "fees": [], "id": "6c73e23f-0ec4-4c47-9363-1ff45d0be01d", "instructions": [], "orderDiscounts": [], "serviceMode": "TAKEOUT", "storeId": "800876" } |
Please, note that in this example, the combo PLU 8601 was not sent. Currently only constantPlus are added as the external reference ids, not size based ones. The marker item will still be present as an way to identify combos and we’re able to have different marker items for different combos sizes. Adding the combo PLU can be done, but we need to understand first how that would affect other markets such as BK UK. |
On this example we are setting up prices for Al Farian Store id 800876. The items are:
For the Family Bundle Test I’m setting up the premium comboslot:
These can be found on whitelabel under King Savers → Family Bundle TEST. The goal is to evaluate the possibility of having size based plus with multiple sandwiches(main items) and still be able to set up premium comboslot pricing(e.g: charge extra for certain sides) |
Create a combo or offerCombo on Sanity with no Main Item
Add any amount of comboslot options as required. In this case we’re adding two different burgers, large and small drinks & sides.
Set up the appropriate size based PLUs for this combo
The prices can be edited through partners-api with the following payload
{ "channel": "whitelabel", "plus": [ { "availability": true, "plu": "1234-medium", // the combo plu + size "price": 3999 }, { "availability": true, "plu": "1234-medium-80019", // the combo plu + size + onion ring plu "price": 599 } ], "region": "SA", "serviceMode": "pickup", "storeIds": [ "800876" ] } |
This will reflect on whitelabel as
When adding to cart and pricing, Khumbu will receive the following payload:
{ "callbackUrl": "https://euc1-staging-bk-partners-api.rbictg.com/api/v1/orders/41d0168f-41ab-4832-807a-e29a21a88c51/price/callback", "cart": { "menuSelections": [ { "externalReferenceId": "", "id": "65e5ddaf-0893-4908-bfca-56de2c6ca510", "menuSelections": [ { "externalReferenceId": "80019", // onion rings premium comboslot "id": "item_57364", "menuSelections": [], "price": { "amount": 599, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "100501", // coca cola can large side "id": "c77fa6e3-f2b8-497a-8bb4-1b216ce8302b", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "10059", // whoppper sandwich "id": "item_1852", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "80001", // regular fries small side "id": "16f482db-2f13-4476-88d3-d2eec26057f3", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "80007", // small coca cola can small side "id": "4f99db1e-128a-4e53-b23b-dffc0fedf636", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "20006", // chicken royale second sandwich "id": "item_1853", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "144001", // family bundle marker item "id": "144001", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" } ], "price": { "amount": 3999, "currency": "SAR" }, "quantity": 1, "type": "Combo" } ] }, "channel": "WHITELABEL_IN_STORE", "fees": [], "id": "41d0168f-41ab-4832-807a-e29a21a88c51", "instructions": [], "orderDiscounts": [], "serviceMode": "TAKEOUT", "storeId": "800876" } |
To setup prices for combos with multiple burgers/no main item, the following structure is expected:
In the above example the prices were setup only for the medium variation, but the same would work when setting large, super, small, etc. |
On this example we are setting up prices for Al Farian Store id 800876. The items are:
For the Burger Pick Test I’m setting up the premium comboslot:
Additionally the the Burger Comboslot Test was created and added to the Burger Pick Test. It has the following options:
These can be found on whitelabel under Flame Grilled Burgers → Burger Pick Test. The goal here is to understand the scenario mentioned in the meeting: A combo that might contain whopper with cheese vs whopper without cheese(both of them having different PLUs, so being two different sandwiches from a P&A perspective). |
Setup the Combo and the Plus as done in the previous examples
Create a comboslot and add the burgers as options. The first one is whopper, the second chicken royale.
Set the combo prices on partners-api
{ "channel": "whitelabel", "plus": [ { "availability": true, "plu": "5678-medium", "price": 3999 }, { "availability": true, "plu": "5678-medium-80019", "price": 199 } ], "region": "SA", "serviceMode": "pickup", "storeIds": [ "800876" ] } |
This will reflect on whitelabel as the following
The user will be able to pick and customize his burger after clicking on the comboslot
For this order we are picking the chicken royale option. Once added to the cart and making a price request, Khumbu will receive:
{ "callbackUrl": "https://euc1-staging-bk-partners-api.rbictg.com/api/v1/orders/c9c458ec-a6fd-4e54-b515-0e4f7f796882/price/callback", "cart": { "menuSelections": [ { "externalReferenceId": "", "id": "3c7d4efa-07f9-4478-9036-2d39ad5d7bd5", "menuSelections": [ { "externalReferenceId": "80007", // small coca cola can small side "id": "4f99db1e-128a-4e53-b23b-dffc0fedf636", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "80019", // 9 onion rings premium comboslot "id": "item_57364", "menuSelections": [], "price": { "amount": 199, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "20006", // chicken royale sandwich "id": "item_1853", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" }, { "externalReferenceId": "141139", // marker item plu "id": "141139", "menuSelections": [], "price": { "amount": 0, "currency": "SAR" }, "quantity": 1, "type": "Item" } ], "price": { "amount": 1599, "currency": "SAR" }, "quantity": 1, "type": "Combo" } ] }, "channel": "WHITELABEL_IN_STORE", "fees": [], "id": "c9c458ec-a6fd-4e54-b515-0e4f7f796882", "instructions": [], "orderDiscounts": [], "serviceMode": "TAKEOUT", "storeId": "800876" } |
The price setup here works the same as example two. The main thing to determine the type of concatenation required is the presence or not of a main item. The platform currently supports a single main item, however it’s not required to have a main item inside a combo. |