Example Rendering of Menu

The Menu has a large variety of optional parameters that can affect how a user can order. This page will showcase a simple Menu and an provide a UX example of how PowerEPOS would expect it to be rendered by a provider.

The Example Menu Model

This particular menu has three "main" items to order with a variety of sides and options.

{
  "outletID": "3f49efe7-ea42-4f21-8718-7e6ce9a33512",
  "providerID": 9999,
  "providerName": "Example Provider",
  "menuID": "menu1",
  "languageCode": "en",
  "countryCode": "au",
  "currencyCode": "AUD",
  "title": "Test Menu",
  
  "menuItems": [{
    "menuItemID": "11111111-1111-1111-1111-111111111111",
    "productID": "1",
    "name": "Burger",
    "description": "This is one tasty burger",
    "price": 10.00,
    "quantityConstraint": {},
    "childAttributeGroupIDs": ["aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"],
  },{
    "menuItemID": "22222222-2222-2222-2222-222222222222",
    "productID": "2",
    "name": "Pizza",
    "description": "Cheese pizza with a choice of base",
    "price": 16.50,
    "childAttributeGroupIDs": ["bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"],
  },{
    "menuItemID": "33333333-3333-3333-3333-333333333333",
    "productID": "3",
    "name": "Kebab",
    "description": "Kebab with your choice of sauces",
    "price": 12.00,
    "childAttributeGroupIDs": ["aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "cccccccc-cccc-cccc-cccc-cccccccccccc"],
  },{
    "menuItemID": "44444444-4444-4444-4444-444444444444",
    "productID": "4",
    "name": "Chips",
    "quantityConstraint": { "defaultQuantity": 1, "maximumQuantity": 1},
    "price": 4.50,
  },{
    "menuItemID": "55555555-5555-5555-5555-555555555555",
    "productID": "5",
    "name": "Salad",
    "price": 7.50,
    "quantityConstraint": { "maximumQuantity": 1},
  },{
    "menuItemID": "66666666-6666-6666-6666-666666666666",
    "productID": "6",
    "name": "Deep Dish",
    "price": 0.00,
    "quantityConstraint": { "maximumQuantity": 1},
  },{
    "menuItemID": "77777777-7777-7777-7777-777777777777",
    "productID": "7",
    "name": "Gluten Free Base",
    "price": 1.00,
    "quantityConstraint": { "maximumQuantity": 1},
  },{
    "menuItemID": "88888888-8888-8888-8888-888888888888",
    "productID": "8",
    "name": "Cheesy Base",
    "price": 2.50,
  },{
    "menuItemID": "9999aaaa-9999-9999-9999-999999999999",
    "productID": "9a",
    "name": "BBQ Sauce",
    "price": 0.50,
  },{
    "menuItemID": "9999bbbb-9999-9999-9999-999999999999",
    "productID": "9b",
    "name": "Tomato Sauce",
    "price": 0.50,
  },{
    "menuItemID": "9999ccc-9999-9999-9999-999999999999",
    "productID": "9c",
    "name": "Mayo",
    "price": 0.75,
  }],
  
  "childAttributeGroups": [{
    "childAttributeGroupID": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
    "name": "Side Orders",
    "menuItemIDs": ["44444444-4444-4444-4444-444444444444", "55555555-5555-5555-5555-555555555555"],
    "quantityConstraint": { "maximumQuantity": 1},
  },{
    "childAttributeGroupID": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
    "name": "Pizza Bases",
    "menuItemIDs": ["66666666-6666-6666-6666-666666666666", "77777777-7777-7777-7777-777777777777", "88888888-8888-8888-8888-888888888888"],
    "quantityConstraint": { "maximumQuantity": 1, "minimumQuantity": 1},
  },{
    "childAttributeGroupID": "cccccccc-cccc-cccc-cccc-cccccccccccc",
    "name": "Kebab Sauces",
    "menuItemIDs": ["9999aaaa-9999-9999-9999-999999999999", "9999bbbb-9999-9999-9999-999999999999", "9999ccc-9999-9999-9999-999999999999"],
    "quantityConstraint": { "maximumQuantity": 4, "chargeAbove": 2, "refundBelow": 0},
  }],
  
  "menuItemGroups": [{
    "menuItemGroupID": "eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee",
    "name": "Main Items",
    "menuItemIDs": ["11111111-1111-1111-1111-111111111111", "22222222-2222-2222-2222-222222222222", "33333333-3333-3333-3333-333333333333"],
  },{
    "menuItemGroupID": "ffffffff-ffff-ffff-ffff-ffffffffffff",
    "name": "Extras",
    "menuItemIDs": ["44444444-4444-4444-4444-444444444444", "55555555-5555-5555-5555-555555555555"],
  }
  ],
}

Category View

Category View

Here we can see the "landing page" for this menu. It's showing the two categories and has one category already selected.

Order Item

Burger

Burger

This is an example of ordering a simple burger that has optional side orders associated with it.

  • The selection for side orders uses a checkbox list because the consumer can select 0-1 sides
  • The "Chips" menu item has default quantity set to 1 and so it is pre-selected.

Pizza

Pizza

This is similar to the burger example but the quantity constraints have a minimum quantity set to 1.

  • The selection for bases uses a radio list because the consumer MUST select 1
  • There are no default quantities set so the control is initial unselected

Kebab

Kebab

The kebab reuses the "Side Order" attribute from Burger but also defines an open selection for Sauces.

  • The sauce selection requires between 0 and 4 total sauce selections.
  • The first two sauces ordered are included in the price (i.e. they are free). Subsequent sauces incur costs specified by the menu item.