Help Centre Forum

TOTECS Forums

TOTECS Platform Release 16.00
Author
Thread

Author moderator
12th October 2021

New Features


TOT-4090 - Integrate order checkout/submission with EFM Logistics freight provider

Within either the Trade interface or in a content managed website, after a user has added products to basket, then when they proceed through order checkout, in the checkout process there is now the ability to integrate into FlipGroup's OneFlo freight system to optionally calculate freight cost and carrier selection by calling OneFlo's system, as well submitting a confirmed order to OneFlo's freight system's, where consignments can be raised with freight carriers to deliver the ordered products.
OneFlo allows organisations to setup relationships with many freight carriers and allows us to use their webservice to obtain freight prices from all available freight companies to the organisation. Additionally OneFlo can have consignment notes created, which are then attached to the packaged goods when packed, and allow the goods to be tracked. Orders sent across to OneFlo can either be imported as orders that require staff to complete, by confirming freight unit and other details. Alternatively orders can be imported as consignment notes that already have most key information set, including freight carrier and freight unit. An account will need to be created within OneFlo's system first, and API credentials determined, before setting up a TOTECS project to push data across to OneFlo's system.
Within the order checkout process, OneFlo system may optionally be used to allow users to select from freight carriers that OneFlo's system has found, based in address data given and dimensions/weights of products being set. If used this can then optionally allow the order's freight surcharge to be accurately be set, using freight costs given by the carrier.
Within the Administration Centre, under the Stores menu, within the Freight Providers setting interface, a number of additional settings have been created.The "Send Freight Orders To 3rd Party Freight Provider" setting now has an option "OneFlo - Order". If set this allows orders submitted to be pushed across to OneFlo's system, to be completed and then create freight consignments for.A new setting labelled "Get Carrier Selection From Freight Provider" that controls the freight provider that should be called to obtain the list of freights carriers and costs used during the order checkout process, if the "Freight Provider Calculate Order Freight Surcharge" is set to Yes. By default if the "Send Freight Orders To 3rd Party Freight Provider" setting was set to a Smartfreight option then the "Get Carrier Selection From Freight Provider" will be set to Smartfreight as well.A new settings section has been added labelled "Freight Provider - OneFlo" that allows the following settings to be configured and required for requests made to OneFlo's system:

  • OneFlo Account Number: Set the number/ID of the account in OneFlo's system to use to authenticate and push freight orders into OneFlo's system with. This can be obtained after registering an account with OneFlo.
  • OneFlo Web Service API URL: URL of OneFlo's system to call its API. By default this will already be set, but in the future OneFlo may change their API domain in the future. Note only set the domain without the https protocol or any other relative URLs.
  • OneFlo Web Service API Key: Key/password of OneFlo's system to authenticate against its API. This will need to be obtained by talking to OneFlo or obtaining it from it's system.
A new settings section has been added labelled "Freight Units". Many of the freight units settings have been moved from the "Freight Provider - SmartFreight" section to this section. These freight unit settings determine the freight units used to bundle up, cost, and deliver the ordered goods for both Smartfreight and OneFlo's systems. For each freight unit there are now settings to set the unit's width, height, and depth. These are required to be set if OneFlo's system is being used.Within the Order Surcharges administration centre interface, the Action rule labelled "Set freight charge from Smartfreight" has now been changed to "Set freight charge from freight provider carrier selection". This reflects that the cost of the freight surcharge may be determined based on specified freight provider (Smartfreight or OneFlo) based on the "Get Carrier Selection From Freight Provider" setting. The rule behaves the same way where it will set the cost of the freight surcharge for the selected freight, obtained after calling the freight provider system to obtain its cost.
Note that when an order is sent to OneFlo's system it returns no reference ID back, as such no Consignment Number or Freight Provider Reference Code will be set against the order. The default reference set in the order used by OneFlo will be TOTECS order code. This may be the primary way to identify the order within OneFlo's system. OneFlo's system also does not accept orders resent to it that contain the same reference code. If this is required then the original order may need to be removed from OneFlo's system before resending the order again from within the Administration Centre's Orders interface.

Functionality Affected: Order Submission, Order Checkout
Impact: Normal


