PartnerSalesTransaction Model

Defines the model for submitting simplified transactions (orders) to the Power EPOS cloud services

Required
salesTransactionID : string (GUID)

The unique identifier for the overall Transaction
This identifier for the overall transaction ensures a 3rd party can safely resubmit the same transaction (which may be necessary if a transient connection dropout occurs during upload)
and have it replace the existing transaction rather than it result in a duplicate. It is recommended that the 3rd party keep track of this ID so if it ever needs to fetch, update or validate this transaction
against the Power EPOS system, it will be able to do so.

Required
dateTimeClosed : string (ISO 8601 DateTime)

This is the Date and Time that the transaction was finalised (fully paid and closed) in the outlet's local time.

Required MaxLength(36)
invoiceNumber : string

This is a user friendly alpha numeric invoice number for the transaction. This field is required, but is not required to be unique, although it is recommended to be unique per terminal for a reasonable period of time.
In PowerEPOS, this is an 8 digit string consisting of a simple Terminal Display Identifier followed by an incrementing numeric sequence. eg For Terminal P1 it would be P1000001, P1000002, P1000003 etc
In PowerEPOS, this value is generated and allocated when the transaction is finalised and closed. This means that there should be a complete sequence of numbers in the sales history with no gaps, as once
a transaction has been finalised, it can no longer be changed/aborted directly. This number is used for taxation purposes in countries that require sequential invoice numbers for all historical transactions.

Required
transactionPayments : PartnerSalesTransactionPayment []

A list of Payments for this transaction.
The sum of the AmountPurchase field from all payments must be equal to the sum of the Amount + ExTax1-4 fields for all PartnerSalesTransactionItem and PartnerSalesTransactionAdjustment records.

Required
transactionItems : PartnerSalesTransactionItem []

A list of PLU Sale Items for this transaction.

Nullable
dateTimeOpened : string (ISO 8601 DateTime)

(Optional) This is the Date and Time that the transaction was started in the outlet's local time.
Default: The same value as the DateTimeClosed field

Nullable
covers : number (int)

(Optional) This represents the number of Covers/Guests associated with the order. For example a table with 4 people sitting at it should have a Covers count of 4.
Some order types may use a default of 1 covers, or possibly even 0. This often depends on how the customer using the software would like to report average spend and guest counts for different types of orders.
Default: 0

Nullable MaxLength(32)
userName : string

(Optional) The name of the User who created the order.
3rd Party integrations should specify a user name, or use the integration name as a fallback.
Default: External Interface
Example: John

Nullable MaxLength(32)
serviceModeName : string

(Optional) The name of the Service Mode the transaction was created in.
3rd Party integrations can make up their own names, or they can base them on the existing Service Modes if available.
Default: External Order
Example: Table or TAB or Takeaway or Order

Nullable MaxLength(8)
serviceModeEntityID : string

(Optional) This is the reference ID relating to the Service Mode name assigned to this transaction. If you had a service mode called "Table", a ServiceModeEntityID might be "10", indicating table number 10.
Default: "" (ie blank string)
Example: 10

Nullable MaxLength(32)
tax1Name : string

(Optional) The name of the tax method used for Tax 1 calculations.
Default: NULL
Omit (ie NULL) if this tax level is not used
Example: VAT or GST
Leave blank if this tax level is not used.
Important: You must set the Tax1Name and Tax1Rate if you are using the IncTax1 or ExTax1 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable decimal(18, 3)
tax1Rate : number (decimal)

(Optional) The tax percentage(%) used to calculate tax for Tax 1
Default: NULL
Omit (ie NULL) if this tax level is not used
Set to 0 if you are indicating a Tax Free tax level
Important: You must set the Tax1Name and Tax1Rate if you are using the IncTax1 or ExTax1 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable MaxLength(32)
tax2Name : string

(Optional) The name of the tax method used for Tax 2 calculations.
Default: NULL
Omit (ie NULL) if this tax level is not used
Leave blank if this tax level is not used.
Important: You must set the Tax2Name and Tax2Rate if you are using the IncTax2 or ExTax2 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable decimal(18, 3)
tax2Rate : number (decimal)

(Optional) The tax percentage(%) used to calculate tax for Tax 2
Default: NULL
Omit (ie NULL) if this tax level is not used
Set to 0 if you are indicating a Tax Free tax level
Important: You must set the Tax2Name and Tax2Rate if you are using the IncTax2 or ExTax2 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable MaxLength(32)
tax3Name : string

(Optional) The name of the tax method used for Tax 3 calculations.
Default: NULL
Omit (ie NULL) if this tax level is not used
Leave blank if this tax level is not used.
Important: You must set the Tax3Name and Tax3Rate if you are using the IncTax3 or ExTax3 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable decimal(18, 3)
tax3Rate : number (decimal)

(Optional) The tax percentage(%) used to calculate tax for Tax 3
Default: NULL
Omit (ie NULL) if this tax level is not used
Set to 0 if you are indicating a Tax Free tax level
Important: You must set the Tax3Name and Tax3Rate if you are using the IncTax3 or ExTax3 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable MaxLength(32)
tax4Name : string

(Optional) The name of the tax method used for Tax 4 calculations.
Default: NULL
Omit (ie NULL) if this tax level is not used
Example: VAT or GST
Leave blank if this tax level is not used.
Important: You must set the Tax4Name and Tax4Rate if you are using the IncTax4 or ExTax4 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable decimal(18, 3)
tax4Rate : number (decimal)

(Optional) The tax percentage(%) used to calculate tax for Tax 4
Default: NULL
Omit (ie NULL) if this tax level is not used
Set to 0 if you are indicating a Tax Free tax level
Important: You must set the Tax4Name and Tax4Rate if you are using the IncTax4 or ExTax4 field in any PartnerSalesTransactionItem or PartnerSalesTransactionAdjustment records.

Nullable MaxLength(64)
eventName : string

(Optional) The name of the event that this transaction is considered part of (if applicable)
Default: "" (ie empty string)
Most 3rd Party integrations will not use this field.
Example: "" (ie blank) or "Xmas Day" or "Jones Wedding" or "Grand Final"

Nullable
transactionTags : PartnerSalesTransactionTag []

A list of Tags for this transaction.

Nullable
transactionAdjustments : PartnerSalesTransactionAdjustment []

A list of Order level Adjustments (discounts / surcharges) for this transaction (ie prorated across ALL items in this transaction).
Use this when you have Adjustments (discounts / surcharges) to apply to the overall transaction, rather than specific sale items.

Example
{
  "salesTransactionID": "3f49efe7-ea42-4f21-8718-7e6ce9a33512",
  "dateTimeClosed": "2012-04-03T09:40:59.736Z",
  "invoiceNumber": "string value",
  "transactionPayments": [],
  "transactionItems": [],
  "dateTimeOpened": "2012-04-03T09:40:59.736Z",
  "covers": 321,
  "userName": "string value",
  "serviceModeName": "string value",
  "serviceModeEntityID": "string value",
  "tax1Name": "string value",
  "tax1Rate": 1.23,
  "tax2Name": "string value",
  "tax2Rate": 1.23,
  "tax3Name": "string value",
  "tax3Rate": 1.23,
  "tax4Name": "string value",
  "tax4Rate": 1.23,
  "eventName": "string value",
  "transactionTags": [],
  "transactionAdjustments": []
}