RemoteOrderProduct Model

Represents a single top level product ordered from a remote provider such as Uber Eats, Glovo etc

Overview

ProductID / ProductModifierID

For more information about sourcing values for productId and productModifierId please see the MenuSync documentation on Modifiers.

Tax

For jurisdictions with inclusive taxes (taxes that are already included in the price of an item like UK/EU VAT or Australian GST) there is no requirement to populate tax fields as the POS will be able to calculate the tax internally. Providers would only need to send the tax amounts if they were planning on either withholding tax/displaying tax receipts.

For jurisdictions with exclusive tax (sometimes called addon taxes - i.e. taxes that are in addition to the list price) the tax fields are mandatory.

Adjustments

Adjustments (discounts/surcharges) can be added to a parent RemoteOrder in two different ways, either applying to the entire order or to individual products within that order. The primary difference between the two methods will be how the onsite sales reporting will account for the adjustment effects.

Order level adjustments are set at RemoteOrder.orderAdjustments. Adjustments here will apply their adjustment amounts across all products in the order prorata. When sending order adjustments leave all RemoteOrderProduct price/amount unchanged. Only adjust the RemoteOrder.totalAmount (and RemoteOrderPayment.amountPaid)

Product level adjustments are set at RemoteOrderProduct.productAdjustment and will affect the RemoteOrderProduct.totalAmount but leave RemoteOrderProduct.price alone. The changed RemoteOrderProduct.totalAmount should also be reflected in the balance at the parent RemoteOrder.totalAmount

If taxes are being sent with the adjustments - leave the tax amounts unadjusted. The POS will calculate the adjustment effects (if any) on tax.

Constant
System.Int32 MaxAllergens = 16

The maximum number of allergens allowed in ExcludedRemoteOrderAllergenTypes

Any additional entries will be ignored

Required
remoteOrderProductID : string (GUID)

The primary key for this remote order product generated by ROS.

A third party provider should omit this property entirely OR leave this as Guid.Empty. ROS will overwrite it and return the new value at order submission

Required
quantity : number (int)

Quantity of this product being ordered

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

price per unit (without attributes) charged to consumer

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

Total amount of this product (without attributes) (qty * price + adjustments). Inclusive taxes will be included in this value, exclusive taxes will NOT

Nullable MaxLength(64)
productID : string

unique ID received from provider for this product. Could be PLU, could be an actual ID of the PLU record

can also be null which will indicate to POS to create a customised product for this item

Nullable MaxLength(64)
productModifierID : string

unique ID received from provider for the sales modifier assigned to this product. May be a valid SalesModifierID guid reference or a SaleModifier Prefix (8 digits max). Null = no modifier

can also be null

Nullable MaxLength(50) Truncates
name : string

fallback product name (as ordered by consumer)

Nullable MaxLength(128) Truncates
specialInstructions : string

Any consumer supplied special instructions for this particular product

Nullable MaxLength(128) Truncates
allergenFreeFormText : string

Any additional allergen information not captured by ExcludedRemoteOrderAllergenTypes

Nullable
excludedRemoteOrderAllergenTypes : RemoteOrderAllergenType []

The set of RemoteOrderAllergenType to exclude in the preparation of this item. This is limited to RemoteOrderProduct.MaxAllergens unique entries

Nullable
taxCollected : RemoteOrderTaxCollectedAmount []

The optional tax totals for this product being ordered. Not required if the provider is NOT taking payments.
Missing entries for a RemoteOrderTaxID will indicate that no tax was collected for that particular RemoteOrderTax.

The TaxID's must match the RemoteOrderTax sent with the RemoteOrder Menu.

Nullable
productAdjustment : RemoteOrderAdjustment

Can be null

An adjustment applying specifically to this single product

Nullable
attributes : RemoteOrderProductAttribute []

Any additional child attributes to apply to this product

Example
{
  "remoteOrderProductID": "3f49efe7-ea42-4f21-8718-7e6ce9a33512",
  "quantity": 321,
  "price": 1.23,
  "totalAmount": 1.23,
  "productID": "string value",
  "productModifierID": "string value",
  "name": "string value",
  "specialInstructions": "string value",
  "allergenFreeFormText": "string value",
  "excludedRemoteOrderAllergenTypes": [1],
  "taxCollected": [],
  "productAdjustment": {},
  "attributes": []
}