TOT-4122 - REST API endpoint to trigger sending out an Emedia Email from 3rd party software

Within the TOTECS platform's API (Application Programming Interface) there is now an API endpoint that supports being able to send out an Emedia Email called from external software. This will allow emails to be triggered to send out at scheduled times using software such as the Connector software to do so. This may allow any type of Emedia Email to be sent out on schedule basis (such as emails covering topics such as weekly product deals etc..) without requiring administrator users to login to the Administration Centre to trigger the Emedia being sent.

Functionality Affected: API, Emedia Emails Sendout
Impact: Normal


Improvements


TOT-4117 - Display drop down to allow all shared shopping lists for sales rep users to be shown within a Shopping Lists Listing content managed web page area

On a content managed web page displaying a Shopping Lists Listing area for a user who is a sales rep, there is now the ability to embed a format hook that gives the user drop down options to either see only shopping lists shared to them based on their current assigned customer account, or show all shopping lists shared across all the customer accounts they have access to. This filtering option is only be able to be used when the Sales Rep feature is turned on, the user is a sales rep, the Shopping List Sharing feature is turned on, and the user has facility role permission "View Shared Shopping Lists" set to allow.
Additionally the area is also now able to show shopping lists shared to the sales rep that has been shared to them. For each shopping list shared there's the ability to show additional data of the shopping's lists owning user.
Within the Shopping List Listing content managed webpage area's "Shopping List Listing" format, the following hooks have been added:

  • shoppinglist_show_shared_filter: Either Y or N. If Y then the user is allowed to filter shopping lists shared with them. This may be used to hide or show the shared filter select element in the following hook.
  • shoppinglist_shared_filter_select: Select drop down element that allows the user to filter shared shopping lists, based on the active customer account if the user is a salesrep, or show all shopping lists
Within the "Shopping List Detail" format the following hooks have been added:
  • shoppinglist_owner_login_id: Login ID of the user who shared the shopping list. Only displays if the shopping list is shared from another user.
  • shoppinglist_owner_account_id: Account ID of the user who shared the shopping list. Only displays if the shopping list is shared from another user.
  • shoppinglist_owner_contact: Contact name of the user who shared the shopping list. Only displays if the shopping list is shared from another user.
  • shoppinglist_owner_email: Email of the user who shared the shopping list. Only displays if the shopping list is shared from another user.
  • shoppinglist_relationship: Displays either MINE, SHARED_TO_ME, or SHARED_BY_ME. Indicates if the shopping list is owned by the user (MINE), it was shared to another user (SHARED_BY_ME), or another user has shared the shopping list (SHARED_TO_ME)

Functionality Affected: Shopping Lists Listing content managed web page area
Impact: Normal


TOT-4120 - Allow sales rep users to share shopping list by Account ID or Login ID within the Shopping List Sharing Form content managed web page area

On a content managed web page displaying a Shopping List Sharing Form area for a user who is a sales rep, and has permission to share shopping lists, as well as view account users with the "View Customer Account Users" facility role permission, there is now the ability for the user to find other users to share a list with, based on matching the Account ID or Login ID of the user. A drop down element can optionally be displayed where the sales rep user can choose the method to find and match a user on, either Email, Account ID, or Login ID. The existing "shoppinglist_share_email_field" can then be used instead to type an Account ID or Login ID to find users on.
Within the Shopping List Sharing Form content managed web page area's "Shopping List User Sharing Form" format the following hooks have been added:

  • shoppinglist_salesrep_allow_share: Either Y or N. If Y then the user is a salesrep who is allowed to the find and share the shopping list to existing users. This can be used to control if the shoppinglist_share_search_type_select hook to display or not.
  • shoppinglist_share_search_type_select: Select element that controls how salesrep users can search for users to share the shopping list with, based on the user field selected.

Functionality Affected: Shopping List Sharing Form content managed web page area
Impact: Normal


TOT-4121 - Dynamically load and paginate records within the Payments Admnistration Centre interface

Within the Administration Centre, under the Stores menu, within the Payments interface, for the payment records loaded within the table, the table now only loads the number of payment records that are need to display for a full page.
Any subsequent pagination will need to call the server to load the next page of records. This can dramatically speed up the payments loading, especially when over 1000 or 10,000 payment records exist.

