Omni Generic Menu Data Components
The following topics describe the point of sale SQL data that can be made into an Omni Generic Menu through ETL. These are the JSON components that integrators must use to construct their menu. Integrators can retrieve the components needed for a specific menu using the Get Menu operation.
Integrators who wish to avoid more complicated upcharge pricing and taxing logic can take advantage of the OMNI Order Injection API's Price Order operation, which will return the correctly priced upcharges, taxes, subtotal, and/or total for the provided items.
See the Menu Construction topic for best-practices instructions for building a menu from these components.
See the Important Notes topic for additional information on constructing menus from these components.
plus
The plus table is a collection of all products, discounts, etc. in a site's database.
Field | Type | Description |
|---|---|---|
| integer | A unique product identifier. |
| integer | The uid of the product category. Can be mapped to the "category_uid" column of the "plu_categories" table. |
| string | The long name of the product. |
| integer | The uid for the plu type. Can be mapped to the "plu_type_uid" column of the "plu_types" table. |
| boolean | A boolean value that represents if the item is available to be sold at the restaurant. |
| boolean | A boolean value that represents if the item is considered "non food." |
| integer | An integer price representation of the lowest denomination of the local currency. The last two numbers of the price will always be a decimal. Example: If the store's local currency is USD, then 499 represents 499 pennies or $4.99 and 1299 represents 1299 pennies or $12.99. In countries that do not have fractional currencies like pennies, the last two numbers will still be treated as a decimal and can be ignored if it is not applicable (e.g. 60000 COP would be 600 COP). |
| integer | A bitmask value that corresponds to the applicable product taxes defined in the tax_headers table. After unmasking the bit value, reverse the resulting array and add +1 to the index value of any array elements that equal 1 in order to retrieve the corresponding tax_header_uid from the tax_headers table. Only 3 tax_headers will ever exist, so only the first 3 elements of the resulting unmasked array will be used. For example, a "flag_1" value of 3 would result in [1,1,0,0,0,0,0,0] after the unmasked array is reversed. Adding +1 to the array index value for elements with a value of 1 would mean that tax_header_uid 1 and 2 apply to this product. |
| integer | Is used to check if an item is discountable. It is also used to check if a vat tax plu from the "vat_plus" table is meant to be calculated on Net after a discount. It is also used in conjunction with "plus.ll" (lower limit) to check if enough items are on the ticket to allow discounting. |
| integer | Is used to decide whether an order which would normally be able to be rounded would otherwise not be rounded. |
| integer | An integer value representing the lower limit of items that must be present in an order for this item to be discountable. |
bom
The bom (build of materials) table is a collection of all value meals, discounts, and the default items included in the bom, as well as any applicable substitution rules and lists for bom items.
Field | Type | Description |
|---|---|---|
| integer | The |
| integer | The default item that is included in the value meal or discount. This plunum directly maps to the plunum from the "plus" table. |
| integer | The quantity of this item that is included in the bom. |
| integer | Determines if the bom item is able to be substituted. 0 means the item can be substituted with anything, 1 means the item is not allowed to be substituted at all. This maps to the "substitution_rule_uid" column in the "substitution_rules" table. |
| string | If a value meal has explicit prices for specific item substitution items, this value will directly map to the "list_num" column in the "list_headers" table. |
list_headers
A reference table for the items that are substitutable in a bom.
Field | Type | Description |
|---|---|---|
| integer | The unique ID for this list. This directly maps to the "list_header_uid" column in the "list_details" table. There can be multiple |
| string | The list number associated with this list. This directly maps to the "substitution_list_num" column in the "bom" table. |
| string | The name of the list. |
list_details
A collection of items and explicit substitution price overrides associated with a list_header record.
Field | Type | Description |
|---|---|---|
| integer | The |
| string | The item ID. This typically maps to the "plunum" column in the "plus" table. |
| string | This is typically the price of an item when a default bom item is substituted for this item. |
| string | The minimum quantity of this item that must be present in the bom in order for this substitution value (price) to apply. |
| string | The maximum quantity of this item that can be present in the bom in order for this substitution value (price) to apply. |
plu_categories
A collection of plu categories.
Field | Type | Description |
|---|---|---|
| integer | The unique ID of the category. Directly maps to the "category_uid" column in the "plus" table. |
| string | The name of the category. |
plu_types
A list of plu types.
Field | Type | Description |
|---|---|---|
| integer | The |
| string | The name of the plu type. |
smart_products
A list of products (PLUs) that are automatically transformed into a new product when the specified qualifier PLU is applied. Example, a Burger will automatically be transformed into a Bacon Burger when the "add bacon" qualifier is added to a regular Burger. Since franchisees can price a "Bacon Burger" differently than a "Burger" with an "add bacon" qualifier, it is necessary to transform the product into a different PLU. Not all qualifiers result in a smart_product transformation. Qualifiers like "add bacon" and "add cheese" typically do. NOTE: It is possible for a newly transformed product to undergo yet another smart_products transformation if a specific qualifier is added. An example of this would be a "Bacon Burger" that has the "add cheese" qualifier added and then the smart_product transformation would result in a "Bacon Burger w/ Cheese".
Field | Type | Description |
|---|---|---|
| integer | The corresponding |
| integer | The corresponding qualifier |
| integer | The new product PLU that is to be used after the specified |
smart_value_meals
This table is similar to the "smart_products" table except that the transformation rules here apply specifically to value meals. Value meals are identified by a type_uid of 18 in the "plus" table.
Field | Type | Description |
|---|---|---|
| integer | The corresponding "plunum" from the "plus" table that represents the base value meal before it is transformed (e.g. "Burger Meal"). |
| integer | The corresponding |
| integer | The corresponding qualifier |
| integer | The new bom item PLU that is to be used after the specified |
| integer | The new value meal PLU that is to be used after the |
product_sizes
A list of applicable product sizes.
Field | Type | Description |
|---|---|---|
| integer | The |
| string | The name of the size (e.g. "small", "medium", "large", etc.) |
plu_sizes
A list of sizing rules for either a product or a value meal. This is a programmatic way of determining the applicable sizes for any product.
Field | Type | Description |
|---|---|---|
| integer | The corresponding product |
| integer | The corresponding |
| integer | The product |
| integer | Similar to the |
payments
A list of payment PLUs with a type_uid of 5. This will contain the same columns as the "plus" table.
pickup_locations
A list of pickup locations.
Field | Type | Description |
|---|---|---|
| integer | The unique ID of the location. |
| string | The text ID of the location. This is the value that must be used when defining the |
| string | The display name of the location. |
substitution_rules
A list of substitution rules.
Field | Type | Description |
|---|---|---|
| integer | The unique ID of the substitution rule. |
| string | The name of the substitution rule. |
Important Notes
In order for a value meal or "bom" to be successfully injected, the injected "bom" must contain all of the expected
item_plunumquantities after substitutions are applied. i.e. if abom_plunumfor a "Medium Burger Meal" contains a burger, a medium soda and a medium fry, the injected value meal must contain 3 child items. If a substituted item like "medium onion rings" instead of "medium fries" is allowed then that will still count towards the number of child items in the value meal. Defer to the "bom" table for a list of applicable items and substitution rules.When calculating upcharges for item substitutions, defer to the explicit substitution pricing rules in
list_detailfirst. If no explicit rule exists for a substitution item, then calculate the difference between the defaultitem_plunumprice from the "plus" table with the substitution item's PLU price. The result is the upcharge that is to be applied for the substitution item. A "default" bom item refers to the defaultitem_plunumsassociated with abom_plunumin the "bom" table."Qualifier" PLUs like "add lettuce" or "add ranch sauce" must be applied as a modifier to a specific item. Unless there is a corresponding
list_detailupcharge price for the qualifier in question, the price of a qualifier PLU is always the "price" of the qualifierplunumfrom the "plus" table. E.g. If the customer opts to "add ranch" to the actual "Burger" in a "Burger Meal" and the PLU for "add ranch" costs 15 cents, then 15 cents will be added to the order total.A "qualifier" is identified by a
type_uidof 2 in the "plus" table.