Overriding prices and currencies

The Seat Plan and the Seat List widget provide the capability to override the Pricing, Offers and Currencies displayed to the customer. When this functionality is employed, a number of variations to the user interface will be applied, including:

  • The third-party provided price (and currency) is used when calculating the band groupings on the seat plan view
  • The third-party provided price (and currency) is displayed in the Tool Tip on the seat plan view
  • The third-party provided price (and currency) is displayed on the "add to basket" panel
  • The third-party provided price (and currency) is displayed on the grouping row on the seat list view

Offer prices and non-GBP currencies

If a percentage discount is provided by the thirdparty, and the salePrice currency is not “GBP”, then the Face Value should not be displayed in the offer price line.

Examples:

  • If the OverridePrice returns: salePrice= 55.00 and currency = “GBP” and percentage = 27 and offer = true, then we display £55.00 (Was £75.00, save 27%) or £55.00 Was £75.00 (-27%)
  • If the OverridePrice returns: salePrice= 55.00 and currency = “USD” and percentage = 27 and offer = true, then we display $55.00 (save 27%) or $55.00 (-27%)

Only the following ISO 4217 currency codes are mapped to symbols (with the remainder defaulting to the currency code):

USD ->$
CAD ->$
AUD ->$
NZD-> $
EUR -> €
JPY -> ¥
CNY ->¥
GBP -> £

Implementation

In order to override you'll first need to fetch the net pricing, you can fetch this from the area's endpoint. Then to provide third-party Pricing, Offers and Currencies, you must implement up to two Global functions:

  • onGetOverridePriceGroups should be used to provide overrides for a groups of seats (Examples: Row B Seats 1-5, Row J Seats 12-16.). See the Inventory Service overview for more information.
  • onGetOverridePriceSeats should be used to provide overrides for seats. See the Inventory Service overview for more information.

The override method must supply data for all groups and seats to be overridden. For any values not supplied, the values provided by the Inventory API will be used. Note that groupIdentifier and seatIdentifier attributes are used to match the correct group or seat to be overridden. faceValue is optional.

Example code

<!doctype html>
<html lang="en">
  <head>
    <title>Price override example</title>
  </head>
  <body>
    <div
      data-app="venue-app"
      data-view-name="seat-plan"
      data-affiliate-id="{your-affiliate-id}"
      data-product-id="{product-id}"
      data-product-type="{show|attraction}"
      data-venue-id="{venue-id}"
      data-performance-type="{A|M|E}"
      data-performance-date="{date of performance e.g. 2020-01-10}"
      data-performance-time="{time of performance e.g. 19:30}"
      data-quantity="{number of tickets e.g. 2}"
      data-api-path="{url where the booking will be made e.g. http://your-website-url}"
    ></div>

    <script type="text/javascript" src="https://venue-service.tixuk.io/v4/js/venue-app.js"></script>
    
    <script>
      window.encoreSeatWidget.onGetOverridePriceSeats([
        {
          seatIdentifier: "ROYAL_CIRCLE-B16",
          pricing: {
            includesBookingFee: true,
            percentageDiscount: 0,
            salePrice: [{
              value: 1111,
              currency: "GBP"
            }],
            faceValue: [{
              value: 1111,
              currency: "GBP"
            }]
          }
        },
        {
          seatIdentifier: "ROYAL_CIRCLE-B17",
          pricing: {
            includesBookingFee: true,
            percentageDiscount: 10,
            salePrice: [{
              value: 2222,
              currency: "GBP"
            }],
            faceValue: [{
              value: 2444,
              currency: "GBP"
            }]
          }
        },
        {
          seatIdentifier: "BALCONY_(LIMITED_LEG_ROOM)-C18",
          pricing: {
            includesBookingFee: false,
            percentageDiscount: 10,
            salePrice: [{
              value: 9877,
              currency: "GBP"
            }],
            faceValue: [{
              currency: "GBP",
              value: 10865
            }]
           }
        }
      ]);

      window.encoreSeatWidget.onGetOverridePriceGroups([{
        groupIdentifier: "RoyalCircle~B16;17",
        pricing: { 
          includesBookingFee: true, 
          percentageDiscount: 0,
          salePrice: [{ 
            currency: "GBP", 
            value: 7777
          }], 
          faceValue: [{
            currency: "GBP",
            value: 7777
          }]
        } 
      }]);
    </script>
  </body>
</html>