Functionality Affected: Payments Administration Centre interface
Impact: Normal


TOT-4099 - Additional customer account content managed webpage global format hooks that update when user switches customer account

On a content managed website, for any area, the following global format hooks can now be embedded within any content managed web page area, Each of these global format hooks will change their values when a user switches between customer accounts, showing details of the current customer account in use. Within the Administration Centre, under the Websites menu, within the Websites interface, when modifying a web page area format, in the Edit Web Page Area Format dialog the following hooks are now listed within the Global Format Hooks tab:

  • SES_account_authority_number: Authority number (such as ABN, NZBN, ACN) set for the customer account that the user is assigned to.
  • SES_account_contact: Name of the contact set for the customer account that the user is assigned to.
  • SES_account_email: Email address set for the customer account that the user is assigned to.
  • SES_account_address_primary_contact: Name of the contact associated to the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_org_name: Name of the organisation associated to the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_address1: First address field of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_address2: Second address field of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_address3: Third address field of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_address4: Fourth address field of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_country: Country of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_postcode: Postcode of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_phone: Phone number of the primary address of the customer account in use in the user's session.
  • SES_account_address_primary_fax: Fax number of the primary address of the customer account in use in the user's session.

Functionality Affected: content managed webpage
Impact: Normal


TOT-4103 - Setting to always reload page for a new search within the Product Search Form (Using Search Profiles) content managed web page area

On a content managed web page display a Product Search Form (Using Search Profiles) area, f a search is triggered in the area and the area's "Search link to target page" setting matches the same page that the area displays on, then there is now a setting that allows the search to trigger a full web page reload if set to yes. This can always ensure that the elements on the web page are fully reloaded, as well as the URL updates with the new search.
After logging into the Administration Centre, under the Websites interface, upon editing a web page that contains a Product Search Form (Using Search Profiles) area, in the area's Settings window a setting labelled "Search Reloads Web Page". If the setting is set to Yes, then when the area is loaded on the webpage, any time the area is triggered to perform a new search it will cause the web page URL to change and fully reload.

Functionality Affected: Product Search Form (Using Search Profiles) content managed web page area
Impact: Normal


TOT-4105 - Format hooks to paginate to first and last results pages within content managed web page areas containing next and previous paginators

On a content managed web page displaying Product Search Results Listing, Category Listing, Model Search Listing, Basket Listing and Customer Account Contract Detail areas, there is now the ability to allow the user to paginate to the last page of records found, as well as to the first page of records. This allows users to navigate back to the top or bottom of the listings more easily and quickly.The following format hooks have been added to each area:
Product Search Results Listing area
Product Search Header and Product Search Listing Footer formats

  • view_first_search_page_anchor: Anchor tag to click through to the first page of the search product list.
  • view_last_search_page_anchor: Anchor tag to click through to the last page of the search product list.
Category Listing area
Category Listing Header and Category Listing Footer formats
  • view_first_category_page_anchor: Anchor tag to click through to the first page of the category list.
  • view_last_category_page_anchor: Anchor tag to click through to the last page of the category list.
Model Search Listing area
Model Search Listing Header and Model Search Listing Footer formats
  • view_first_search_page_anchor: Anchor tag to click through to the first page of the search model list.
  • view_last_search_page_anchor: Anchor tag to click through to the last page of the search model list.
Basket Listing area
Basket Header and Basket Products Footer formats
  • basket_products_first_page_class: CSS class that specifies if the first page of basket product records can be loaded.
  • basket_products_last_page_class: CSS class that specifies if the last page of basket product records can be loaded.
  • basket_products_first_page_anchor: Anchor tag to click through to the first page of the basket products list.
  • basket_products_last_page_anchor: Anchor tag to click through to the last page of the basket products list.
Customer Account Contract Detail area
Customer Account Contract Detail format
  • product_records_first_page_class: CSS class that specifies if the first page of product records can be loaded.
  • product_records_last_page_class: CSS class that specifies if the last page of product records can be loaded.
  • product_records_first_page_onclick: javascript function that allows the first page of product records to load
  • product_records_last_page_onclick: javascript function that allows the last page of product records to load

