Skip to content

Epos Optimisation

To resolve slowness issues when the Epos is utilised for extremely large bookings and a large number of products we have implemented several changes.

Open Orders

To reduce the load on the epos when a customer has open orders that consist of many booking products, we have introduces pagination to the cart, controllable by a number field set on the setup file.

Object Booknow Setup File

Field NameField TypeDefault Value
Maximum Visible Cart ItemsNumber20

This field specifies how many products we should display in the cart before hiding the remaining cart order products behind a ‘Show More…’ button. Upon clicking this button, we display the current quantity in the cart + the number specified in the field each time the button is clicked, until all products are displayed. Additionally, if there are hidden products that have been displayed, the button changes to two buttons; ‘Show Less | Show More’. This allows the user to hide all additionally displayed products by clicking the Show Less button.


We have also made an optional change to how open orders are loaded from the ‘Open Orders’ list. A new field has been added to the setup file that prevents the list from automatically pulling in the Booking Product information from open orders, and instead loads all of the booking data when the order is clicked from within the list. This may appear as though the Epos is operating slower than usual, so we have disabled this by default, but for any customer that handles bookings with extremely large numbers of booking products, this will improve the overall performance of the epos, so it should be enabled for those specific customers.

Object Booknow Setup File

Field NameField TypeDefault Value
Request Order Data on LoadBooleanfalse

Products

We have implemented a similar limitation within the epos family card, a new field has been added to the setup file to control the default maximum number of products that should be displayed in a group.

Object Booknow Setup File

Field NameField TypeDefault Value
Maximum Visible ProductsNumber52

If a customer has more than the specified number, we hide the remaining products behind a ‘Show More…’ button, which behaves similarly when expanded, displaying both ‘Show Less | Show More’ buttons.

Additional Notes

After reports of the waiver search modal being unresponsive in the Epos we investigated and found that the backend function call was firing on each keypress, and was not respecting the 500ms callback delay between keypresses before firing the search. This meant that on certain hardware users were experiencing extreme lag when a large list of waivers was returned and subsequently updated several times up to the number of characters entered.

The default values for the new number fields are not automatically applied to existing orgs that are upgraded, so we have implemented hard coded defaults within the epos that can be overriden by updating the field values in an org that wishes to have a higher number of visible cart items / products.

Waivers

Multiple Responses

To combat the issue of firing the backend search function the delayAction function has been replaced with the setTimeout function. This resolves the issue of the update_delay const not being correctly applied to the keypress timeout , and therefor ensures we wait until an updated delay of 500ms until the backend search function is fired. This should improve the experience for all customers and not just the target customer from this case.

Limiting Draw Calls

To limit the amount of resources that are used when we receive the backend function response, we have added a LIMIT clause to the search waivers query of 50. This ensures we will be drawing no more than 50 waiver cards at a time.

If the issue persists, we have added a new boolean parameter to the epos_configuration_data found on the Register object to completely disable the auto-search functionality and replace it with a Search button on the end of the input field. Alternatively with this feild set, the user can press the Enter key to fire the backend search.

To ensure this information is reflected to the user, when this feature is enabled we have updated the search prompt displayed below the input field.

To enable this feature the following text needs to be added to the Bnow__Epos_Configuration_Data__c field on the target register:

"disable_autosearch_waivers": true

Example full field data:

{"disable_autosearch_waivers": true, "epos_family_group_configuration":[{"group_colour":"background-color: #7BC79D;","group_id":0,"group_name":"Food","group_order":0,"group_visible":true},{"group_colour":"background-color: #A07DC5;","group_id":1,"group_name":"Drinks","group_order":1,"group_visible":true},{"group_colour":"background-color: #7BA4C7;","group_id":2,"group_name":"Tickets","group_order":2,"group_visible":true},{"group_colour":"background-color: #C77BA5;","group_id":3,"group_name":"Merchandise","group_order":3,"group_visible":true},{"group_colour":"background-color: #7B7FC7;","group_id":6,"group_name":"ÃPPLËÖ","group_order":6,"group_visible":true},{"group_colour":"background-color: #F1A274;","group_id":4,"group_name":"Other","group_order":4,"group_visible":true},{"group_colour":"background-color: #AAC77B;","group_id":5,"group_name":"Testing","group_order":5,"group_visible":true},{"group_colour":"background-color: #D27D82;","group_id":7,"group_name":"Previous Issue","group_order":7,"group_visible":true},{"group_colour":"background-color: #F1BF74;","group_id":8,"group_name":"Drink","group_order":8,"group_visible":true},{"group_colour":"background-color: #47C37F;","group_id":9,"group_name":"Core Functionality","group_order":9,"group_visible":true},{"group_colour":"background-color: #C95494;","group_id":10,"group_name":"epos 2.0","group_order":10,"group_visible":true},{"group_colour":"background-color: #5157C2;","group_id":11,"group_name":"Extra Group","group_order":11,"group_visible":true},{"group_colour":"background-color: #CA474E;","group_id":12,"group_name":"New Group","group_order":12,"group_visible":true},{"group_colour":"background-color: #F0874A;","group_id":13,"group_name":"Terminal Test Cases","group_order":13,"group_visible":true}],"epos_product_config":{"favourite_product_ids":["01tJ7000000lDnpIAE","01tPt000005ygcTIAQ"],"disabled_product_ids":[]}}