Version 126.96.36.199 is the first release after version 188.8.131.52 that has been made generally available. It contains many exciting new features and a number of bug fixes. Before upgrading, please read the Upgrade Compatibility Alerts for each version.
Note that some of the features highlighted below are only available in the Enterprise Extensions. See here for full details of what is included only in the Enterprise Extensions.
- Added PayPal Login as a way of logging in to the storefront application.
- When using Suggested Search, the customer can now select the top level category in order to improve the quality of the search results.
- Added enhanced commerce Google Analytics to the Struts2 storefront application.
- Added includedStores and excludedStores tags to batch job definitions (defined in konakart_jobs.xml) to control the stores that batch jobs execute for in multi-store KonaKart systems.
- Added the ability to log into KKEng using a customer’s username (new attribute) or telephone number. Functionality has also been added to check for the uniqueness of the username or telephone number when customer details are edited and when a customer registers. This functionality is Enterprise only.
- Added username and telephone numbers as possible search constraints when searching for customers using the KKAdmin API call getCustomers().
- Added functionality to the Admin App to send an order invoice as a PDF attachment to a customer.
- Added the ability to set Custom Validation for the Product Rating field in the Admin Console.
- Added custom attributes, refund price and refund points to order returns. Added code to set the refund price when an order is created. Also added code to some promotion modules to reduce the return value based on the promotion discount. Added code to the reward point promotions to set the refund point values.
- Added a mutex to the storefront action class CheckoutConfirmationSubmitAction so that it’s not run concurrently by the same customer.
- It is now configurable when returning an array of products from a KKEng product search to have the productQuantities attribute instantiated.
- Added functionality to the forceRegisterCustomer() API call to allow a registered customer to checkout without logging in, by checking out as a guest. Default behaviour is still to force a registered customer to log in, in order to checkout.
- Added a new KKEng API call getPromotion() that returns a promotion with information regarding which products, categories or manufacturers it is active for.
- If a Velocity email template isn’t found in the requested language, we log an error but return the template in the default language if it exists.
- Added a configuration option when editing a product to ignore the product viewed count since this is typically updated by the storefront application. The same functionality has been added to the Admin App as a check box.
- Added a configuration option when editing a product to ignore the number of products ordered count since this is typically updated by the storefront application. The same functionality has been added to the Admin App as a check box.
- Added configuration variables to configure ERP Integration to decide what XML messages are sent by KonaKart on a store by store basis.
- Added functionality to KKEng and KKAdminEng to sort products by expiry date.
- Upgraded to Tomcat 8.0.42
- Upgraded to commons-fileupload-1.3.2.jar
- Upgraded to commons-validator-1.6.jar
- Upgraded to Log4j2.
- Verified support on MariaDB 10.1 (when using MariaDB it should be given database type “MySQL”).
- Complete example demonstrating how to build a CustomStoreService and a CustomAdminService that uses the KonaKart database layer for access to a custom table.
- Complete example demonstrating how to build a CustomStoreService accessible through JSON APIs and called from a browser.
- Added configurable HTML character escaping to a number of KKEng API calls.
- After editing a product in the admin app and clicking the back button, the paging information of the products panel is now kept.
- Added a filter to the promotions panel of the admin app to search for only active or inactive promotions.
- Additions to AdminProductTile. Added the count for the number of times the product has been viewed and ordered.
- KKEngIf API call createOrderWithOptions() – you can now specify the currency of the created order.
- The initial pause before reading the Incoming Message Queue for the first time can be set in the konakart.mq.ERP.initial.pause.secs property. This can be useful to delay the commencement of the queue reads until other parts of the system (in other webapps) are up and running.
- Added functionality for double opt-in when registering for the newsletter.
- Improved paging performance with MS SQL Server by adding support for the “OFFSET A ROWS FETCH NEXT B ROWS ONLY” syntax.
- Added indexes to customers_basket, orders_products and orders_status_history tables to improve performance.
- Added a new “multiselect” set function for defining configuration parameters and custom attributes on products. This can be used, for example, to allow you to configure 0, 1 or more options and store them in one comma-separated configuration value. An example is provided for selecting days of the week.
- New custom fields added to the order object for greater flexibility when extending KonaKart to implement custom functionality.
- Content Search was not working for ObjectId values on the storefront side.
- When Customers were not shared and running in multistore mode the Role Privileges were not being saved correctly in the Admin Application.
- A null pointer exception was being thrown in the storefront application whenever a default customer was not defined. It was happening whenever a non-logged in customer clicked on the Shopping Cart link to view the cart details.
- Fixed Struts vulnerability CVE-2017-5638.
- Fixed a bug in the Struts2 / JSP storefront application. A review was written for the wrong product if a customer opened the write review panel, then opened the product detail panel for another product in a new browser tab and then returned to the write review panel to submit the review.
- Bug in the example reports where no thousands separator is defined for the default currency.
- The KKEng API calls addToCustomerTag() and addToCustomerTagForGuest() were throwing a duplicate record exception when called in quick succession by the same customer.
- The KKEng API call setCookie() was throwing a duplicate record exception when called in quick succession by the same customer.
- Included “requiresCoupon” in audit information for Promotion changes.
- Fixed a bug in the AdminEng getSubscriptions() API call. The search was not working correctly when adding the productId constraint.
- The reporting of changed messsages between versions has been fixed for the cases where messages contained commas that weren’t escaped. These messages are provided in each release under utils/kkMessages/new-AdminMessages, utils/kkMessages/new-AdminHelpMessages and utils/kkMessages/new-Messages.
- Fixed a bug in the getProductPerSkuWithOptions() call which sometimes failed to retrieve a product if using shared products mode and SKUs were not unique across all product variants.
Backwards Compatibility Alert
- The table “products_attrs_download” is no longer created. KonaKart doesn’t use it but it hasn’t been removed in case it’s being used by customers. This table may be removed in future releases.
- Logging changes with the upgrade to log4j2. The format of the logging files has changed. Use the default file (konakart-logging.xml) provided in the kit as a starting point.
- The logging system property “kk.log4j.WatchTimeSecs” is no longer supported. Instead use the monitorInterval attribute in the log4j2 configuration file.
- Changed column types in currencies table for decimal_point, thousands_point and decimal_places to varchar(1) rather than char(1) for greater portability.
- As a security measure the APIs sendNewPassword1, sendWelcomeEmail1, sendOrderConfirmationEmail1 and sendTemplateEmailToCustomer1 no longer respond with a copy of the subject and body of the email. Instead these attributes are set to null.