Functionality Affected: Product Search Results Listing, Category Listing, Model Search Listing, Basket Listing, Customer Account Contract Detail content managed web page areas
Impact: Normal


TOT-4106 - Include product stock level with data passed to AFTER_PRODUCT_ADD_TO_BASKET content managed webpage event function

On a content managed web page that has implement custom javascript that is listening to when a product was successfully added to basket, using AFTER_PRODUCT_ADD_TO_BASKET web page event function. the basket product data returned in the 2nd argument of the basket's listener function now includes the product's new stock level, factoring in the overall available stock quantity of the product minus the quantity of the product that was added to basket. The data can be found in the attribute named "productStockLevel", and will contain the values, high, low or none.

Functionality Affected: Add To Basket content managed web page javascript
Impact: Normal


TOT-4110 - Allow users to assign other customer account users to review an order within the Order Checkout/Submission content managed web page area

On a content managed web page that contains a Order Checkout/Submission area, there is now the ability to allow users to assign another user to review the order once it has been submitted, if the user is assigned to a facility role with the "View and Submit Quoted Orders" permission set to allow.
After the user has logged in and proceed to a web page containing a Order Checkout/Submission area, in the Order Details a checkbox can be embedded that specifies that a user should be assigned to review the order. Additionally a drop down form element can display a list of users assigned to the same customer account that can be selected. Once the checkbox and user has been selected, then on the Order Review stage the reviewing user's login ID can be displayed. Upon the order being submitted the reviewing user will receive an email advising of the order that is pending their approval, using the existing review email and process.
Within the area's Order Details Form format the following hooks have been added:

  • order_user_review_allow: Either Y or N. If Y then a user is allowed to be assigned to review the order.
  • order_user_review_select: Select form element containing a list of users that can be assigned to review the order.
  • order_user_review_checkbox: Checkbox form element that indicates if a user should be assigned to review the order.
Within the area's Order Review format the following hooks have been added:
  • _PO_ReviewerLoginID: Login ID of the user who is assigned to review the order.
  • _PO_ReviewerUserAssigned: Either Y or N. Set to Y when a user is assigned to review the order. This could be used to hide or show the reviewer login ID depending on if a user is assigned or not.

Functionality Affected: Order Checkout/Submission content managed web page area
Impact: Normal


TOT-4111 - Search models on attribute value within the make/model autocomplete search box in Model Search Form content managed web page area

On a content managed web page displaying a Model Search Form area, when a user is using the make/model autocomplete search box to find matching models, there is now the ability to optionally match on models that contain an attribute value that matches the search text given. If a match is found then then the ranking of the model is is higher than all other ranking factors. This allows specific search terms to be set against models that be used to show more relevant models to the user.
Additionally the area now contains a setting that allows the first record in the make/model autocomplete list to not be selected by default. When set the enter key press instead trigger a make/model search to occur instead, taking the user to the content managed web page used to display a list of matching models.
The area's model search autocomplete now ranks higher models that match attribute keyword values given. Previously it was possible that model could be ranked higher if the words matched in the text were highly correlated to the model's name.
Within the Administration Centre, under the Websites interface, for a content managed web page, within the Web Page Editor page, for Model Search Form area, in the Area Settings window the additional settings have been added:

  • Model Auto Complete Ranking Attribute - Allows user to select a model attribute that will be used by the make/model autocomplete to optionally match models on and rank up higher compared to other types of matched.
  • Model Auto Complete Select First Record - If No then the first make/model record in the make/model autocomplete results is not selected.
Within the area's Model Search Form format, 2 additional hooks have been added that allow a make/model autocomplete search to be triggered with an onclick event (such as via a button or link).
  • make_model_autocomplete_input_id: ID of the make/model autocomplete textbox input used to type search text in. Place within the text input where the user enters the search text.
  • make_model_autocomplete_search_onclick: Javascript function to trigger a make/model search to occur with the value set in the autocomplete input. This hook depends on an text input existing with the make_model_autocomplete_input_id hook set within its ID attribute,

Functionality Affected: Model Search Form content managed web page area
Impact: Normal


TOT-4116 - Allow an empty shopping list to be created from the Shopping List Products Import Form content managed web page area

