The new feature allows to set a limit on the number of items in the cart. This can be enabled in Commerce → Configure → Manage Configuration. This condition will be evaluated every time a product is added into the cart. It can also be checked on any instance of a product by calling isPurchasable() method.
It is now possible to calculate a surcharge on installment payment. Also, the new 'transactions' data object was added to cart preview and contains details of the payment, including any applicable surcharge.
It is now also possible to specify a default surcharge which will apply is no
New payment gateway integration option - ANZ eGate (Hosted Solution)
Fixed an issue with uniqueness of order numbers generation.
The Order object now has some new methods: getShippingInfo() - returns an array with details of the selected shipping method, such as shipping company Id, rate Id, rate amount, etc. getParentOrder() - returns parent order object (for split order)
The cart now support tax break-down between products and shipping with two new methods: getItemsTax() - returns tax on items only getShippingTax() - returns tax on shipping only Also, the new 'taxTotal' data object was added to cart preview and contains break-down of tax between products and shipping.
Fixed an issue with shipping date returning 1970-01-01 in some cases instead of null.
It is now possible to cancel orders with 'pending' and 'quote' statuses in the portal by user-owner, using the new cancel_order form
Hooks
The new Hook Event OrderExternalUpdate allows to integrate reverse hooks with third party systems. A reverse hook is an endpoint at Core dna which allows to receive notifications from external systems and trigger events in Core dna.
It is now possible to arrange the order of the hooks in the list
Fixed an issue with pagination in the hooks list
Fixed an issue with hook status not being displayed correctly in the hook log
Products
The Product class now supports the following new methods to improve access to product's variants: getVariants() - returns associative array of Variants of the product, indexed by variant code getVariantsArray() - returns indexed array of Variants of the product getVariantFromCode(string) and getVariantByCode(string) - returns Variant of the product with the specified Variant code getVariantFromId(int) and getVariantById(int) - returns Variant of the product with the specified Variant Id getVariantFromAttributes(array) - returns Variant of the product matching the specified array of Option List Id - OptionId pairs getVariantFromOptions(array) - returns Variant of the product matching the specified array of Option List Name - Option Name pairs
The Variant object is now JSON serializable.
It is now possible to retrieve product's screenshots by key word using the new getScreenshotsByKeyword() method.
Facets array in Faceted Search results now contains a 'slug' for product category
Fixed a bug with date picker for product's Availability Date
Fixed an issue with updating images in the DXP
Forms
Fixed a bug with custom export path not being saved in the FTP Form Export configuration
Users
The pubuser class now supports a new method getOrdersStats() which returns statistics on user's orders as a three-dimensional array. The first dimension is 'net' (after discounts and shipping) or 'gross' (before shipping and discounts). The second dimension is category of orders: 'successful', 'unsuccessful', 'cancelled', 'fulfilled' and 'total'. The third dimension is an associative array where the key is order Id and the value is order amount.
The pubuser class is now JSON serializable
Site Configuration
A new feature to export Urls for various modules (Pages, Blogs, Products, etc.)