On a content managed web page that displays a Shopping List Products Import Form area, in the area it has ability to create a new empty shopping list when configured. This allows a shopping list to be created without requiring products to be in the user's basket initially.
Within the area's "Shopping List Product Import Form" format an additional hook has been added labelled "shoppinglist_create_empty_onclick" that contains a javascript function that calls for a new shopping list to be created without any products in it. After the shopping list has been created any Shopping List Listing areas will reload to show the new shopping list.

Functionality Affected: Shopping List Products Import Form content manged web page area
Impact: Normal


Bug Fixes


TOT-3966 - Add To Basket and User Login taking very long time to load when user has a product deal applied to basket and the product is applicable to more than one "basket total" based deals

If a user logged into a content managed website or the Trade interface and the 'Re-price Basket Products On Login, Basket Switching And Order Checkout' setting is set to 'Yes', if the user had a product in their basket, and that product was assigned to one or more active deals that had the offer type set to one of the following:

  • Buy Over X Price Of Basket Total (Ex. Product Redeemed), Get Product For Price Y
  • Buy Over X Quantity Of Total Basket Products (Ex. Product Redeemed), Get Product For Price Y
  • Buy Over X Quantity Of Total Basket Products, Get Product For Price Y
  • Buy Over X Price Of Basket Total (Ex. Product Redeemed), Get Product For Y Percent Off Price
  • Buy Over X Price Of Basket Total (Ex. Product Redeemed), Get Product At Price Level Y
  • Buy Over X Quantity Of Total Basket Products (Ex. Product Redeemed), Get Product For Y Percent Off Price
  • Buy Over X Quantity Of Total Basket Products, Get Product For Y Percent Off Price
  • Buy Over X Price Of Total Basket Products (Before Discounts), Get Product For Y Percent Off Price
  • Buy Over X Price Of Total Basket Products (Before Discounts), Get Product For Price Y
Then each time the products in the basket had the deals checked (such as on login, checkout, add to basket, remove from basket, clear basket) it would cause additional basket deal records to be created in the back end database. This in turn would cause checks on those basket deal records when the next time the deals were recalculated, which in turn would lead to even more basket deal records being created. This compounding nature eventually would make it impossible for the user to login, checkout or clear their basket.
A fix has been applied to correctly ensure that if a deal is being applied or reapplied to product in the basket, that it correctly removes the previous basket deal records. Additionally more checks have been added to avoid the duplicate basket product records being iterated through.
Note that for existing baskets, if such basket deal records exist with the offer types listed above, then in may take more time for the login's, checkout and clearing the basket to occur for the first time, since the duplicate basket deal records will be deleted. This could take up to 20 seconds to delete.
Note this change may also clear deals from user's baskets that were no longer valid, but had been incorrectly left in the user's basket.

Functionality Affected: User Login process, Product Add To Basket process, Order Checkout process
Impact: Major


TOT-4098 - basket_record_user_owns_basket format hook incorrectly displaying N for baskets that a user owns within a Basket Selection content managed web page area

From a content managed web page containing a Basket Selection area, for each basket listed, in the Basket Selection Record format the record hook $basket_record_user_owns_basket$ would incorrectly output 'N' for a basket a user has created and is not actively using. Now correctly outputs 'Y' for a basket a user created and it belongs to.
An additional format hook has been added to the Basket Selection Record format labelled "basket_record_user_can_delete_basket" that outputs either 'Y' if the user has permission to delete the basket or 'N' if the user doesn't have permission to delete the basket. Note that this format hook differs to the basket_record_user_owns_basket hook since it does not indicate whether the user can deleted the basket or not, based on if they are actively using the basket.

Functionality Affected: Basket Selection content managed webpage area
Impact: Normal


TOT-4109 - Payment records failing to load after clicking on Unsent Payments alert link from the Administration Centre home page

After a user logged into the Administration Centre, if they saw an Alert message to view unsent payments, orders, or freight orders, the link to the corresponding administration centre interface had it set to the insecure domain. Because of this the Payments or Orders interface was unable to correctly load.
Now the link to the corresponding administration centre interface is now set to use the secure domain. This ensures that the Payments and Orders interface correctly load.

Functionality Affected: Home Administration Centre interface
Impact: Minor