Sprint 51

december 13, 2024

This sprint, we’re excited to deliver full support for Item Charges. These are cost lines automatically added to orders based on predefined business rules in the ERP system. Item Charges are now also visible in the shop, ensuring accurate order calculations.

Additionally, we have finalized work on customer-specific minimum order values. You can now specify the basket total value required for individual customers to proceed with placing an order.

Finally, we resolved several bugs that impacted performance and usability. For details, check out the full list of release notes!

Item charges are surcharges automatically added to orders based on specified business rules defined in the ERP system. Examples of such surcharges include disposal fees, which are collected by the supplier and routed to a clearing party. Another example is recycling fees, such as those applied to electronic equipment. Some item charges, like disposal fees, are exempt from VAT.

Shoxl shops can display item charges by querying the ERP system to determine, based on the basket contents, whether item charges apply. The ERP system then returns the applicable charges. However, not all ERP systems support such queries through their API—Exact Online is one example. This system does not allow for queries like: "Hey, take a look at this basket. Are there any costs associated with it that I should show in the shop?"

In such cases, the shop needs to calculate the applicable item charges itself.

This functionality has now been implemented for Exact Online. We collect all specified item charges, apply them to the products they are linked to, and display them in the shop.

Exact Online Item Charges

A new cost line, "ItemCharge," has been introduced in the webshop. This addition enables item charges fees to be included as part of the order total, ensuring clarity for both customers and order processors.
A new cost line, "ItemCharge," has been added to the OrderLine node in the Order XML files. This addition improves transparency and allows deposits to be correctly processed as part of order data.
The ERP Cache importer now supports the processing of ItemCharge XML files. This enhancement allows additional charge data to be imported seamlessly, improving compatibility with new XML formats.
A new export action type, "ItemCharge," has been added. When enabled, it executes fully once per day. The export now tracks all articles to identify changes in surcharges, including detecting modified surcharges. This design ensures flexibility, supporting both deposit fees and other types of surcharges.
It is now possible to specify a minimum order amount at the individual customer level. Previously, we supported minimum order amounts for all customers, as well as for customer groups sharing the same price list. This functionality has now been extended to individual customers.

Management of customer-specific minimum order amounts can be handled in the ERP system or in Vendisto. For instance, in Exact Online, you can create a customer classification to define the minimum order amounts.

In the screenshot below, a minimum order value of € 2000 for this customer results in a red warning box and a deactivated "Next Step" button as long as the Basket Value (excluding VAT, excluding surcharges) is lower than this threshold.

Exact Online Customer-Specific Mimimum Order Amounts

The cost lines are no longer considered when verifying if the minimum order value has been reached, ensuring accurate checks.
A new property, CustomerMinimumOrderValue, has been added to the Account API. This improvement allows for better integration and management of minimum order values directly through the API.
The "VendistoPimEnabled" setting now includes article titles under their group node in the XML when set to false. This eliminates the need for manual updates to article group titles after changes in Exact Online.
The ScanApp release and deployment pipeline packages have been updated. These updates streamline the deployment process, ensuring faster and more reliable releases.
If Google Tag Manager was enabled in the shop, users experienced login failures. This issue has been resolved, ensuring seamless access for all users.
Users were incorrectly redirected to a minified CSS file after logging out and attempting to log in again. This issue has been resolved, ensuring proper redirection to the main page.
The language toggle in the shop now correctly reflects the selected language, avoids duplicating selections, and properly translates header content.
An issue in the webshop caused article variant properties to be incorrectly sorted on the article detail page. This issue has been resolved, ensuring that article variants now appear in the correct order, improving clarity and user experience.
The Article XML Bulk Import now appends an index number to duplicate headers. This change prevents errors caused by duplicate GTIN properties, improving the reliability of the import process for customers.
Order XMLs processed by the Exact Online Batch Interface are now protected against unauthorized changes. This enhancement improves security and minimizes the risk of errors during the processing of order data.
The Exact Online Batch Interface sync feature has been optimized to only synchronize relevant entity types. This change aligns the synchronization process with the --actiontype flag, improving efficiency and performance.
In the checkout process, unregistered customers clicking the "Change Data" link on the "Select Payment" page were incorrectly redirected to the login page. This issue has been resolved, ensuring a smoother checkout experience for customers.
An issue was fixed where discrepancies between gross and net price order units prevented products from being added to the basket. This fix ensures that products can now be added correctly regardless of price configuration.
Due to a bug, overrides added to the default delivery scheme could not be displayed in the webshop. This issue has been resolved, ensuring proper display of custom delivery schemes.
When transferring article data between ERP or PIM and Vendisto, the Article XML bulk importer now correctly handles article states. Previously, if the state attribute was missing, Deleted or Suspended articles were incorrectly set to Active. This issue has been fixed: for existing articles, the state remains unchanged when the attribute is absent, and for new articles, the state defaults to Active.
The ProductGroup API has been updated to export the unique names of various properties. This fix ensures that shop data exported in article XML format can be correctly imported into decentralized Vendisto installations. When configured, this API now serves as a reliable data feed for dependent shops, improving synchronization and data management.
Spelling errors in the Vendisto news overview have been corrected. This update improves the clarity and professionalism of displayed news content.
The non-functional "Remember Password" checkbox has been removed from the system. This change eliminates unnecessary UI elements, streamlining the user interface for a cleaner experience.

Sprint 50

november 22, 2024

We’ve increased our release frequency from once a month to every 3 weeks. This means new features will reach you faster, and case overviews will be shorter and clearer, making updates more manageable and insightful.

Highlights of the current Sprint include support the introduction of a schedule for opening times of pick-up locations; support for synchronizing multiple PIM-installations; and we started work on the option to specify customer-specific minimum order values.

The delivery schedule module now supports defining separate schedules for pickup orders. Previously, only a single schedule was available for both pickup and delivery. Clients can now create distinct schedules, set specific deadlines, and define overrides for each option. If no pickup schedule is specified, the delivery schedule will be applied by default
The shop now dynamically loads different schedules when a visitor switches between delivery and pickup, ensuring accurate scheduling for each option.
After manipulation of PIM data (product data) in Vendisto, the data is now automatically synchronized with the Shoxl shop's performance database. For customers managing a central set of PIM data, this data can be configured to distribute seamlessly across multiple shops during the Shoxl shop deployment process.
A synchronization mechanism has been developed to distribute central shop PIM data as a product feed to other shops sharing the same assortment. This process involves importing Article XML data using the Article XML Bulk importer. Additionally, bugs that occurred after changes in article grouping have been fixed, ensuring smooth data synchronization.
The optional field 'MinimumOrderQuantity' has been implemented for customers in Vendisto. It can be imported through XML and viewed in Vendisto when the 'customerminimumordervalue' license is linked.
The Exact Online export of CustomerMinimumOrderValue has been implemented, writing the value directly to VendistoCustomerXml.
The webservice previously mapped costlines incorrectly to the order XML in the ERP Batch Interfaces, leading to data inconsistencies. This issue has been resolved by ensuring accurate costline mapping during order processing.
When using the multi-classification option to assign articles to multiple categories, authorization checks previously failed. The system only validated the main category, causing other categories to be marked as unauthorized. This issue has now been resolved to ensure proper authorization across all assigned categories.
The "select all" option previously failed to select articles when filters were applied to an article table. This issue has been resolved, and the functionality now operates correctly with active filters.

The name of the delivery location is determined based on field availability:

  • If the Company field is filled, the Company name will be used.
  • If any of the Firstname, Middlename, or Lastname fields are available, the location name will be a concatenation of these fields (e.g., Firstname Middlename Lastname).
  • If none of these fields are populated, a GUID will be assigned as the location name to ensure uniqueness.
A new appsetting (configurable through Octopus) has been introduced as an array of strings. When a user's payment term code matches one of the defined codes, the user gains the ability to BuyOnCredit. The customer export XML will then classify the customer as a Buy On Credit entity. The setting was initially named DisableBuyOnCreditEnableCodes but has been revised to BuyOnCreditCodes
Downloads of certain files, such as PDFs or images, previously forced manual downloads instead of opening in a browser tab. This has been resolved by implementing a new download handler. Additionally, filenames are now included in the download URLs to improve indexing by search engines.
The Automatic Shop Importer monitors configured directories, such as FTP folders, for new import files and sends them to the appropriate importers. It also reports the results to a configured set of recipients, including the shop owner. To reduce email clutter, notifications are now limited to failed imports only, preventing successful imports from polluting the mail system.
The voucher import process has been reworked to enhance user experience by improving the Excel structure and providing clearer import feedback in Vendisto.
A synchronization offset (e.g., "30d" for 30 days) has been implemented for order history. This prevents syncing every order to the exact cache, optimizing resource utilization.
The obsolete flag --disableSyncedArticlesCompare has been removed. This flag previously caused certain changes to be excluded during a full article export.
Automatic database migrations in the Exact Batch Interface have been removed to prevent potential data loss during activities like debugging or parallel deployments.
Improved error logging in the Exact Batch Interface by displaying the full stack trace and applying clearer log formatting for better readability and troubleshooting.
Resolved an issue where the OutstandingItem ERP cache export would incorrectly remove existing items when the entry count exceeded 50.

october 2024

release 2024.10

This releases features the option to show products in multiple categories within the same classification. Categories and positions within categories can be managed in Vendisto through the user interface, or using Excel imports and exports.

On the integration side of things, we have focused on our interfaces with Exact Online and Microsoft Dynamics Finance & Operations.

Vendisto can now classify a product (articlegroup) in multiple categories, enhancing product findability by allowing multiple paths to access it within the shop.



The topmost category is designated as the "main" category. Users can adjust the category order by drag-and-drop in the Vendisto product detail screen or through the import/export functionality. Additionally, a new dialog allows users to set the default position of products within categories, visible in the shop when the default category sort order is selected.
The (bulk) Excel export has been extended in order to support multiple classifications and multiple categories per classification.
Traditionally the export supported a number of Level_[n] columns to define the different classification levels of the classified articlegroup.
The Level columns were postfixed with a _[n] where n defines the depth of the classification level.
E.g. Level_1, Level_2, and Level_3.
The export now supports multiple categories per classification.
For databases with one classification, the Level columns are numbered according to the Level_[category position]_[n] scheme:
The position attribute defines the position of the category of the classified articlegroup.
For an articlegroup that is classified in multiple categories, the first category will be used as the default for the shown crumb path.
E.g. Level_1_1, Level_1_2, Level_1_3, Level_2_1, Level_2_2, and Level_1_3.
The export also supports the classification in multiple classifications.
For databases with multiple classifications, and only one classified category per classification per articlegroup, the Level columns are numbered according to the Level_[classification position]_[n].
The importer will interpret the first number after the level as the classification position if classification_[classification position] columns are added to the Excel sheet.
E.g. Classification_1, Level_1_1, Level_1_2, Level_1_3, Classification_2, Level_2_1, Level_2_2, and Level_2_3.
The two above solutions can also be combined for databases with multiple classifications per articlegroup and multiple classified categories per classification.
Level_[classification position]_[category position]_[n]
E.g. Classification_1, Level_1_1, Level_1_2,
An issue was resolved where untranslated classification entries were not being included in the classification translations export. Now, both translated and untranslated classifications are accurately reflected in the export.
The Excel import feature now supports multiple categories per classification. Traditionally, the import used Level_[n] columns to define classification levels of the article group, where the Level columns were suffixed with [n] to indicate classification depth (e.g., Level_1, Level_2, Level_3). With the update, the Level columns follow the Level[category position]_[n] scheme for databases with a single classification, where the position attribute indicates the category’s position within the article group. For article groups classified in multiple categories, the first category is set as the default in the breadcrumb path (e.g., Level_1_1, Level_1_2, Level_1_3, Level_2_1, Level_2_2).
We are implementing a new version of the article importer (the article bulk importer) that has an improved performance when importing articles into Vendisto.
For some of the implementations, this importer is already in production but not for all shops since the importer is still lacking some of the functionality.
With this update, the article bulk XML import now supports the ArticleGroupDefaultTitle import setting.
The ArticleGroupDefaultTitle can be set to Undefined (this is the default value), ArticleNumber, and ArticleTitle. If set to ArticleNumber, this setting specifies that for new articles the ArticleNumber will be used as the title of the ArticleGroup when creating an articlegroup for the article if no Title element is present on the ArticleGroup XML. The same applies for ArticleTitle.
The Article Bulk import now supports the EnableArticleGroupSplitting import setting. If EnableArticleGroupSplitting is set to Y (default value N), the article import requires that all of the articlegroup's articles are present in the article group node in the XML import. Articles not present in the node will be split from the articlegroup after updating the article. Setting this to N enables updating a single article with XML from the ERP without splitting it from the articlegroup.
After the multicategory implementation of the classic article XML import, the import incorrectly attempted to classify XML articlegroups that had no classification node. This is now corrected.
The shop now uses a server-based version 3 of the Google reCAPTCHA. This helps protect Shoxl shops from automated abuse and malicious activities. It prevents bots from submitting forms, reduces spam, protetcts account sign-ups, and enhances security.

Shoxl shops now support Google reCAPTCHA v3



Learn more (from our Google friends)
A new setting, EnableFastCsvUpload, has been added to improve CSV upload performance by disabling net price calculations in the shop. This enhancement speeds up the upload process, especially beneficial for configurations with slower connectors.
Introduced a processing state for the "Add Selection to Basket" button during the CSV upload process. This provides clear visual feedback to indicate that the action is in progress.
Price list-based authorizations now support price list names that contain spaces. Previously, using a price list name with spaces caused the Vendisto customer importer to crash; this issue has now been resolved.
New functionality has been added to the Exact batch interface to automatically trim white spaces after country codes when retrieving customer information and addresses. This improvement enhances data accuracy for Intrastat reporting
For guest accounts, the house number addition entered in the invoice address field is now correctly displayed only once in the delivery address when "Same as Invoice Address" is selected.
The Payment Reference generated by payment service providers is now included in the order XML, making it available for both Exact Online and Microsoft F&O Place Order integrations. This reference can optionally appear in the order reference field in Microsoft F&O and is always available in the payment reference field in Exact Online.
Our integrations now support linking multiple administrations to a single shop. This is useful, for example, when a company decides to split its administration for different countries into separate administrations. In Microsoft Dynamics, this would result in different Data Area IDs; in Exact Online, this would involve various Division Codes. For each entity type, it is now possible to specify the source of the data, and orders can be directed to different administrations.
Performance and reliability for Shoxl Fast Sync have been improved, resolving issues that caused time-outs and errors during Vendisto data syncing. Optimizations in database queries and various code enhancements now provide a faster and more reliable syncing process.
An issue was resolved where cumulative quantity discount prices were incorrectly displayed as "from-to" prices on the article group overview page. The prices are now shown accurately according to the discount structure.
Previously, the article group overview and search pages sometimes displayed multiple prices for authenticated visitors. This issue has been resolved, ensuring each item displays the correct price.
Previously, selecting an article in the article selection wizard could lead to an error while retrieving price information, resulting in an unusable order interface. This issue has now been addressed to ensure a smooth and functional ordering experience.
Previously, the order button in the article selection table would not activate if the stock column was not displayed, making it impossible to place an order. This functionality has now been improved to allow orders even when the stock column is not rendered.
Improvements have been made to the article table, where the quantity selector input now applies correctly when adding articles to the basket. Additionally, the spinner is removed from the "Add selection to Basket" button, and feedback is provided when articles are successfully added to the basket.
An issue in the shop prevented some users from moving from the customer data form to the next step in the order process, as the "Next" button remained disabled.
The memory limit for MSSQL databases on dedicated servers has been reduced to 6GB to address memory-related issues.
It is now possible to upload documents of the type CSV, and make them available to visitors of the shop.
The process for transforming an EZ-base Artlink file into an article import XML file has been automated, with configuration set up for direct import. A previous issue where the mapping tool crashed when handling files without an index number in the filename has been resolved, and a new version of the tool has been released.
Previously, when trying to create a new news category on Telerex-Staging without any existing categories, the creation process would fail. This issue was specific to cases with no other news categories and has now been resolved, allowing category creation in an empty news category list
Fixed a bug where spaces in a news category title would incorrectly split the title into two separate categories in the news overview.
Order confirmation emails include a section for the chosen payment method. The content of this section now depends on the selected method. For example, if an online payment method is chosen, a payment link will be included. If a customer opts for "buy on account" and does not select a payment method, this section will be omitted.
In certain cases, large orders could be placed in the shop, but the confirmation email would not be sent due to a limitation on the number of key-value pairs allowed in a JSON message. To address this, an option to increase the JSON limit has been added to the shop, ensuring confirmation emails are sent for large orders.
For quick data entry, Shoxl allows users to navigate between input fields using the tab key. Previously, this tabbing function did not account for user-defined sorting options within the list, causing the tabbing order to break when the list was sorted in different ways. This issue has now been fixed.
The shop provides a quick link method for accessing article detail pages (/article/articlenumber). Previously, this quick link method failed in cases where a language classification (e.g., "nl") was prefixed to the URL. This issue has now been resolved.
An issue that prevented the Quotes Overview page from opening due to an incorrect pop-up reference in the code has been resolved, ensuring the page loads as expected.
The Shoxl REST Connector PlaceOrder now includes nodes for CompanyName, CompanyVatNumber, and CompanyCocNumber, enabling better handling of company-specific information in orders.
The intermediate webservice layer between the shop and ERP system can now be configured to communicate in multiple ways: either through a realtime interface (using REST or SOAP API) or via an ERP Cache database. Following a software component upgrade, issues with the SOAP API mapping that affected realtime data retrieval were resolved, ensuring full compatibility across configurations.
The Shoxl Rest SmartLynx Connector now includes support for DatabaseName and DatabaseAlias settings. These values are added to the request body for all requests, allowing for more detailed data handling and customization in the connector.
An issue on the Shop's User Management page caused an error when no users were invited. The page now loads correctly, even if the invited users list is empty.
Resolved an issue in the shop where orders without tax were incorrectly sent to Vendisto and the ERP connector, with tax details still included in the data.
The voucher API and the associated shop components handling voucher API calls have been improved for better error handling, ensuring a more stable experience. Additionally, voucher API logging has been enhanced to provide better support options in case of issues.

september 2024

release 2024.09

In the September release, a highly requested shop feature is now available: the ability to create custom lists of articles, article groups, and product categories that can be displayed in various areas of the shop.

Furthermore, we have introduced support for Google sitemaps to better handle larger product ranges and made several improvements to the management of vouchers and delivery schedules.

On the ingration side of things, we have focused on our interfaces with Exact Online and Microsoft Dynamics Finance & Operations. Exact Online now supports bundled products, while F&O includes support for managing multiple administrations (or divisions) within a single shop.

Additionally, we are in the final stages of developing an import facility that supports products appearing in multiple categories within a classification. This extensive upgrade will be GA (generally available) in the October release.

 

 

In Shoxl shops, it is possible to use lists of articles, article groups, and product categories. These lists can be populated dynamically (by defining a query that returns items of various types) or statically (by manually listing the items that should appear in the list). Such lists can be used in various positions on the site for multiple purposes.

A good example would be defining a list of articles on offer, a list of new articles added to the assortment, or a list of articles related to the one a visitor is viewing. The following video show a homepage that starts with some fixed content, followed by three lists: a list of product categories, followed by a list of popular products, and ending with a list of product innovations.



Previously, users could populate these lists themselves, but the lists had to be created by Shoxl first. Now, it is possible to create lists directly through the Vendisto interface.
When a new release was rolled out, under specific circumstances, users would encounter a yellow error message stating, "Request does not contain correct security headers." As a result, it would be impossible to log in. This issue has now been resolved
The Google sitemap has been improved in several areas:
  • We now support multi-language nodes and a multi-language sitemap.
  • Additional modules, such as news and wiki, have been added to the sitemap.
  • An issue where duplicate URLs could be added to the sitemap has been fixed.
  • The sitemap will now automatically be split into several separate sitemaps, with a sitemap index, if the maximum size defined by Google is exceeded.
  • The rendering of the sitemap has received a performance boost.
The bulk Excel import was limited to a small number of classification levels using Level_[n] columns, where "n" indicated the depth of classification (e.g., Level_1, Level_2, Level_3). This system didn't support multiple categories per classification or multiple classifications per article group. The import process has been enhanced to support multiple categories per classification and now works with databases containing either a single or multiple classifications.

When both B2C and B2B customers can make purchases in a shop, B2C customers are sometimes allowed to buy in smaller quantities than B2B customers. Thus a customer may add items to their basket while still anonymous (under B2C rules), and then log in as a B2B customer. After logging in, the smaller quantities they added earlier may no longer meet the minimum quantity requirements for B2B customers. In such instances, the quantities in the basket must be adjusted to comply with the B2B purchasing rules.

Now, a notification popup appears to summarize automatic quantity adjustments when certain conditions are met. These adjustments occur under the following circumstances:

  • An anonymous user logs in.
  • The user's account is linked to price agreements.
  • These price agreements cover products in the user's basket.
  • The minimum order quantity is not met and/or the additional quantity is not divisible by the current article quantity.

This feature ensures that quantity requirements are automatically adjusted to meet minimum order thresholds.

The basket feedback dropdown previously required manual closure, which could interrupt the user's shopping experience. Now, the dropdown will automatically close after three seconds by default, streamlining the process for users.
Due to some back-end systems having delays in processing requests, users would occasionally click buttons multiple times, resulting in unnecessary calls to the back-end.

This issue has been addressed by adding a visible "processing" indicator and disabling buttons after the first click on some pages. This prevents users from clicking multiple times while their request is being processed.
The character limit for the CompanyVatNumber field in Vendisto Orders has been extended. This change allows customers with VAT numbers longer than 15 characters to complete their orders without encountering an error.
An issue occurred where French customers were unable to place orders, receiving the error message: "The database does not contain all required data."

This problem was caused by the shipping cost API not properly handling exceptions when selecting a country for which no pricelist-bound shipping cost rule had been defined. This issue has been addressed, ensuring that the system now handles such exceptions correctly, allowing orders to be placed without errors.
The article overview page did not always display prices with VAT correctly. This issue has been resolved, and prices including VAT are displayed accurately.
A bug in the stock check process for shops that only allow ordering of in-stock items made it possible for visitors to add unavailable articles to their basket. This happened because the initial stock check performed on page load was not functioning correctly. The issue has been resolved, ensuring that only available articles can be added to the basket.
Article lists in the shop sometimes failed to load price information correctly, depending on their location within the shop. This issue has now been resolved, ensuring that price information is consistently displayed across all locations.
The Exact Batch Interface previously did not support the synchronization of assembled items. Now, assembled item synchronization has been added to the Exact Batch Interface, utilizing the AssemblyBillOfMaterialHeader and AssemblyBillOfMaterialMaterials entities. This improves the integration and handling of assembled products within the interface.
XML export for assembled items did not include the codes of their component products. The export has been updated to include these codes, improving the accuracy and completeness of the exported data.
The stock level of an assembled product only reflected its own stock, which could be misleading when availability of its component parts varied. A new setting, ErpCachePreferLowestPartProductStock, ensures the stock level of an assembled product reflects the lowest stock of its components for a more accurate view of availability.
An issue with incorrect gross price filtering affected the Exact Batch Interface, causing inaccurate gross price exports. The problem has been fixed by prioritizing the default unit.
Inactive customers and relations of a different type than regular customers were being retrieved from Exact Online, leading to inaccurate data. To address this, stricter account synchronization has been implemented in the Exact Batch Interface. A new setting, AlwaysCreateNewAccountForPasserBy, enforces the creation of a new account for passersby, even if the company name is already known. This ensures proper distinction between customer types and better data integrity.
In the F&O Batch Interface, if an article is excluded from the full export/import but still exists in Vendisto, it will now automatically be assigned a 'Suspended' status. This change ensures that articles no longer included in the export are properly flagged for further action.
A new feature has been introduced in the F&O Batch Interface, allowing administrators to specify which warehouses the stock should be synchronized from. This is enabled through the new WarehouseCodes setting, which allows targeted stock synchronization from specific warehouses, providing more control over stock management.
A new "Cross-Company" setting has been introduced in the Finance and Operation (F&O) ERP Cache. This feature allows administrators to query multiple administrations (dataAreaId) at once, providing greater flexibility and efficiency when working with data across different companies.
A bug caused the import of newly added or updated Voucher/Customer links to fail in Vendisto. These links are used to associate specific vouchers with individual customers, allowing for personalized discounts, special offers, or targeted promotions. The issue has been resolved, ensuring that all newly added or updated links are correctly imported and processed.
An error in the automatic voucher check allowed users with no available vouchers to use an automatic voucher when placing an order. This issue has now been fixed, ensuring that only eligible users linked to a voucher can apply it during checkout. Additionally, several technical improvements and refactoring have been made, enhancing the system’s maintainability and readability.

The Voucher Customer Excel import phas been extended with several important validations to improve data accuracy:

  • Resolved Import Issues: Fixed broken functionality in the Excel import.
  • Redemption Limit Validation: Ensured that voucher redemption limits are validated as non-negative numbers.
  • Duplicate Entry Detection: Added validation to identify and prevent duplicate customer-voucher links.
  • Non-Existent Voucher Validation: Added checks for invalid or non-existent voucher codes.
  • Customer Validation: Ensured that non-existent customers (based on debtor number) are identified during import.
Several bugs in the handling of events within the delivery schedule module in Vendisto have been fixed. These bugs were affecting the functionality used to link customers to a schedule and to add or edit schedule overrides. The fixes ensure that delivery schedules and exceptions now work as intended, improving the overall functionality and reliability of the module.
When a customer was unlinked from a delivery schedule, it triggered an exception that affected all customers associated with the delivery schedule system. This bug has been fixed, ensuring that unlinking a customer from a delivery schedule only impacts the selected customer and does not affect the system or other customers.
Archived wiki items might reappear when the position of the wiki category was changed. This issue has been resolved, ensuring that archived wiki items remain hidden and do not reappear when the order is changed on the wiki category page. Archived items are properly ignored, maintaining a clean and organized wiki structure.
The wiki category positions are no longer handled as one large sequence across all languages. Instead, each language has its own ordering system.

For example, if there are three category items in two languages, both languages will have their own positions (1, 2, 3), ensuring better organization and management across different languages.

august 2024

release 2024.08

The August release focused on enhancing integration capabilities and resolving minor issues. Highlights include:

  • Instant Stock Updates: Automatically reflect new stock positions and perform stock checks in the ERP system when an order is placed.
  • Product Bundle Stock Calculation: Calculate stock availability for product bundles based on the stock levels of individual components.
  • Authorization Enhancements: Support for authorizations linked to customers based on their assigned price lists.

For a complete overview, take a look at the full release notes!

 

New functionality has been added to both the Exact Batch Interface and F&O Batch Interface, allowing for the immediate export of updated stock for ordered items after a successful order placement. This feature can be enabled through a setting. This feature replaces the update of stock positions at fixed intervals.
Exact Online has the option to define product bundles consisting of individual articles that each have their own stock. The composite article can never be delivered in a quantity greater than the component with the lowest stock. This new feature calculates the available stock at the product bundle level.
A new feature has been implemented in Vendisto where a price list code (under a customer) is automatically created if it is not already known. Once the price list is created, it will be linked to the customer.
A new setting, SyncGoodsDeliveryAndDropShipment, has been introduced. This setting syncs the relevant entities to export a track-and-trace code under order lines included in the Order History XML Export. By default, this setting is turned off, as many customers do not require this functionality or cannot provide the necessary Exact Online permissions.
In the Exact Online Batch Interface, a bug has been fixed that previously prevented guest customers from placing pickup orders.
Resolved an issue where deleted 'Article Extra Descriptions' in Exact Online were not being properly removed within the export to the Shop.
Two new layout options have been added: a hidden search box option where the search box will appear after clicking a button in the header of the shop and a "sticky" header option where the header will stick to the top of the browser window when scrolling.
Shoxl has the option to automatically activate vouchers for selected customers. The voucher interface is then not shown, so the customer does not have to enter a code to apply a voucher. This functionality can, for example, be used to automatically give discounts for larger purchases. In this case, a bug has been fixed where the value returned by the voucher API would cause the basket to crash.
Implemented synchronization to Shoxl database of articles present in an ArticleGroup that is classified in multiple classification nodes.
In Vendisto, it is possible to classify a product in multiple classification nodes. As a result, the product will be visible in the shop via different paths when following the various classification nodes. Each product will therefore have a different URL since the classification path is part of the product URL. However, the URL of the underlying articles will be the same for each of these products since only the article number is part of the article (product variant) URL. Because these URLs are the same, they will lead to only one - the main - classification node, which is the first in the list of classified nodes for the product.
The order button status in the article selection table was incorrect on initial load when an article was out of stock.
The article selection wizard would not always load the correct image on load.
The display of the order interface would fail on lists combining article and article group items.
Vendisto has the so-called order grid. After selecting colors from a list of available colors, a grid is built showing all variants available in the respective color, which can be ordered directly. When selecting a filter on the article group overview page and then selecting an article detail page with an order grid, all available articles would be preselected in the order grid instead of just the first article. The article detail page would display tabs for empty property groups; this has been changed so that only buttons for tabs with filled property groups will be displayed.
The order list UI on a page containing an article selection wizard would no longer be loaded and would remain disabled.
The Runtime table now contains NumberOfEntities, BytesIncoming, NumberOfRequests, EntityType, LastSyncDuration, and TotalSyncDuration.
Entity columns in the F&O Batch Interface have been trimmed to reduce database space usage and enhance the efficiency of OData entity retrieval.
The Productgroup API can define an export in JSON format. This export failed when translations of product categories were missing. This has been corrected.
Shoxl has the ability to compile lists of products and place them in various locations in the shop. This can be used, for example, to display promotions. It could happen that, as a result of scripting/timing issues, prices were not displayed and the text "loading" remained visible. This has been corrected. Due to timing issues, in some cases, the price retrieval method did not work correctly and was susceptible to timing issues.
Made the Scan App Azure DevOps build & release pipeline generic for both iOS & Android.
Certain calls to the shipping API failed due to a type conversion issue.
Added functionality to return a 'Post Calculation' label when selecting a country not configured in the Shipping Cost API.
With the switch "incl/excl VAT," a shop can quickly switch between prices including VAT and prices excluding VAT. However, this switch did not work correctly on shopping cart pages, where the ex-VAT price remained visible even when choosing to show prices including VAT.
Fixed an issue where filter expressions were not functioning correctly for TreeSync children within the F&O Batch Interface.
The F&O Batch Interface now saves the latest skip value after each sync iteration. This allows the sync process to resume from the point it left off if the maximum iteration limit was reached during the previous run.
The F&O Batch Interface now supports article synchronization based on a specified attribute. This is configured through the "ArticleExportAttribute" setting, which should contain the name of the desired attribute for synchronization.
Microsoft F&O Batch Interface: The data type DateTimeOffset has been introduced, replacing DateTime, to ensure safe and timezone-independent synchronization of entities based on the Modified property.
Implemented an exception handler in the Multivers Batch Interface to address an issue where the OData layer crashes while retrieving all invoices from a certain year.
The Invoice Sync & Export functionality in the Multivers Batch Interface has been temporarily disabled due to an issue causing the entire application to crash when receiving unexpected faulty responses from Multivers.

july 2024

release 2024.07

The July 2024 release of the Shoxl e-commerce platform introduces several powerful new features and enhancements.

Key updates include the ability to dynamically toggle between displaying prices inclusive or exclusive of VAT, catering to both B2B and B2C customers. We've also added the option to use price lists as the basis for displaying customer-specific assortments. Additionally, shipment costs can now be calculated based on customer segments, determined by their association with specific price lists or even by debtor number. 

Furthermore, we've made major upgrades to our interfaces with Microsoft Dynamics F&O and SAP ByD, which now utilize the OData interfaces of these platforms.

Visitors are now able to switch between a view that shows all prices excluding VAT (the standard for B2B) to a view including VAT. This feature is particularly useful when shows address both B2C and B2B segments. This was a major change to a lot of sections of the shop, since every spot that shows prices had to be adapted.

Toggle between prices including and excluding VAT


The prices on the locations:
  • Discount tables
  • OrderLists
  • FavoritesLists
  • Basket preview
do now have labels for 'including' / 'excluding' vat
The Shoxl shop is able to use price lists for managing customer authorizations. This feature can be configured to display only the products included in a specific price list to the customers associated with that list. By implementing this, you can create customer-specific catalogs or assortments, ensuring that each customer only sees the products that are relevant to them.

In the example below, our customer Grapedistrict uses this technology to present each customer with a dedicated wine assortment.

Customer-specific assortments based on pricelist




In this specific case, we fixed an issue where the default setting for authorization profiles was incorrectly set to 'Allow' in Vendisto. The default is now correctly set to 'Deny'.
Introduced the CreateUnknownAuthorizationProfiles ImportSetting in the Article XML, enabling the creation of non-existing authorization profiles when articles are imported into Vendisto.
Fixed an issue in the Exact BatchInterface to prevent crashes when exporting gross prices from articles that do not have a valid base price.
Exact BatchInterface: Introduced logic that cleans up unused price list authorizations
Extended SyncedArticlesCompare with the ability to detect changes in article authorizations
Exact BatchInterface: A Vendisto customer is now exported with a Pricelist code/name

A powerful new feature now offers granular control over payment costs through customizable filters. This functionality is designed to provide enhanced flexibility and precision in managing payment costs. With this feature, payment costs can now be adjusted based on the specific price list a customer is associated with, as well as the customer's debtor number. This allows for more tailored financial management, ensuring that payment costs are aligned with each customer's unique profile.

Key Features

  • Flexible Filtering Criteria
    • Filters can be applied based on PriceList and DebtorNumber.
    • Each criterion supports both WhiteList and BlackList configurations.
  • WhiteList and BlackList Options
    • WhiteList: Ensures strict inclusion by requiring a match with the specified PriceList or DebtorNumber.
    • BlackList: Excludes specific entries without requiring a match unless there is a direct conflict.
  • Priority Handling
    • When both WhiteList and BlackList are populated, the BlackList takes precedence.
    • This ensures that any conflicting entries are excluded according to the BlackList rules.
  • Combined Filtering
    • Filters can be applied simultaneously on both PriceList and DebtorNumber.
    • This allows for complex filtering scenarios, such as requiring a user to be linked to a specific PriceList while also excluding certain DebtorNumbers.

Usage Examples

  • No Filters Applied
    • If both WhiteList and BlackList are empty, or if PaymentCostsFilters is null, no filters will be applied.
  • Single Filter Applied
    • WhiteList Only: Filters are applied only when there is a match with the specified PriceList or DebtorNumber.
    • BlackList Only: Filters are applied when there is a match with the BlackList. If no match is found, the filter is not applied.
  • Combined Filters
    • Both Lists Populated: The BlackList takes precedence over the WhiteList. Entries present in both lists will be excluded.

Example Configuration

{
"PaymentCostsFilters": {
"PriceList": {
"WhiteList": [ "PriceListA" ],
"BlackList": []
},
"DebtorNumber": {
"WhiteList": [],
"BlackList": [ "20021204" ]
}
}

  • Users linked to PriceListA are included unless they have DebtorNumber 20021204, in which case they are excluded due to the DebtorNumber BlackList.

Benefits

  • Enhanced Control: Provides granular control over which users are subject to payment costs based on their PriceList or DebtorNumber.
  • Improved Flexibility: Allows for complex filtering scenarios to be easily implemented and managed.
  • Priority Management: Ensures that exclusions are handled effectively with the BlackList taking precedence.

We hope this new feature enhances your experience and provides the flexibility and control needed to manage payment costs effectively. For more details and usage guidelines, please refer to the full documentation.

The Excel importer for our new APIs has been completely rebuilt. The updated importer now includes the capability to validate incoming data. If any issues are detected, an HTTP 400 error will be returned, along with an Excel file where the problematic records are highlighted in red. This new importer has been initially implemented for the shipping costs import function.
Shipping Costs can now be linked to pricelists. This way it is possible to vary shipping costs between customer segments. As an example: assume every B2B customer is linked to a (B2B) pricelist, and B2C customers pay regular gross prices. With this new function it becomes possible to charge shipping costs to only B2C customers.
If we find a pricelist that does not yet exist in our cache, we will create one. But when it's an orphan, we will not remove it
The Excel import is now capable of full imports. Everything which is not imported will be deleted
The integration with Microsoft Dynamics F&O has been updated to use the F&O Odata interface. We now handle Customers, Prices, Pricelists, Stock, Orders, Invoices and a subset of Article properties through this interface.
  • Implemented OData for the SapByD Webservice.
  • Fixed a bug where suspended articles could not be set to active due to sharing an article group in Vendisto, but not in the exported XML.
  • Fixed the duplicate ArticleGroupDefaultTitle bug in the Article XML
  • Set Order Origin to Internet when a customer selects the Bank Transfer payment method while placing an order (SapByD Webservice)
The shop is now able to upload big csv files by replacing the price/stocks calls done one-by-one to a batch call.
A better error handling has been created for CSV upload articles that have a quantity that is lower than the minimum order quantity in an attempt to make the results clearer for the user.
Fixed some script issues in the CSV upload result page chackboxes.
The CSV upload did not always add all articles from the CSV. This issue has now be resolved
The revamped article table did not correctly handle transposed properties. Properties with the same value across all articles in a table are moved to a specific section of the page. For example, if every article has the color 'Yellow,' this section will state: 'Color: Yellow.' The 'Color' column should then be removed from the article table, but it remained visible. This issue has now been resolved.
The logic for the (initial) sorting of the article table contained a bug resulting in the fact that the table only sorted the visible page instead of sorting before applying the paging.
Introduced two new fields for order lines, UnitCost and UnitCenter. These fields can be configured in the settings and will be included when placing an order. The setting names are identical to the field names.
Disabled inessential code in the Exact Batch Interface causing a crash when syncing and then deleting Article Translations.
Added a validation check in the Exact Batch Interface to ensure that exported stock items are located in one or more configured warehouses.
When for some reason a salesorder could not be placed in Exact, the Shoxl WebService error logging did not show the exact reason of the failure. We made some changes to the logging mechanism so that this exception is now written to the logfile.

When importing an article XML file via the bulk XML import, the importsettings as defined in the XML file are now used as settings for the import.
A bug caused by a specific property value in the article selection table filters has been fixed.
Th menu will not be shown duplicated items anymore
The order quantity input in order lists that also use the (checkbox) selection interface did not handle the minimum order quantity logic correctly.
FirstArticleIndex has been removed since it is not in use anymore. It used a lot of cpu and memory
The order grid had some performance issues due to the fact that too many requests to the server were triggered.
Fixed a faulty conditional statement regarding the mapping of default addresses in the SapB1 BatchInterface (Vendisto Customer Export)
The search query would not always be handled correctly in the case of the article table.
Price sorting does now work with 'including' and 'excluding' vat. As well, numbers below one are now supported as well
A small logic issue in the stock display functionality has been fixed.

june 2024

release 2024.06

The June release includes several exciting new features. Among them is the option to calculate discounts for selected users based on the order total. Additionally, it is now possible to restrict payment methods displayed based on the shopper's country. The User Portal now supports the display of Track & Trace codes.

We've made numerous improvements to VAT handling, including support for specific Spanish taxes. Another frequently requested feature now implemented is the ability to show article groups in multiple shop categories.

Furthermore, there are extensive enhancements to our integrations with Exact Online, SAP Business One, SAP ByDesign, and Dynamics F&O.

We could go on and on... Check the release notes to get the complete picture!

It is now possible to automatically apply a discount to an entire shopping basket for authorized users, using the voucher module. The discount amount is determined by the total value of the basket, allowing for dynamic and customized pricing based on the customer's purchase. This is a specific use case of the voucher module, implemented in a way that is not visible in the shop interface. The only indication of the discount is a discount line that appears in the basket overview, allowing you to offer targeted discounts to specific customers without altering their shopping experience.

Toggle between prices including and excluding VAT


A new setting has been introduced to restrict Payment Methods to certain countries. The PaymentMethodCountryRestrictions setting allows specifying multiple countries for each individual Payment Method. The default value restricts IDEAL payments to the Netherlands.
A new setting has been introduced to allow anonymous users to Buy On Credit. When the BuyOnCreditForAnonymousUsers setting is set to true the shop will allow the Buy On Credit method for users having selected "Business" (as well as entered a company name) in the checkout. The default value is false.
We've added the option to display a Track and Trace code or link on the order lines in the order history.
The Order Line Type is no longer set to null by default when retrieved from the Shoxl Webservice for order history. It now defaults to "Product" if no value is provided.
When filling the quantities in the order list and favorites the browser would jump to all elements on the page. This has been changed so that only the amount input fields will be selected and the order button belonging to the specific list.
It is now possible to classify an article group multiple times in a classification. Also, some work has been done to prepare Vendisto so multi-classification is possible in the future.
The first record of the classification Paths is the main classification. The classification order can be altered by drag and drop. Also, a classification can be removed by selecting a classification path and pressing the delete button.
By default, this functionality is disabled. The setting: UseMulticlassification, must be set to use this new functionality.
The Article Bulk Export has been updated to support multi-classifications, while still retaining the ability to export in the old single-classification format.
When navigating to a product which is classified in multiple categories. The breadcrumb will be followed. The main classification will not be used in this case. When the article has been found via the search engine. The main classification breadcrumb will be used.
When searching/filtering on an article which has been classified in multiple categories, the article will only be displayed once even it matches multiple categories.
The Shoxl Search engine will not crash anymore if an item has been found which is classified in multiple categories. It will only display one product.
We’ve made important updates related to price display and tax preferences. Here are the details:
Price Display Toggle for Inclusive VAT
If the setting Price.Enable
The shop is now capable to apply the tax rules for the Spanish regions: 35, 38, 51, and 52. When selecting Spain and one of those regions, no tax has to be paid in the webshop. All the other Spanish regions still need to pay taxes. This functionality is only compatible with the Google autocompletion functionality.
The shop can now visualize when a user is TaxExempted. So a user does not need to pay taxes. See case #2084.
The shop can now visualize why a user should not pay taxes when selecting one of the tax-exempt regions of Spain. This will be visible in the basket. See case #2080.
Implemented a new "OrderNumber" property within InvoiceHistory, linking each invoice to its respective order. Additionally, within the Exact Batch Interface, integrated mapping of Exact Online's orderline states to the corresponding Shoxl orderLine states.
Implemented a new B2BAdditionQuantity mode in the Exact Online Batch Interface. This mode offers two options: default and MinimumOrderQuantity. When set to default, the b2bAdditionQuantity is set to 1. When set to MinimumOrderQuantity, the b2bAdditionQuantity is set to the corresponding MinimumOrderQuantity value.
The Article Group Name element has been removed and a the setting, ArticleGroupDefaultTitle=ArticleTitle, has been added to the Exact Online Batch Interface Article XML. This ensures that Article Groups modified in Vendisto are not overwritten.
Improved the Exact Batch Interface synchronization mechanism and introduced a new setting, FullSyncFrom:
Specify the starting date for syncing entities to the ExactCache. By default, the period is set to 1 year. You can customize this period using the following formats:
1y for 1 year
2m for 2 months
8w for 8 weeks
40d for 40 days
Additionally, a new CLI flag --forceFullSync has been introduced, which fully syncs entities specified after this flag.
Introduced a new mapping for the SAPB1 Batch Interface in the PlaceOrder action. The AddressLine2 field will now be mapped to either ShipToAddress2 or BillToAddress2, depending on the address type.
The SapB1 Batch Interface's order history now maps the costs to the foreign currency when available.
The AddressLine2 field is now mapped to ShipToBlock.
The property TaxExempt is now mapped from SapByD Customers and available in the BatchCustomers XML.
Implemented the retrieval of Article Descriptions as titles in the SAP ByD article XML export. This was created specifically for IGT Microelectronics and can be enabled with the following setting: "ArticleExportIncludeDescriptionAsTitle". However, in order for this to work, the following setting also has to have a value: "SapByD:DefaultLanguageCode".
Map the alternative address full name to the 'Care Of' (C/O) field in the Batch Interface of SAP ByDesign PlaceOrder.
The address name from an address in a Shoxl order is now displayed in the SapByD order details view.
We’ve introduced a new feature related to VAT display customization. Here’s what you need to know:

  1. VAT Display Switch
    1. If the webshopsetting 'EnablePriceDisplayToggleInclusiveVAT' and the layout setting 'ToggleInclusiveVAT' is set to false, the VAT switch will not be shown.
    2. The value of the VAT switch is determined as follows
      1. First, we check the user’s session. If a value is stored there, we use it.
      2. If the session value is empty, we look for the VAT switch value in a local cookie. If found, we use that value.
      3. If both session and cookie values are empty, we check if the user has provided a company VAT number. If a VAT number is provided, prices will be displayed exclusive of VAT.
    3. Whenever the VAT switch changes, we update both the session and the cookie.
These enhancements provide greater flexibility for users to customize their VAT display preferences.
The Shoxl app is now compatible with Android 14.
The save functionality of delivery schemes in Vendisto did not work correctly with specific SQL versions.
Introduced an Excel Reader for the new Bulk Article Importer, allowing for faster Excel imports.
A new setting was introduced in the Article XML import. Empty article group titles will now fallback on the first article title when the following XML setting is enabled:
ArticleTitle
Article Property Units can now be null or unset in the Article XML/Excel bulk import.
The Article Bulk Import has been updated to support multi-classifications, while still retaining the ability to export in the old single-classification format.
The order list import in Vendisto will now give clear feedback when an import can't be executed.
The order list selection UI on article selection wizard pages was defective.
The article number in the article table was being sorted as a string, resulting in an order that did not make sense to humans. This has been remedied by introducing alphanumeric sorting in the table.
The price unit displayed in the article selection table didn't display the optional translation when present.
The external ID from an address will now always be added to the data when an order has been placed.
The article compare button will now display a text indicating that the comparison list is at capacity, making it clear to the user why it isn't possible to add the article to the comparison.
The page size of the Headercollection page has been increased to 1000 so the drag and drop interface will not break.
The issue has been resolved by using a different parsing technique for decimal values.
The GA4 Google Analytics message for the View_Item event was not complete.
A new .NET 8 Console Application has been set up for the Microsoft F&O Integration.
When an XML object has attributes and has no element value, the field was always rendered even when the attributes were empty.
The XML object will now only be rendered when an XML attribute has a value/default value. It will only render the field multiple times when translatable is true and at least the node is not empty or an attribute has a value.
The Account API does now support the user field: TaxExempt. When a user is connected to this field, the user will not pay taxes in the shop.
Due to a scripting/timing issue, the order grid would no longer function.
Not all columns in the order lists overview in Vendisto were searchable, the columns "name" and "client" have been added to the searchable fields.
The checkbox UI in the order list detail view no longer worked correctly.
Updated the Article Bulk Export to include articles without a title.
The Carrier/Shipper Name is now expanded when sending it to postmark. It is displayed the same way as in the checkout.
Due to a bug in the stock status logic the feedback after reordering a previous order would remain empty.
The boolean translateable object has been added to the possible fields list. When a field is translateable, it will render the LCID fields. If not, it will not render the LCID fields. But when an object has translation, it will only render the first translation without the LCID tag. The translatable property can be overridden with AlwaysUseLanguageAttributes. When set true, it will always render the LCID tag even when translatable is false.
LCID will now always be rendered. Only when Translatable is set to false, the LCID attribute will not be rendered.
The Shoxl Webshop has been modified to prioritize the net price addition quantity.
Tax Exempt (true or false) can now be imported in Vendisto by using the Batch Customers XML importer.
The Vendisto customer controller now returns the property TaxExempt.
Clicking in the crumb path in the customer module could lead to an unresponsive Vendisto UI.
The Vendisto UI contained some elements that had not been translated to English correctly.
The Vendisto UI contained a timing issue resulting in a mix of Dutch and English labels in the interface. Vendisto will now read the selected browser language and use this language as the default UI language.

may 2024

release 2024.05

Our latest update introduces significant improvements shipping schedule management, including new settings for handling shipping costs within orders. We've enhanced import/export functionalities, allowing for the import of customers with missing addresses and improved validation for shipping cost rules. Additionally, user interface improvements include enhanced filter functionalities, displaying deleted articles, and resolving issues with language dropdowns and YouTube video loading. New functionalities also include integrating the Azure service bus for the upcoming ImportExport Dashboard and specifying article weight fields.

A new setting, "ArticleWeightMode," has been introduced in the Exact Online Batch interface. It offers the following options: None/, Gross, Net, and NetIntrastat. This setting dictates which weight field is exported from Exact Online.
Shop Manager can now release the Exact Webhooks Webservice. It's also necessary to release the Exact Online Batch Interface.
Introduced a new setting in the Exact Online Batch Interface: "EnableEmbeddedShippingCosts." This setting allows the utilization of the new Exact Online ShippingCosts line in an order, rather than relying on articles for shipping costs. Enabling this feature requires following specific steps outlined in the documentation. Review the internal documentation carefully before enabling this setting.
The Customer Import now imports customers even if one or more addresses are incorrectly formatted. However, faulty addresses are still excluded from the import process.
Turned out to be a flaw in the webservice that was not covered correctly by the new division code implementation, resulting in the account number not being passed to the connector. This is fixed now.
Implemented a new setting, PrefixHouseNumber, within the Exact Online Batch Interface. This addition ensures that addresses now adhere to British standards.
Integrated customized Exact Online OData interface metadata to address discrepancies found in their version. Notably, their metadata indicated that Warehouse(id) under stock information was non-nullable, contrary to reality where it is nullable. This mismatch led to validation errors, resulting in sync termination.
Implemented shipping cost import and export.
Implemented validations for shipping cost weight ranges and verified whether an article number exists in the Shipping Cost import.
Removed "www" in shop IIS bindings causing API endpoint to return "not found".
A bug has been fixed where the filter reset functionality in the sidebar no longer worked.
The price filter validation is now tuned to allow decimal numbers. Previously, it wasn't possible to filter prices within two integers. For example, it was not possible to set a filter range of 1.50 to 2.42. Now prices can be filtered in 0.01 steps.
An optional "Show deleted items" option has been added to the articles list. By default, this option is disabled. When activating it, the list will reload with the deleted articles included.
The language labels would sometimes not load, resulting in numbers instead of friendly language labels.
YouTube videos would not be displayed on an article selection wizard page due to a logic issue.
Due to a bug in the scripting, the body scrollbar would be hidden and would not be made available again after closing the player.
The static lists were unable to render price information when being used via a custom tag from within the context of a page.
The tool AutomaticProductImportManager has been created, tested, and reviewed. This tool connects to the OAuth 2 server to obtain a token. This token is then used to connect to the Product API where a REST call is made to obtain the product list. The product list is then written to a file in specific locations. The location where the import file will be written to can be changed in the settings. The file formats supported are XML, JSON, CSV, and XLSX.
The fields "IncoTerm" and "PaymentCondition" have been added to the quote mail model.
OrderLines now contain the field: "deliveryDate" in the Webservice.
Added the "--fullSync " command line argument to the Batch Interface, enabling the resynchronization of a specific entity.
The app version of the basket would not disable the next button when there was insufficient stock available for an article in the basket.
Due to a small bug in the basket, the stock warnings would not be displayed.
The calendar layout in the exceptions popup of the delivery scheme module was incorrect.
As part of the development process of the upcoming ImportExport Dashboard, an internal test application was made to demonstrate the needed functionality of the Azure service bus.
Implemented a client library that can be used by the different import and export tasks to submit messages to the upcoming ImportExport dashboard.

april 2024

release 2024.04

Our April update introduces significant improvements to stock management with the implementation of Exact Stock Webhooks for real-time updates. We have enhanced import/export functionalities with support for language-specific translations and improved XML import capabilities. Additionally, user experience has been improved with advanced handling of payment conditions, better navigation in the shopping cart, and enhanced filter and search functionalities. We have also addressed key bugs and introduced new settings for maintaining property order and shipping scenarios.

A new Exact project has been added to the WebServices Solution. This project has code capable of subscribing to and receiving Exact Stock Webhooks and transforming them into the Shoxl ErpCache Stock XML format.
The article XML import now supports the import of language-specific assets and asset label translations. This means that an lcid attribute specifying the language can be provided on both the asset value and the asset name elements of the import XML. On the Logo, Image, Icon, and Media Asset elements, the Name element may occur more than once (for different languages) but the Value element, which also has an lcid attribute, may occur only once.
The Article XML import now supports the import of classification level translations. For this purpose, the Classification Level elements in the article XML import now have an optional lcid attribute specifying the language of the translation.
The product images in the order and quote confirmation mails will now be provided by the CDN service (if configured in the shop).
A bug in the call to GTM "ViewItem" caused an article detail page to crash whenever the gross price for the article was unknown.
Saving the metadata for a page in Vendisto contained a bug causing the metadata fields to be cleared in some cases even when values had been provided.
If the partial article import is disabled a confirm message will be displayed warning the user of the risks of doing so.
Exact Online Payment Condition code and description are now exported in the Batch Customer XML.
Fixed changing an ItemCode in Exact Online causing the article not having stock.
Vendisto: A Vendisto user can now import/export the 'Shipping cost type'. This can be:
ShippingCostFree (No shipping cost has to be paid)
ShippingCostPostCalculation (Shipping cost will be paid on post calculation)
ShippingCostApplied (you have to pay shipping cost, can be on condition)
Shippingcost scenarios can now be defined in Vendisto. Three types are now supported: ShippingCostFree, Postcalculation, and shippingcost threshold met.
When creating a new property in Vendisto the selected group would not be saved.
Using the alternative address form in the order process often led to confusing results when navigating forwards and backwards in the order process steps. We've fixed some bugs, making the order process less confusing.
In some cases the selected filter options would not be remembered when opening a filtered ArticleGroup page, resulting in a long article list on this page.
The unclassified articles list (reachable from the Vendisto home page) would also display some classified articles as being unclassified due to a bug in the data-retrieval functionality.
OrderMode - Internal documentation (gitbook.com)
We've added the option to display the IncoTerm and Payment condition information in the order and quote confirmation emails.
OrderInformationV2 will now contain TotalVat as well.
The user menu sign-out link contained a redundant space in front of the link text.
The basket didn't show the status of an article with insufficient stock when the basket was loaded.
Re-implemented Multivers Batch Interface retry mechanism the correct way, no functional changes.
Webservices Shoxl was updated to version without hotfix, hotfixed again (see task 1193).
A bug was solved in the tool that generates the first token. The ManualTokenRequester did not parse the Expires date in the token. This was causing an early token refresh, which is not allowed by Exact Online.
In order to communicate with Exact Online, we need a token that is part of the OAuth flow that is needed to call the Exact Online API. The first token is generated by a manual process and hence refreshed by an automated process.
In some cases, the "Order all" button in an order list would be enabled despite the fact that an invalid quantity had been provided.
The asset synchronization process that encloses images from Vendisto to the Webshop was not working correctly when in Exact Online the jpg variant of an item image was replaced by a png. This, for example, happened when the customer wanted to replace an image with a white background with an image with a transparent background.
The problem was solved by configuring the latest version of the article XML import which under the hood contains a totally different architecture compared to the old mechanism.
Requested new Refresh Token for Packforce and updated to latest authenticator API (2024.4.1).
Newly synced PriceLists to ErpCache in order to fix the issue with Unit mismatch causing calculate order to return 0 as the price.
Re-applied not syncing lead purposes and requested support from Exact Online. Synchronization of lead purposes now functions again.
Webservice: DivisionCode within the context object is now serialized with lower camelcase as specified in the documentation.
When saving a page the HTML will be parsed and image URLs will be changed to use Cloudflare CDN URLs (if configured). This parser contained a bug that caused parts of some image attributes to be omitted.
Article Translations have been incorporated into the Article XML for the Exact Online Batch Interface. These translations can be specified using the "Languages" setting, which consists of a ";" separated list of LCIDs (Locale IDs). The first LCID in this list serves as the Default language and must match the default language set in Exact Online. Description and Extra Description are the only fields that can be translated and exported from Exact Online. If these are not translated, the default language is exported.
We've added the option to omit ArticleGroup results from the AutoComplete results.
We can now optionally display a label indicating the payment condition with the "On account" payment method.
An option to display the number of matching articles has been added to overviews that support searching/filtering.
We have improved the article comparison functionality and have fixed some bugs.
We have improved the article comparison functionality and have fixed some bugs.
Due to a bug in the scripting controlling the Article Selection Wizard the initial state of the order interface was incorrect.
When a debtor just has one user and that user does not have an email address, the customer email address can be used to activate the user. If the customer has multiple users this will not work.
The basket will now display an error message at the top and the bottom of the basket whenever the basket contains one or more articles with insufficient stock.
A new setting has been added for maintaining the fallback order for properties: SettingsManager.Web (settingsmanagerweb.azurewebsites.net).
A new setting, "B2BMinimumOrderQuantityFreeFieldNumber," has been added. This setting is responsible for establishing a B2B Minimum Order Quantity based on a free field within Exact Online articles, similar to the regular "Minimum Order Quantity." The B2B Minimum Order Quantity specified through this setting will be included in the exported pricelists XML. If this field needs to be exported only for specific price lists, utilize the "B2BPriceLists" setting. If left empty, this field will be included in all price lists.
Vendisto does now have correct labels for the ShippingScenario's so it is understandable what they do. (Free, post calculation, and threshold met)
The shop can now show the shippingScenario labels in the shop in a correct way
The order confirmation mailing can now show the correct shipping scenario label.
A new setting has been added for maintaining the fallback order for properties
A new setting has been added for maintaining the fallback order for properties: SettingsManager.Web (settingsmanagerweb.azurewebsites.net).
It is now possible in Vendisto to drag and drop properties from the header collection to re-order the position. It is also possible to change the position by clicking on the position field and changing the position number.
Change the position by drag-and-drop
Change the position by position field:
The latest release contained 2 bugs in the order process preventing some order processes from being completed.
Created new cases for the Exact Webhook Webservice implementation of stock exports for articles with unit mappings.
The VIES validation can now be disabled.
In some cases, a fallback to a default CSS URL caused layout issues.
The next step buttons in the order process would not always be correctly enabled or disabled when the basket was updated.
Exact Online: Solved a bug that occurred when the Exact interface to Vendisto tried to export an article that had a start date in the future.
The stock status would in some cases always be returned in English, even in non-English shops.
A new Command Line Argument, "--syncEntitiesFrom = ," has been added to the SapB1 Batch Interface. This argument allows users to specify the starting point from which an entity is re-synchronized. For example, "--syncEntitiesFrom Order=12 BusinessPartner=6" will re-synchronize all modified entities from the past 12 months for orders and the past 6 months for Business Partners.

december 2023

release 2023.12

In our December release, we've refined the Content Builder. The new full-screen mode ensures a comprehensive view of the page you're designing.

This release also introduces numerous additional features and enhancements to the shop. We encourage you to review the detailed release list for a complete overview.

On the integration front, there's noteworthy progress. This month, we've emphasized improvements for both SAP and Exact. Notably for Exact users, Shoxl now supports Exact VAT-codes including tax; furthermore, Shoxl now sends product bundles to Exact.

The Content Builder now operates in a dedicated tab, providing ample space for content editing. Clicking the 'Editor' button directs you to a full-screen editor tab. Once you hit 'Save', you'll be navigated back to the Vendisto content management section.
Implemented Excel import/export of user level authorization profiles in customer export file
When creating a new orderlist in Vendisto with some articles, saving it, then adding more articles and saving it again, an error would occur. This has been fixed.
Due to the login button retaining its active state upon being clicked, users often pressed it multiple times when experiencing login delays. These delays were due to slow responses from back-end components, including the ERP system. To address this, we've now configured the login button to disable after it's pressed. Meanwhile, we are also focusing on enhancing the speed of the login process itself.
The costlines have been expanded to include not only the discount percentage but also the uplift price/discount price. This change accommodates certain ERP systems that require a specific price value instead of a percentage.
Improved the stock checks to prevent users from adding too many items to the basket.
Placeholders in login form fields are gentle cues or hints inside the input boxes, often showing sample data or a brief description like "Username" or "Enter your password." They help users understand what information is needed without cluttering the form with extra labels. They're useful because they simplify the login process, making it intuitive and user-friendly.

The portal login form now supports placeholders. This support will be extended to other forms used in the shop.
Modified the Additional category item setting to allow multiple additional tiles to be shown. You can add articles to a tile by creating a product property with a specific value. This way, you can display a tile that leads, for instance, to all articles on sale.
An orderlist can now have an initial sort field and sort direction.
After adding an article to an order list, the status of the icon previously only changed from "add" to "added" after a page refresh. This has been modified so that the icon immediately indicates that the article has been added.
Not all product images where being served via Cloudflare, specifically on the article detail page and in the basket. This has now been changed, if Cloudflare is configured for a shop these images will also be served bij Cloudflare.
The quantity input box, which can be visible on the homepage (lists), article group overview page, article group page, article detail page, shopping cart, order lists, and favorites lists, has various implementations. Both its visibility at a location and its behavior depend on many settings. To ensure maintenance, expandability, and quality, all required functionality is now consolidated into one component.
The inheritance of assets in the classification tree used to take the image asset of the first child ArticleGroup to substitute a missing ClassificationNode asset. This mechanism is now changed to the image asset of the first child ArticleGroup that contains an image. This leads to a quicker population of images in the ClassificationNode tree when filling a portal shop with images.
When requesting a quote, we are now equipped to send an email containing all the necessary information for the quotation.
Exact Online: In Exact is it possible to define prices including tax by assignging an item item to a VatCode for a price including VAT. The Exact Batch interface now converts these prices to prices excl. VAT when generating files GrossPrices XML and ErpCache PriceLists and ErpCache CustomerPrices XML export files. This enables the shop to show the price excluding VAT.
When sending an order for product bundles to Exact, maintaining the order of these lines can be crucial. Since Exact doesn't recognize the notion of "product bundles," the sequence of order lines must visually indicate their association.
Adjustments in order list quantities used to initiate a stock call, regardless of whether stock information was vital. Now, by consolidating stock and price data into one call, we've halved resource use. The requisition for stock data is dictated by specific settings, including TreatAllArticlesasEndofLive and Ordermode.
The software framework for the SAP B1 integration is upgraded from Microsoft DotNet Framework 4.7.2 to Microsoft .NET 7.
Added ShoxlConnectorMaxReceivedMessageSize setting in order to receive responses that exceeded the default maximum length when receiving realtime data from the Erp system via the SAP interface.
Fixed a bug that caused the old articlenumber to remail in the ErpCache database in case of a change in the casing of a productnumber. This was is some cases leading to incorrect prices in the shop. The new number is now stored in the database.
Fixed a bug in the customer import that prevented the given deliveryschedule of beïng assigned to the customer
ErpCache: Fixed a bug that is some cases caused an exchange rate to be applied when this was not supposed to happen while the CurrencyPolicy was set to Calculated.

november 2023

release 2023.11

At the heart of our mission lies seamless integration, and November was no exception.

We're pleased to announce enhanced integrations for Exact, especially spotlighting the refined integration of delivery methods and schemes.

For our SAP Business One users, get ready to experience unparalleled efficiency with our brand-new cache. Acting as a real-time shadow for SAP, it not only boosts your performance but significantly reduces dependency on SAP's availability.

To further streamline your operations, we've developed an Order API. It allows you to complement order data with ERP data such as the ERP order number.

Though we're bubbling with excitement for the Quote Module's debut, perfection takes time. Initially slated for August, we're now eyeing GA for October.

It is possible to connect the Delivery Method to a DeliverySchedule via the Customer XML import. This functionality is now only enabled if the DeliverySchedules license is present.
The SAP Business One interface will be redeveloped to align with our latest development insights. Among other things, an SAP cache will be developed that will align with the SAP contents required for portals and shops. This SAP cache will serve as a near-real-time shadow of SAP and will be the foundation for our general ERP cache. Consequently, this ERP cache will no longer rely on the availability of SAP.
VismaCash: CustomerAddresses are now exported in Combined format. The invoice address of the relation is now also exported if it differs from the delivery address.
The Order API allows users to modify an order document in the shop and execute actions specific to the patch method. Before utilizing it, one must configure specific settings. The endpoint to update shop orders is https: //{domain}/api/v1.0/orders with supported action methods including UpdateShopDatabase and UpdateDeliveryCostsProvider.
Order API now returns the ERP ordernumber, when this becomes available. This feature is needed because in some cases the ordernumber is not yet available when submitting an order to an ERP system, and the shipment software (e.g. Delivery Match) needs it for processing the order. Zie: https: //app.gitbook.com/o/-Lr8SNrx9X2_k5JXMP6P/s/-LtA4mKRxZ43ImyX12__/~/changes/2263/shoxlpro/order-api
When logging in with one debtor account and adding an item to the order list, if you subsequently log out and log in with a different debtor account, the shop still indicates that the item has been added. The verification seems to be conducted on a global basis rather than being specific to individual debtor accounts.
Fixed exception that occurred when the Interface to Exact Online tried to download an order document that did not contain an attachment.
Fixed bug that prevented the display of Order History for shops that use the SOAP version of the Shoxl WebService as realtime interface to the ERP system.
On the item group overview screen, the quantity input box should initially display the unit on which prices are based, rather than the incremental unit. For instance, if an item can be ordered per centimeter but the price is based on meters, the box should initially display "1" instead of "0.01". This addresses a usability concern.
Quotes can now be placed in the basket, ] Before ordering, the basket can be adjusted if needed. When ordering, the quote number is also sent to ERP or CRM software, in order to link quotes to orders.
Introduction of a feature that allows sales reps and the inside sales department to view outstanding quotes of prospects and customers, and to promote them to orders.
It has been made possible to select dates in the visible days of the previous and next month when using the new delivery schedule module.
Filter properties with value Unknown can be selected, but do not show any results. It has now been decided to hide these property values, since they do not realyy make sense when searching for a product.
The CSV upload didn't work for shops that use both ArticleNumber and ArticleGtins to identify the articles in an uploaded CSV file.
In fully private portals, users currently return to the account page after logging out and then back in. Ideally, users should always be directed to the homepage upon login. However, for public-facing catalogs, it's likely best for users to remain on their current page after logging in.
On the item group screen, when you move an image using the handle, it appears to stay in the new position. But after hitting "Save", it reverts to its original position, preventing image order changes.
When browsing assets, previously only JPGs were displayed in previews. Now, PNG files are also included.

october 2023

release 2023.10

In October, we continued our efforts on the brand-new Quote Requests Module. We're excited to announce that this module is slated for release in August.

We've made notable enhancements to our Product API, one of which includes the capability to directly generate Excel sheets filled with product data.

We've refined several features such as ordering using decimals, defining delivery schedules, and integrating with Exact, SAP, and CS WholeSale. Additionally, for our SAP Business One integration, we've commenced the transition to our updated integration architecture.

Keep an eye out for significant new features in the upcoming months!

The category menu that appears on hover has been extended with new layout options.

With a new layout block, it is now possible to show News Categories on the homepage.

The layout language is the tool with which the layout of a Shoxl Shop is configured. The language consists of blocks that can be added to sections of the various available pagetypes. The definition will then generate HTML that will be populated dynamically with data such as news items and products lists.

News categories block for homepage


A static list now shows a description beneath the title.
We have removed some small flaws in our delivery scheme module, and made some small modifications to the user interface.

News categories block for homepage



The delivery scheme module allows you to set a standard delivery scheme for a week, including exceptions for e.g. holidays. You can define specific schemes for specific customers, again with exceptions, that override the general scheme.

The module will then populate the calendar on your shop, and activate/de-activate days for your visitors and logged-in customers.
The product feed can now serve all article group assets (images, videos, url's and so on) instead of only the article variant main image.
The product API definition now also supports the mapping of product information to XML attributes, instead of onle XML Nodes / XML Childs.
The Product API now also contains general information on the article group of which the article is part is, among which the article group description.
The ProductAPI can now also generate Excel sheets, next to CSV and XML.
The basket can now be filled via a Excel upload, as an alternative for the CSV upload.
The customers list in Vendisto will now display the company name in an additional column.
Some parts of the asset dialog where not translated from Dutch to English, this has been fixed.
A product (articlegroup) without variants (articles) can no longer be active. When a new product (articlegroup) is created it will get the suspended state. This state is changed to active when an active variant (article) is added to the product (articlegroup).
Fixed bug that could possibly cause an error when synchronizing documents to the performance database after importing articles in Vendisto. The error could occur when classification nodes where not translated.
Divisible Items in Exact can be bought in fractions. In order to support this in Shoxl Portals and Shops a number of changes were needed. We handle this as follows.

An item that is divisible in Exact will cause the MinimumOrderQuantity, AdditionQuantity and FromQuantity to be divisible too.

If Exact works with 2 decimals, the AdditionQuantity will be 0.01. The PriceUnit will be 1.00. A customer will then be able to buy any quantity starting from 0.01, but see a starting value of 1.00 in the quantity input field.

This feature is enabled in the Exact integration configuration with the parameter EnableDecimalQuantity.

For shops that use the parameter EnableItemPriceToArticleMapping divisble values are only generated for prices that are based on the base unit of the divisible item.

E.G. for a divisible item "A" that can be sold in meter and in roll, the MinimumOrderQuantity, AdditionQuanity and FromQuantity for derived article "A-meter" will be set to 0.01 and for derived article "A-roll" these values will be set to 1.
The way a customer's delivery is handled in Exact can now be connected to a specific delivery plan name in Vendisto. Now, you can set up connections between customers and delivery plans directly in Exact. Vendisto is only used to create and handle the delivery plans themselves
When generating a token in the new format you do not have to wait until the token is expired in order to use it as was previously the case.
In some cases the execution of the Exact batch interface failed after the interface failed to get a token to retrieve the data from Exact. The mechanism that retrieves the token now first performs a number of retries to get the token. This makes the mechanism less vulnerable to network related errors.
Sales representatives can be configured in Exact in order to be able to login into the shop on the customers account.

Depending on the configured settings:
  • Sales representatives can be added to a customer als part of an account classification
  • The customer's accountmanager can be set to serve as sales representatives
  • A predefined list of email addresses can be used as sales representatives for all customers
The sales representative user now always has an active state when being exported in the customer XML.
The email address of the sales representative users is now filled correcty when exporting users with the AccountManagerConfigurationType setting set to SalesUser.
Items are now synchronized to the Exact Cache before placing an order to Exact in order to avoid exception when placing order with empty Exact cache. This situation could occur after the initial software upgrade that introduced the Exact cache.
Added EnableDecimalQuantity setting to Exact Batch Interface to disable the automatic propagation of divisible items to decimal quantities.
Exact online: Inactive customers with a past Enddate are no longer exported in het Customer XML when the XML file contains a full export.

If the file contains a partial export then the customer's State will be set to Blocked if the customer involved is to be exported.
Fixed bug that caused an invalid price the in grossprices file when the Exact Batch Interface tried to create a price based on an exchange rate for a foreign currency while the item's base currency did not correspond with the base currency of the Exact administration.
The unit was missing in the quantities column in the basket when using the order units option.
An new option has been added to the basket, enabling the display of quantity instead of trade unit count when using trade units.
Due to a bug in the customer form the company specific field in the customer form would be hidden when switching between delivery methods.
CSWholesale: When placing an order with an alternate delivery address the Addressline1 field is now posted in a separated form since the housenumber (now) seems to be required in CSWholesale. Also added CompanyName to the Name field of the delivery address.
It's been made possible for a logged in user to communicate account data changes to the shop owner via e-mail.
Fixed a bug in the display of package contents.
Fixed bug that caused article import to fail when the default import language was set to the EN-UK language.
If the category Title is not supplied in the webshop XML, the importer will update this field to be equal to the Name field of the category. Fixed a bug that caused an empty title after a second import.
The discountPercentage on orderlines is now passed through to the PlaceOrder REST interface.

This enables the implementing party to use the DiscountPercentage on the Payment orderline in order to implement a discount on the entire order amount when placing the order in the ERP.
The option to add from an order list has been added for shop using order units.
A start has been made on a complete refactoring of our interface to SAP Business One. The new setup follows our new generic model to interface with ERP systems.

september 2023

release 2023.09

In this release, support for Quote Requests was started. The plan is to have this functionality fully completed by the next release.

The integration with Exact has been extended with support for ordering divisible items in fractions. In addition, we now support Standard type price lists.

And finally, the Core Shop has been extended and modified in a considerable number of smaller points. Check the list for details!

It is now possible to use both a minimum order quantity and additional quantities that have decimals. Thus, you are able to specify, for instance, that the minimum order quantity that is allowed is 0.5m, and that increases with 0.01m are allowed.

Using decimal numbers should, of course, only be possible when the ERP system accepts such numbers for specific products. In Exact, this is specified by setting the "divisible" property of a product.

Both the ErpCache batch interfaces as the REST API now support the use of decimal quantities when defining prices.

The MinimumOrderQuantity, AdditionQuantity and DiscountMinimumQuantity elements of the Gross Price Import XML format now support Decimal numbers.
Changed FromQuantity and ToQuantity datatype to decimal in ErpCache PriceList and CustomerPrices XML import formats and in GetProductInformations REST API. Introduced ShoxlRestApiSwagger_v14.json.
The shop now correctly uses the Exact pricelist of type "Standard". This pricelist, of which there can be only one per company, contains the prices which are used when there is no customer-specific pricing defined. If there is no Standard pricelist, default prices are used.
Exact Online: Warehouse is now beïng set when placing the order. When multiple warehouses are available, the main warehouse is taken unless otherwise configured in the DefaultWarehouseCode configuration setting.
The Exact integration did not export barcodes/gtins; this had been added.
Exact Online sometimes produces double linenumbers for some of the orders when exporting orders for the ErpCache orderhistory. Since these double linenumbers where leading to import issues, the linenumbers are now renumbered if a double linenumber is detected.
When exporting units from Exact it is configurable whether the ID or the description is used in the shop. Only units that actually are in use were exported. This caused difficulties when descriptions were changed. To prevent these issues not also the not active units are added to the UnitDictionary that is used when the UnitField setting is set to Description.
The optional Quote Module extends the shop with the option to request a quote for products that are added to the quote basket, instead of ordering them directly. For this purpose, the Vendisto database is extended with capability to store these quotes. With the Quote API quotes can be managed (stored, retrieved, deleted). In the next step, the shop will be connected to this API. Furthermore, it will become possible to promote quotes to orders. Stay tuned!
It is now possible to re-order assets on the Article and Article Group pages. This is done in Vendisto by dragging assets to a new position.
The spacer element used in the content builder was not visible after adding it to a page. This has been remedied by adding a missing container for this element. Furthermore, some padding and margin issues with full-width rows were fixed.
Fixed bug that in some cases occurred when importing an article .xlsx file containing number style cells
Fixed bug that occurred when importing articleproperties for an articlegroup that contained new articles while using the Group Id column in the article import file.
It is now possible to show an additional product category on a homepage, which contains all proeucts that have a specific property value. This can be used, for instance, to highlight all articles on sale.
In Vendisto it is possible to assign an image to a clasification node. This image will be shown in the shop on tiles representing the node.

If no image is assigned, the classification node will inherit the image of it's first child classification node. If the classification node does not have children, the node will inherit the image of the first article group.

An article group on it's turn inherits the image of the first article in case no image is assigned to the articlegroup.

Fixed a bug in the assignment of the inherited classification node images.
Fixed some quantity issues

- Articlegroup page now correctly uses minimum order quantity
- Basket precision now uses the correct values
The package calculation was not called due to a bug in the scripting.
Added a setting for only showing priority countries in the alternative delivery address country dropdown
Country, phonenumber and email can now be retrieved from the signed in user as well from the formdata
Fixed an issue that caused the number of found filter results to be incorrect.
The shop now has more Google Analytics tracking options.
Removed some restrictions in the country selection on the registration page to make the list of shown countries customizable.
Added DeliveryDate to ErpCache Order history import format. Added deliveryDate to GetOrderHistory REST API. Introduced ShoxlRestApiSwagger_v15.json.
The CSWholesale interface now returns next to net price also the discount percentage and tariff to the webshop if these are available when requesting the article price for a customer.
To make basket values persistent, sessions are now stored in SQL (database ASPState).
The SmartLynx client is one of the options used to connect to SAP Business One. When placing an order via the SmartLynx client we now use the Task function of the client in order to improve the order placement experience in the shop. The end user will now get an "order placed" message while the order placement task is still running in the background.
The SmartLynx client is one of the options used to connect to SAP Business One. In order to enable the search on own articlenumbers in the shop, we now implemented the MatchCustomerProducts function using this client.
The synchronization mechanism that is used to copy PIM data from the Vendisto database to the Shoxl performance database now uses a retry mechanism that automatically retries synchronization batches in the case of network errors or sql server timeout exceptions.

august 2023

release 2023.08

A feature-packed month! Our development team pulled out all the stops, to say the least.

With our new DeliveryScheme Module you can link customers to delivery schemes (routes), and let them select only the days an order can be delivered.

With the new SalesReps Module, sales representatives are able to quickly enter orders for their customers.

With a completely revamped and lightweigth Account API we have created dramatic performance improvements when logging in to a shop or portal.

Our Exact integration now supports the definition of product properties in Exact. We also refined our interfaces with DeliveryMatch, SAP, GA4, Visma, and Mollie.

Check out the release notes to get the full picture!

 

Delivery schemes specify the dates/days on which goods can be delivered to customers.

This can, for instance, depend on routes that are driven: a driver can visit the province of North Brabant only on Tuesdays, and thus a customer in this Province can only opt for delivery on a Tuesday.

When a customer wants to order for delivery on specific dates, he/she/it will also has to deal with cut-off times. So for example, orders for Tuesday must be submitted by 4 p.m. Friday.

Delivery schemes can get complex, because of exceptions such as public holidays.

With our new Delivery Scheme feature it is possible to create delivery schedules that consist of both delivery days/dates and the accompanying cut-off times, and to link them to customers. When choosing a preferred delivery date during check-out, customers can only select days that are available according to the schedule they are linked to.
Vendisto has been extended with a module to manage delivery schedules.
A new feature is now available, the 'vertegenwoordigersmodule'. With this module a sales representative can now log in to a shop or portal of his customers, without the need to sign in and out repetitively.

Assigning sales resp to customers is a simple action of creating a user account within the customer account, with the sales reps emailaddress as the username.

All companies a sales rep has access to will then be shown in a list that appears after initial login of the sales rep. After selecting a company, the sales rep can proceed with entering orders for the customer. When done, the Exit button will then show the list of customers again.

For administrators, we have created an option to access all existing customers.
The account API has now an endpoint for retrieving the sales rep that is linked to a specific customer. Sales reps are linked to a customer by creating a user within that custmer, with the email address of the sales rep. A sales rep can access all customers in which he/she/it has a user account.
In the Shoxl e-commerce platform architecture, the management component Vendisto plays an essential role. For instance, when a user logs in to a shop or portal, his/her/its credentials are checked by consulting Vendisto.

With the growing set of features that depend upon Vendisto, responses are slowing down to a level that negatively affects usablity.

Our new and very lightweight login API allows the various services and features of our e-commerce platform to acquire the necessary authorizations very fast.

So, goodbye to long waiting times when logging in! After completion, the new API will be rolled out to all of our shops in a staged manner.
Implemented three different options to define sales representatives with access to configured customers in Exact Online.

Depending on the configured settings:
  • Sales representatives can be added to a customer als part of an account classification
  • The customer's accountmanager can be set to serve as sales representatives
  • A predefined list of email addresses can be used as sales representatives for all customers
To improve performance, stock levels are now cached on disk.
Reduced the number of calls required to load the article group table to make the page load faster.
It is now possible to add pagination to the article group products table.
Fixed various currency formatting inconsistencies
It is now possible to separate the shop language, and the culture that is used for formatting prices, dates, and so on. So for example, when visting a shop in the Englisg language, previously prices were displayed with a dot as decimal sign. For Dutch vistors that use the English language, this shoud be a comma sign. In the new set-up this is now possible.
The table view of the articles in an article group can now be configured to show more properties.
It is now configurable whether the order grid shows gross prices or (customer-specific) nett prices.
The "starting from" price on the article group page can now show both the gross price and the nett price.
OK, we too have finally figured it out: Northern Ireland is no longer part of the EU.

According to our code, 'XI' was still within the EU. The VIES settings, that are used to check whether we should apply VAT for foreign transactions, also still mentioned XI: 'AT,BE,BG,CY,CZ,DE,DK,EE,GR,ES,FI,FR,HR,HU,IE,IT,LT,LU,LV,MT,NL,PL,PT,RO,SE,SI,SK,XI'. Northern Ireland (XI) has now been removed from these list. Foreign transactions to Northern Ireland will therefor now use VAT 0%, instead of Reverse VAT.
Checkout pages are no longer indexed.
The CSV result screen could not display articlegroup images if an article in the results didn't have any images. This has been fixed.
Implemented the possibility to have filters on top instead of to the side, in combination with a filter pane.
Some carriers require the availability of email address and phone number as part of the shipping address and invoice address. This information will now, if available, be sent by the PlaceOrder method.
It is now possible to manage product properties (such as brand, size, colour) in Exact. This is an alternative to using the Shoxl PIM system, for cases in which the number of product properties is fairly limited. The advantage of this approach is, of course, that management of these properties can be done in the familiar environment of Exact.

The number of extra fields for an item in Exact is limited to 8. The fields that define product properties are configured during protal/shop setup.
when multiple orders were placed within a very short timeframe, the order upload might fail. This has been remedied.
When placing a pickup order in the shop, the pickup address is added as a delivery address in the order. This was leading to the pickup address added as a delivery address when placing the order in Exact Online. This behaviour is now changed. When placing the order in Exact Online the delivery address is set equal to the invoice address and the Exact shipping method is set to the shipping method that was associated with the Shoxl pickup delivery method.
Added BillingFirstName, BillingMiddleName, BillingLastName, ShippingFirstName, ShippingMiddleName, ShippingLastName, EmailAddress, PhoneNumber, MobilePhoneNumber, ShippingEmailAddress and ShippingPhoneNumber to REST API PlaceOrder function
Implemented the ability to add a company name field to the form that is shown when filling in a different delivery address in the checkout.
fixed bug that prevented correct synchronization of Shipping Methods to Exact Cache. This caused the order to be uploaded to Exact without shipping method.
In specific cases, only one orderline for orders containing multiple orderlines was placed on the Google Analytics datalayer. This behaviour has been corrected.
When no delivery method is returned by DeliveryMatch (or any other software that allows the customer to select a delivery method), the delivery costs are not known. It should be configurable whether a customer, in such cases, is allowed to pay the preliminary invoice, or has to wait until a final invoice is sent by the shop.
The SAP WebService now writes an Order XML when placing a shop order. The Order XML file is then placed into SAP with a different process. This approach eliminates the timeout exceptions that could occur when placing orders to SAP.
The SAP WebService now writes an Order XML when placing a shop order. The Order XML file is then placed into SAP with a different process. This approach eliminates the timeout exceptions that could occur when placing orders to SAP.
Visma cash order history is now fully supported in the shop
After applying a coupon (code) to an order in the web shop, one or more additional lines will be added to the order. This is because the discount is divided proportionally over all items. For each VAT percentage used in the order, an additional order line will be included.

This means that three new items need to be created in Exact:

  • Coupon discount 21% VAT
  • Coupon discount 9% VAT
  • Coupon discount no VAT
These items need to be linked to similar VAT codes in Exact. Make sure that for these VAT codes, the intrastat checkbox is unchecked or if not, that the coupon article gets an intrastat code. The latter is necessary because otherwise deliveries within the EU cannot be placed in Exact.

The item numbers of these Coupon items are configured in the settings of the Coupon module.

july 2023

release 2023.07

On top of our minds for July: the voucher module. After completing the voucher API last month, this month was devoted to implement vouchers in the shopping checkout process and the ERP integration layers.

As part of our promise to deliver seamless integration with your back-end systems, we also spend a lot of time on - in this case - the nitty-gritty details of interfacing with Exact Online and Exact Globe.

And finally, as a consequence of our c-commerce architecture, our attention went to the ingrations with tools such as PostMark, DeliveryMatch, and Mollie.

 

It is now possible to apply vouchers in the checkout process. Voucher code remain visible throughout the checkout process, and are also added to the mail. Security measures are implemented to prevent abuse.
IP security and request header security are added
Article groups that contain hundreds of articles can be very slow if the ERP system returns prices one by one. To solve this issue, very large product tables are now optionally paginated; and the price data is collected in batches.
Images are now cached following the HTML standards. If as image is not changed (etag and last modified date), the shop will now return a 304 instead of streaming every time the whole image. The cache can be setup on one hour, but is configurable by webshopsettings (image/OriginalImageCacheTimeInHours) When the cache has been expired, it will still check if the image has been changed. If not, the shops returns a 304 and the cache will be extended with one hour
Added export of VatPercentage to export formats of next batch exports: GrossPrices, ErpCache_PriceList, ErpCache_CustomerPrice, ErpCache_Order (history)
Although total order prices should be calculated by the ERP system, in some cases we cannot avoid to let the shop calculate them. This is, for instance, the case when the shop implements vouchers but the ERP system does not implement vouchers. For Exact Online, it is now possible to upload the total price as calculated by the shop.
Exact allows its users to link a currency to a customer. The primary currency that is specified for the company is translated (through an exchange rates table) to the customer currency, if the latter differs from the primary currency.

Added Currency field to (Vendisto) Customer Export of Exact Batch Interface.
Updated to CustomerData Importer 2.2 format.
In the Basic version of Shoxl for Exact Online, items are classified by adding them to an assortment in Exact. With this extension, it is now also possible to choose item groups as the basis for classification.
In some cases it is desirable that order lines are sorted alphabetically in Exact. This is achieved by ordering them in the webservice that sends orders to Exact.
Hotfix for failing order upload to Exact
hotfix for ProtocolException that occurred for some orders when placing orders in ExactOnline
Payment link has been added to the library for our order confirmation e-mails
An order list would fail when it contained a not classified article. This has been fixed by not displaying these articles in an order list,
The filtering of article tables now supports the selection of multiple values for the same product property
The alternate delivery address interface in the order process has been split in two individual sections, address selection and address creation. Both sections can be switched on/off.
A new webshop setting 'SendAlwaysInternalOrderNumber' has been introduced. When this setting is set, we will always send the shop order number even it is non-PSP order
When the shop opens a stream to Raven it never disposes it. This let to a socket leak. This has been fixed.
The scan app now properly saves cookies on IOS devices

march 2023

release 2023.03

In march work started on a new Voucher API. This will allow the shop to check for the validity of vouchers that are entered, and to redeem them. Vouchers will be manageable by the shop owner through the Vendisto import/export feature.

Furthermore work continued on the various integrations with Mollie, Exact and Visma; and we polished the orderlist and invoice sections of the Account Portal.

 

A basic API has been made for voucher management. This is an internal API and not accessible for the outside world. The API is "lightweight", and allows the shop to check and redeem vouchers with minimal resource usage.
An optional ApiKey has been added to the webshopSetting: Security.ApiKey When the key has been entered all the API calls can only be access by giving the APIkey in the header. So it works on the authenticationAPI, tokenAPI and productAPI. More info can be found in Gitbook: section shoxlpro/product-api
It is now possible to refresh the API output by given the header Renew-Cache. More info can be found in Gitbook: section shoxlpro/product-api
A valid user is now mandatory for using the API. The user should have the role API to be able to access the API. More info can be found in Gitbook: section shoxlpro/authentication-api
The API now exports the absolute url's instead of the relative url's
The memory usage of the API has been improved.
When importing very large Excel files, it becomes necessary to see the import progress. For this purpose, a progressbar has been implemented.
Currencies where displayed on the basis of the portal language settings, instead of the customer currency settings
Order lists can have selection boxes, with which the subset of articles that a customer wants to add to a basket can be marked. When setting the amount to be ordered of an article, the checkbox is now checked automatically.
The related products sliders now supports "smooth sliding". Previously, the slider progressed step-by-step.
The stock check for the Article Selection Wizard has been aligned with the stocks checks on article detail pages.
The authorization dialog would no longer display a list of available profiles, this has been fixed.
Added CategoryMenu to Header layout options
The Content Builder has been extended with the option to place content that spans the entire screen.
When exporting PriceLists from the Exact Cache, the baseprice is now retrieved from the SalesItemPrice table when the standards sales price is used as the base for the discount of the pricelist volume discount record.
It is now possible to add category information in the API feed: Example: 1) Category_Path (E.g.: The category path like 'Computers/Desktops/Components/RAM' ) 2) Category_Level_X (The X will stand for the level, in the case we have four levels. We will have access to the properties): Category_Level_1 (Computers) Category_Level_2 (Desktops) Category_Level_3 (Components) Category_Level_4 (RAM)
To be able to process orders with shippingscosts a shipping costs article needs to be specified in Exact. To process discounts because of voucher codes, voucher items need to be specified. These Exact items also have VAT codes. The Exact batch interface should retrieve these items from Exact and make them available to the shop.
Mollie allows users to re-use previous payment methods. One-time customers that buy on a default debtor number should not get this option.
When an order has been paid, the payment link cannot be used anymore. In this case the shop will display a page with information.
Fixed bug in synchronization scripts that occurred when assetcategories are translated in multiple languages.
The Visma Cash interface has been extended with support for customer-specific prices and pricelists. The Visma inyterface is now fully operational.

februari 2023

release 2023.02

For the February release, the main focus was on further integration with Payment Service Providers, including Mollie. An important new feature in this area is the ability to enter orders into the ERP system only when the order has actually been paid.

Our development team also focused in February on finalizing the Product API, the import/export of article data, and the new visual content builder.

Furthermore, some nice improvements have been made in order list management, which allows customers to define lists for faster and easier ordering.

 

In the default Shoxl check-out flow, users arrive at a "Thank you for your order page" and can then proceed to a Payment Service Provider such as Mollie. When they complete their payment they are redirected to the shop and shown a "Thank you for your Payment" message. That is, if the payemnt is succesfull.

In the new default check-out flow, users are redirected to the PSP when pressing the Order button. So they skip the Thank You for Your Order Page.Furthermore, the handling of PSP states other than Paid has been improved. Payment states such as "Payment not yet confirmed by the Creditcard Company" or "Payment Cancelled by the User" now show a clear message when retuerning to the shop.
After selecting a date from the date picker pop-up (e.g. the deliverydate in the order proces) the pop-up would remain open. This has been changed so that the pop-up will now always be closed automatically when selecting a date.
The basket can now optionally display the GrossPrice and the discount percentage (as caalculated from the GrossPrice and the NettPrice).
Ordering items on an orderlist now results in a reset of the quantity field. Previously this field was not cleared. The amount is now reset to the minimum order quantity for the article.
The account portal now supports changing list names.
Editing the order lists contained an error that prevented a shop visitor to edit the list. Both removing articles from the list and removing an entire list no longer worked. This bug has been fixed.
Custom links in the userportal were not language-specific. This option has now been added.
When using the columns layout in the shop the state of menus displayed in the left and/or right column will nog be persistant. This means that a menu that has active (opened) menu items will remain open when loading a new page or when refreshing the current page.
When a customer logs in to a shop, the credentials (user id / password) are checked. This involves communication with the back-end software, which in some cases reacts slow. There is now visual feedback on this to the user.
We introduced a new framework for the import of article XML data that realises a dramatic performance improvement in the import time. The new framework was realised for a customer with a fast changing product assortment with multiple daily uploads of article data. Together with the import framework the Article Excel export was rewritten to use parts of the same new import/export infrastructure. The updated Excel export uses far less system resources than the old one.
An API endpoint has been created that serves customer-specific product data and price data.
The API can now spit our XML, CSV and JSON format
NettPrices are added to the fieldset of the API
The article property fieldset is added to our API
We can now create a custom output for our API. Per channel we can choose which fields we return.
Missing productvalues can now be complemented by a default value which can be setup in our plugin page.
The email engine sent empty nodes and null values in the template model to Postmark. This ensures that we render all fields automatically. This is not the intention. It is now built in such a way that empty lists and null values are no longer sent in the template model.
An option has been added that prevents the shop from automatically redirecting an article group page to the article page if the article group contains only 1 article.
When a youtube video asset was added to an article it would not be displayed on the article detail page due to a bug in the image gallery. This bug has been fixed.
In certain configuration the article table used to display and select articles in an articlegroup would display the nett price twice for logged in visitor. This bug has been fixed.
The article comparison buttons on article detail pages would be disabled incorrectly, resulting in the fact that the article could not be added to the article comparison. This bug has been fixed.
Assets are now manageable through a new asset manager
The new Drag & Drop contentbuilder now support Dynamic elements. These are elements that do not contain static content, but are populated with dynamic items such as products and news items. It is therefore now possible to include such dynamic items in pages build with Content Builder.
Our new Content Builder has been extended with support for Sliders.
The field Brand on the Article group Page is now optional in the Vendisto interface. It was already optional in the import/export.
The rights management module of Vendisto has been extended to also allow/disallow access to new functions and sections.
Created a fix enabling communication between Vendisto API and application build in .NET6

januari 2023

release 2023.01

Introducing the January release! We're excited to announce a complete overhaul of our Product API, giving you unparalleled control over your product feeds. With the new update, you can easily create feeds tailored to specific user groups and individuals, complete with personalized pricing and discounts.

And that's not all - we've also made significant improvements to our CSV upload feature. Now, large orders are processed in batches, making the upload process faster and smoother.

In the area of import/export of article data we have achieved a drastic improvement in efficiency by replacing our old code with a completely new framework.

And finally, our drag & drop editor is on the brink of public release now. We have added a slider component, support dynamic content, and added a new asset manager.

 

Experience the power of the completely revamped Product API! With our advanced technology, it's now easier than ever to create custom product feeds tailored specifically to your customers' needs. These feeds contain a carefully curated selection of products, complete with customer-specific prices and discounts.

Whether you need to create customer-specific price lists, product catalogs, or flyers, our Product API has got you covered. You can even deliver product data directly to popular marketplaces like Amazon and BOL.com! With our fully configurable feeds, you have complete control over the content, structure, and fields included in the feed.

Plus, you can create sub-assortments with ease by defining user access or attributes to products. Filtering and post-processing steps can be done using powerful tools like Zapier, where you can also perform transformations and scoping of feeds.

Our product feeds are available in Json, XML, and CSV format, and can be fully customized for each specific channel. With the ability to tailor feeds to individual customers, including their unique pricing, the Shoxl API is miles ahead of competing B2B e-commerce platforms.
Importing very large files (several hundrerds of order lines to the basket) resulted in some cases in time-outs. By processing these files in batches these errors are prevented.
In the default Shoxl check-out flow, users arrive at a "Thank you for your order page" and can then proceed to a Payment Service Provider such as Mollie. When they complete their payment they are redirected to the shop and shown a "Thank you for your Payment" message. That is, if the payment is successful.

In the new default check-out flow, users are redirected to the PSP when pressing the Order button. So they skip the Thank You for Your Order Page. Furthermore, the handling of PSP states other than Paid has been improved. Payment states such as "Payment not yet confirmed by the Creditcard Company" or "Payment Cancelled by the User" now show a clear message when retuerning to the shop.
The basket can now optionally display the GrossPrice and the discount percentage (as calculated from the GrossPrice and the NettPrice).
After selecting a date from the date picker pop-up (e.g. the deliverydate in the order proces) the pop-up would remain open. This has been changed so that the pop-up will now always be closed automatically when selecting a date.
When a customer logs in to a shop, the credentials (user id / password) are checked. This involves communication with the back-end software, which in some cases reacts slow. There is now visual feedback on this to the user.
We introduced a new framework for the import of article XML data that realises a dramatic performance improvement in the import time. The new framework was realised for a customer with a fast changing product assortment with multiple daily uploads of article data.

Together with the import framework the Article Excel export was rewritten to use parts of the same new import/export infrastructure. The updated Excel export uses far less system resources than the old one.
Assets are now manageable through a new asset manager
The new Drag & Drop contentbuilder now support Dynamic elements. These are elements that do not contain static content, but are populated with dynamic items such as products and news items. It is therefore now possible to include such dynamic items in pages build with Content Builder.
Our new Content Builder has been extended with support for Sliders.
The account portal now supports changing list names.
Editing the order lists contained an error that prevented a shop visitor to edit the list. Both removing articles from the list and removing an entire list no longer worked. This bug has been fixed.
Ordering items on an orderlist now results in a reset of the quantity field. Previously this field was not cleared. The amount is now reset to the minimum order quantity for the article.
When a youtube video asset was added to an article it would not be displayed on the article detail page due to a bug in the image gallery. This bug has been fixed.
In certain configuration the article table used to display and select articles in an articlegroup would display the nett price twice for logged in visitor. This bug has been fixed.
An option has been added that prevents the shop from automatically redirecting an article group page to the article page if the article group contains only 1 article.
When using the columns layout in the shop the state of menus displayed in the left and/or right column will nog be persistant. This means that a menu that has active (opened) menu items will remain open when loading a new page or when refreshing the current page.
Custom links in the userportal were not language-specific. This option has now been added.
The email engine sent empty nodes and null values in the template model to Postmark. When setting up a template, Postmark is able to hide sections with fields that are missing in the input. However, empty fields or fields with null values are rendered always, so we are not able to hide them in rendered mails.

It is now built in such a way that empty lists and null values are no longer sent in the template model.
The field Brand on the Article group Page is now optional in the Vendisto interface. It was already optional in the import/export.

december 2022

release 2022.12

Lots of interesting features in the december release. We mention some highlights.

The new release offers the option to postpone the sending of orders to an ERP until the Payments Service Provider confirms they have been paid. We are also able to handle delayed payments, as found with credit cards and some other payment methods. This is a much requested and complex feature.

The management of Order/Favourite Lists has been simplified: articles can now be added to such lists through revamped dialogues.

Work has started on the Visma Cash integration. Gross prices are available, other components will follow soon.

And finally, we have a beta release of a new drag & drop editor that allows marketeers to build beautiful responsive content in a completely intuitive way.

 

Introducing the latest feature of our ecommerce platform - the Lists module, a powerful tool for your customers to easily create and manage multiple lists of products. Whether they need to keep track of products for daily, weekly, or monthly orders, or for specific projects, our Lists module makes it simple and convenient.

In the short demo below, you first see the orderlist module in the account section. Next a product is added to the list, and the full list is added to the basket.



Adding articles can be done through a pop-up on the article page. For shops and portals that consist of article groups with each only one article the module can be plaed on the article group page.

Adding products to lists is effortless with a pop-up feature on the product page, and for shops and portals that consist of product groups with only one product, the module can be placed on the product group page. Your customers can specify the quantities they need in the list itself, or edit quantities in the basket.

As a Vendisto user, you will have the ability to view, compose and maintain lists for your customers, providing an added level of service, such as preparing a list of their favorite products before inviting them to place an order through your portal or shop. Upgrade your customer's ecommerce experience today with our Lists module.

This feature gives the possibility to redirect to the PSP after checkout completion, as well the possibility to submit the order to the ERP after a successful payment.

3 settings have been implemented:

  1. Default, the default flow.
  2. Redirect to the payment provider but the order has already been posted to the ERP. The redirect will only be applied if an PSP has been selected. In all other cases, the user will be redirect immediately to the success page.
  3. Redirect to the payment provider. The order will be submitted to the ERP as soon as the order has been paid. If no PSP has been selected. The order will be posted immediately to the ERP
For B2B companies, international trade is VAT-exempt. The customer has to pay VAT. However, when turnover in a country exceeds certain limits, a company has to register in that country, and has to pay VAT.

The shop now allows the merchant to have merchant addresses in multiple countries. If a customer orders from a foreign contry, the shop checks whether the merchant has an operating company (merchant address) in that country. If so, the applicable VAT is charged.

If not, the order is VAT-exempt.
The shop layout options have been extended bij 2 new options: we can now define a left and a right column. These columns will be displayed to the left and right of the main content and the header/footer. These new sections can currently contain the follwing page building blocks:

  • Header/Layout/Logo
  • Header/Layout/Menu
  • Header/UserMenu
  • Footer/Layout/Menu
An example of a left-menu set-up can be seen below.

Customer Article Numbers Search


On mobile devices, menu's that are placed in the left content section will show as a hamburger menu (stacked pile of fat stripes). Clicking the section will slide it into view.
The shop/portal now offers a choice for the formatting of round prices. You can opt for a dash (10,-) or for trailing zeroes (10, 00). A dash is not common in some foreign countries such as Ireland.
Visma Cash is widely used in the SME segment, primarily as an accounting package. Shoxl shops have a standard interface definition for ERP-systems, but was still lacking integration with Visma.

The Visma integration is now in the process of making. The first step, getting gross prices from Visma, has been finished. The full interface will be operational early Q1/2023.
Postal codes are standardized, but unfortunately not everybody implements the standards correctly. In this specific example, the standard says there should be a dash in Portuguese and Japanese postal codes. This is implemented correctly by SAP. However, when posting this postal code to DeliveryMatch (to calculate delivery costs and find the best carrier) the postal code is refused because of the dash.

We are now able to replace or remove specified characters in postal codes for specific countries, when posting to carrier selection software. The correct postal codes are still used for the ERP system (which otherwise would refuse them, sine they do not comply to the standard for postal codes).
Building content for different page sizes remains a challenging task, especially without a technical background. Ensuring that content renders in an optimal way on mobile, tablet and desktop screens requires knowledge of HTML, CSS and Gird Systems such as Bootstrap.

With our brand new Page Editor responsive content can now also easily be developed without technical knowledge. The editor allows marketeers to create beautiful content, just by dragging and dropping elements on the Page Canvas.

The new editor is currently in beta, and available to selected users only. We expect it to make it publicly available in the January release.
The Search bar in Vendisto became inactive after visiting the page found in a previous search result, and returning to the product list. In such cases, it was necessary to reset the full grid for a new search. This behaviour has been remedied.
The articleGroup tiles can now display the stock indication, This stock indication functions identically to the stock indications used elsewhere in the shop.
The search input will now display a "clear search term" button whenever a search term is present. When there's no search term present the button will be hidden.
If the Exact interface is configured to export the description field of the unit as the unit (UnitField == UnitField.Description) then no unit will be returned to Exact on the orderline when the unit description cannot be translated back to a unit code. The orderline will in this case be mapped to the default sales unit of the item.
The setting "ReplaceTrailingDashByZeroes" determines whether the shop displays round amount with a dash (€10,-) or with zeroes (€10, 00). However, the setting did not work correctly for amount that were rounded: €10, 0001 would be displayed as €10, 00 instead of €10,-. This behaviour has been changed.
The favorites list "order all" button now passes the selected quantities to the basket.
Fixed a bug in the synchronization of not classified articlegroups. These were not synchronized to the shop's cache.
The registrationform would not send the form as a result of a bug in the Recatcha related styling.

november 2022

release 2022.11

In de november release is het mogelijk geworden om eigen artikelnummers van klanten weer te geven, en om daar op te zoeken. Uiteraard werkt dit alleen als is ingelogd. Verder zijn er diverse verbeteringen doorgevoerd in de product bundel functionaliteit, en in de artikel selektie dialoog .

Vermeldenswaardig is verder dat het tempo waarmee releases worden uitgebracht vanaf december gaat worden opgevoerd. Van een maandrelease stappen wij over op een cyclus van twee-wekelijkse sprints. Hierdoor komen nieuwe functionaliteiten nog sneller ter beschikking van onze implementatieteams - en dus van u.

Added optional functionality that enables the shop to display the client-specific ordernummers on the article detail pages. This is also supported for the autocomplete and search functionality.

Customer Article Numbers Search


Created generic mechanism for synchronization of Exact entitities that cannot be synchronized via the Sync/Delete API. Implemented synchronization of CustomerItems to Exact cache. Exact Batch Interface now supports CustomerProduct export option. The ErpCache importer supports the CustomerProduct file format. Implemented an endpoint with which the shop can request the customer's own product number and can match customer product numbers with shop product numbers.
The article selection wizard had some issues with selecting articles where a user had no rights to (authorization). Support for options in the wizard with empty values has been added so that it is possible to select all available articles.
The functionality created to display article property values in the articlegroup overview was removed by accident and has been restored. Several bugs in this functionality have also been fixed.

Article Property Values on Article Group Overview Page


Solved bug that caused article group overview list to fail if both articlegroup and descending articles did not have an image.
Added optional feedback to orderbutton on article detail page.
The ASW AddToCart button now checks the Article.OrderMode setting
Fixed PriceUnit translation after CSV upload.
Added the Country Iso code for the external emailing
Add selection to basket button on favorites page now gives feedback to let the user know it's doing something.
SelectionInterface now works on mobile favorites list.
Filter results now properly use the default sort order.
The filtering couldn't handle reserved URL characters in a filter value, this has been fixed.
Fixed a bug that caused the delivery date filter to not be initialized correctly.
Fixed an issue that caused the "select all" controls to not work on the orderlist detail page
Fixed an issue with SlidesToScroll not working properly on small screens
Fixed fault in generation of ErpCache PriceLists that occurred when generating records for item type pricelists of PriceUnit based mapped Items for BeansCoffee.
Updated Exact Batch Interface in order to comply with new VATBoxLinkType.
Fixed exception that was caused by two active salesPriceListPeriods without enddate. The batch interface now takes the period with the last startdate as the active period.
Implemented use of HttpClientFactory when calling REST interface from Shoxl WebService in order to minimize socket usage.
Implementation of REST API GetCustomerProducts and MatchCustomerProducts endpoints.
Added functionality to retrieve an overview of the Item Assortments.
Fixed bug that in some cases occurred when requesting the customer's division while synchronizing data from Exact.

oktober 2022

release 2022.10

In oktober zijn "product bundels" geintroduceerd: artikelen die als set worden verkocht, maar die in het ERP systeem zijn opgevoerd als aparte SKUs. Een bundel bestaat uit componenten, waarbij de klant voor elke component een keuze kan maken uit de varianten binnen de bundel. Eerder gedefinieerde autorisaties werken ook op bundels, zodat klanten alleen bundels kunnen samenstellen uit componenten waartoe zij toegang hebben.

Fraaie en geavanceerde technologie dus, die inzetbaar is voor elke onderneming die te maken heeft met productconfiguraties.

With the new layout block ArticleComponentsOrderInterface it is possible to activate an orderinterface in which customers can compose a bundle.

Related Article Groups Slider


The articles that can be a part of this bundle are defined in the Shoxl PIM module. In this module you first define the component types, such as "Verpakking" in the example image. Then you define which articles should be shown as options for this component type.

Articles can be optional or required, and can have their own price which is added to the bundle price when the option is selected.

Articles have their own SKU, so can be available outside of the bundle also. There is no need to define bundles in the ERP system, articles are handled as individual items.

For all articles that are part of the bundle you are able to specify who is allowed to see and select them. This way you can show generaic options to everybody, and customer-specific ones only to selected customers.
With orderlists your customers are able to store multiple lists for a purpose of their choice. This could be to have lists of articles that are ordered regularly, lists of articles that are needed for specific projects - and so on.

Related Article Groups Slider


Order lists now also support Product Bundles. This way customers can quickly re-order specific configurations they need regularly.
Exact Online: It is now possible to configure the Exact Online interface in such a way that a new articlenumber is derived for each of the price units of an item (article) in Exact. Each articlenumber and title of the derived articles are extended with resp. the code and description of the unit in the sale price. The derived articles are exported to Vendisto and to the shop. Since the customer is able to define options for each product variant (article) in Vendisto this enables the shop to display different options for each of the Exact item's price units. When placing the order in Exact, the derived articlenumbers are translated back to the original item and price unit.
Not al ArticleRelatedType field would be synced with the shop.
The orderbutton would not be active whenever the article detail page was loaded with preselected components.
The layout of the accumulative discount information block on an article detail page has been improved.
- The possibility to add news items to dynamic lists has been added. - Added extra options to the slider implementation.
It has been made possible to set what information in displayed in the account menu link in the editor. It has been made possible to display the username and user emailaddress in the account overview and in the customer data step of the order process.
Updated Font-Awesome to version 6.2.0.
Added the gross price to the article selection wizard.
The main menu data acquisition was very slow and has been replaced by a much quicker solution.
The add and remove functionality in lists contained an error that has been fixed.
Added an optional login description resource which is displayed above the login button in the article selection wizard.
Fixed an error in the article selection wizard that kept the order button disabled or would enable it when it shouldn't.
Fixed an issue where the category order would ignore Vendisto order when no sort dropdown was present.
Fixed the from-prices on the article overview page. From-prices can be gross prices or nett prices
Fixed synchronisation of AssetType when synchronizing assets in the legacy synchronization mechanism. This bug in some cases caused the logo on a product variant to appear as main product image.
The article page can now contain a slider that shows related article groups (so not onlt related articles, but the groups they are part of)
Fix for bug that caused an error to appear in the browser console when the dynamic content functionality was not configured.
The added to basket popup now shows the correct total price when used in combination with AccumulativeDiscounts.
A wrong total basket amount was displayed when updating a quantity, this has been fixed.
Added translations for the CSV upload page resources.
The RemoteImagesEnabled config setting is now correctly removed when releasing
The order mail recipient functionality (to, cc, bcc) as it was implemented in the old mail solution has been transferred over to the new mail solution.
Small improvement in the way the shop calls it's background service.
Exact Online: Implementation of Exact Online sync/delete interface. The SalesPriceListVolumeDiscount records are needed for the generation of the pricelists for the ERP cache that is used for retrieval of price data by the shop. The old mechanism in some cases exceeded the API limits that Exact requires. The new sync mechanism reduces the amount of calls to the Exact Api and increase the speed of the generation of the pricelists.
For portal shops we export the article's image while replacing the original image filename with the articlenumber in order to prevent duplicate image names. Some ArticleNumbers however did not meet the requirements that Vendisto requires for the valid characters in a filename. These forbidden characters are now replaced by a dash characters in the image filename.
Added an extra null check to make sure the user management page doesn't crash when no authorization profiles are present.
The favorites list tried to display suspended articles, this shouldn't be possible and has been remedied.
The quantity input in the order list detail view would be disabled in some cases, this has been fixed.
Removing a bundle from an orderlist failed, this has been fixed.
ShopManager: SqlServer octopus variables are now written to common Shoxl.SqlServer variable set
Fixed an issue when trying to archive a knowledge item sometimes wouldn't remove it from the site.

september 2022

release 2022.09

In de september release is gewerkt aan het verhogen van codekwaliteit en het testen/controleren van de vele uitbreidingen die het platform in de afgelopen maanden heeft gehad. Even een pas op de plaats dus. Een release zonder spectaculaire uitbreidingen, maar met diverse maatregelen onder de motorkap die het platform plezieriger in gebruik maken en die de bedrijfszekerheid verhogen.

If configured in the UseInternalOrderNumberProvider configuration setting the REST Connector now uses the internal OrderNumberProvider.

Use of the internal OrderNumberProvider can be a solution if the ERP system cannot provide an ordernumber in a timely manner.

The OrderNumberProvider now supports a prefix in the ordernumber and leading zeros in the number part.
Fixed some problems that prevented showing the backorder overview in the account portal. Also any open orderlines are now considered to be backorderlines. This is done in the mapping of Exact Globe field values to shop order line states.
Fixed an issue that caused an error when placing an order with orderlines that have an asset without path.
Added validation on length of HouseNumberAddition field when importing customers
Fixed duplicate key error that in some cases occurred during cleanup of ArticleGroups in the synchronization process that is executed after article import
Fixed error that occurred when validating article import while checking on existing gtins with double presense of gtin in database
Fixed bug that was caused by a bug that occurred when building the classification menu.
Category overview pages can now be filtered. In the past this was only possible for view-overrides
Fixed an issue with the quantity selector not working properly on list views
Fixed an issue with labels being shown at articles they did not apply to on the article group overview
Fixed an issue where the order button would enable if the quantity was changed.
Fixed a timing issue with the eye icon (staffels) in the article table.
Html tags in the recently viewed description are now properly rendered.
Fixed an issue where the article detail page would show an empty properties tab
Fixed an issue where the article detail page would show an empty properties tab
Fixed an issue that caused the shop to still check for restricted articles when this was turned off in the basket.
Selecting pickup without any pickup points will now set the address of the merchant as pickup point.
Changed the way ReturnUrl works when logging in to prevent some 404 pages from appearing when logging in.
Fixed an issue in the filtering logic where filter options would disappear when refreshing a page with selected filter options.
Several bugs in the filtering functionality have been fixed.
Fixed an error that would occur when signing out with an expired session.
- Fixed an issue with prices that are above 999.99 in the restricted order list.
Implemented cache buster for base_bundle scripts.

augustus 2022

release 2022.08

Deze maand is besteed aan een verdere optimalisatie van het check-out proces met nieuwe functies zoals een minimum bestelbedrag, en geavanceerde zaken als een andere afhandeling van afrondingen voor bedragen inclusief en exclusief BTW.

Een van de meest gewaardeerde functies binnen het Shoxl platform is het Account Portal - het deel van de winkel waar uw klanten toegang krijgen tot hun data in het ERP systeem. Denk aan de bestelstatus en bestelgeschiedenis. Dit veelgebruikte deel van onze oplossing is grondig gecontroleerd, als onderdeel van ons reguliere Quality Assurance proces.

En tenslotte is in augustus tijd besteed aan het uitbreiden van Vendisto met nieuwe functies voor het beheer van de soorten relaties tussen artikelen. Check it out!

Created a new layout component: RelatedArticleGroupsCustomizableSlider.

Related Article Groups Slider

Prices are now also hidden on the article group overview page if the article has a property that's in the GrossPriceBlackList setting.
Fixed some issue in the logic that can hide the crumbpath on StructurePages.
Fixed bug that prevented the return of stock data from the ERP Cache for products without PriceList or CustomerPrice data
The order interface wasn't loaded correctly on the initial page load; this has been fixed.
The original value order would disappear when rendering the article selection wizard UI. This issue has been fixed.
Fixed a timing issue with the eye icon (staffels) in the article table.
The logic in the article selection wizard that enabled the order button contained an error that has been fixed.
Staffels will now always be used if the webshop staffel webshop setting is set on True ánd the webservice / Raven will give back staffels
Fixed an issue which caused the article selection wizard to not work for MagicFX
In some cases the property value unit wouldn't be shown on the article detail page; this has been fixed.
The favorites button in the article selection wizard UI was always enabled; this has been fixed.
It is now possible to skip the Delivery Selection Step if no Delivery methods are found. This means: no delivery will be connected to this order. Also a new resource has been introduced for this functionality: DeliveryOptionsUnknownButCanBeSkipped.
It has been made possible to use HTML code in the step indicator text.
Created two new setting which replaces the old setting: ShouldRoundOrderLine
1) ShouldRoundOrderLinePriceIncludingVat
2) ShouldRoundOrderLinePriceExcludingVat
So we can now setup that we should only round the vat price or only the price excluding vat. This was not possible in the old situation.

More documentation can be found in the Settings manager tool.
With this feature it is possible to setup a minimum threshold amount value for the basket. An user is only able to order if the threshold is met.

If a shop uses prices including VAT, we would like to see the threshold price including vat. To be specific, if the setting Price.ShowPriceWithTax is set to True, In this case, the shop will automatically calculate the tax for the MinimalOrderAmount. So if you have a MinimalOrderAmount of 100 euros and the average tax is 21%, the shop will setup the threshold to 121.

In some cases this is not desirable; you can get a threshold value with a comma. If you do not want a calculated value you can setup the MinimalOrderAmountIncludingVat. In this case the shop won't calculate the MinimalOrderAmount with the vat but directly uses the MinimalOrderAmountIncludingVat.
Fixed a bug where the basket totals information would not be updated if the basket was emptied completely;
Meta properties can now be shown and updated inside the basket layout. Some improvements to the basket update procedure have also been made.
The Vendisto webservice will now return the correct TotalPrice.
When the basket was emptied not all summary items would be removed; this has been fixed.
The CSV upload confirmation page now has a sorting option and an optional order button per article.
The UI now has some more options to communicate to the user that the upload is being processed.
The UI for a CSV upload result didn't make sense when the list was emptied; this has been fixed.
Some improvements to the CSV confirmation UI have been made.
Minimum order quantity will now be used from the MinimumOrderQuantity field unless the staffels has more than 1 records
Fixed a bug in the CSV confirmation page "select all" functionality.
The page will no longer jump to the top after clicking the add to basket button. A minor issue in the selection ordering functionality has been fixed.
The new user menu did not take rights into account; this has been fixed.
The order logic in the orderlist has been improved.
Invoices now work with the ERP cache; this did not work anymore.
Fixed a security issue in the Vendisto webservice
The order confirmation mail can now also display PBG images. A fallback to ArticleGroup images has been added for articles without an image.
Exact Online: Repaired recently introduced bug that prevented partial export of both ErpCache customer XML and Vendisto customer XML files.
Exact Online: Fixed bug that caused Exact interface to return a stock position with 0 in combination with a stock indicator code set to InStock
When the last selected filter option in an overview was deselected the entire page would be refreshed producing undesirable affects. This has been changed in such a way that the refresh no longer occurs.
Displaying the filter pills in search results contained an error that has been fixed.
Fixed a bug hat broke the filtering if the user would sort the page after selecting a filter option.
Implemented cleanup of old prices after a full import of customer-specific prices in the ERP Cache
On the newsoverview page: The searchterm; the facet and the currentPage are now persistent after resorting the page
Tax will now be returned by doing calculate order. So thins like shipment costs will now get a tax percentage
Datacontract extension: Order.ShippingExternalid & Order.BillingExternalId
Some changes have been made to make the articlegroup detail page to make it less susceptible to errors while retrieving price information. A bug in the list sort logic caused by reserved characters in the searchterm has been fixed.
The filter column in search result would not be displayed in certain cases; this has been fixed.

Shoxl offers the option to define the types of relationships that can exist between article(groups). Examples of retionship type are 'complementary' of 'alternatve to'. An interface to edit these relationship types has been implemented in Vendisto.

Management of Related Article (Groups)

juli 2022

release 2022.07

De focus voor deze maand lag op de artikel(detail)pagina: de pagina die voldoende overtuigend moet zijn om uw klanten op de bestelknop te laten drukken. In de juli release is deze artikelpagina op een fors aantal vlakken verbeterd en uitgebreid.

Als een klant besluit om te kopen, moet het afrekenproces zo soepel mogelijk verlopen. Elke onnodige actie kan leiden tot een verlies van conversies. De release van juli biedt onder andere de mogelijkheid om de stappen voor het selecteren van de leveringsmethode en de betalingsmethode uit te schakelen wanneer deze al zijn vastgelegd in het ERP systeem.

Het vermelden waard zijn ook de toegevoegde functies aan de Exact interface. Shoxl ondersteunt nu ook de Exact "Factuur Naar" functie, waarbij prijsafspraken van de holding worden gebruikt wanneer een dochteronderneming een order invoert.

The shop already supported the possibility to place multiple CustomOrderFields on an articleDetail page. The VisibilityHeaders property has been deprecated and is therefore no longer used. The shop now looks at the 'name' of a CustomOrderField and whether the 'name' matches the Id of one of the properties of an article that custom field will be rendered.
The article selection wizard can now display the order list UI and the favorites button when there's a single article result and if one or both of these options have been enabled in the WebshopSettings
The crumbpath has been made available as e layout element for the ArticleGroup en Article layout. Using this layout element will lead to the default crumbpath not being rendered.
Article selection wizard order button now follows the same behavior as the rest of the shop
The article selection wizard now has an icon display mode which shows the value icons instead of the text.
Made sure the article selection wizard skips non-wizard parameters preventing faulty results.
Repaired an issue in the sorting of search results if the search results contains reserved characters.
When Payment Terms are agreed documented in the ERP system and Customers do not have an option to choose between payment methods the Payment Method Step is superfluous. It is now possible to skip the Payment Method Selection Step during Check-out.
Added the possibility to add costlines on an article. As well the possibility to add articles on an orderline.
The payment method selection page in the order process can now display optional text for each option. To enable this it has to be enabled in the WebshopSettings and the corresponding resources have to be added to the Raven database.
Added a setting for setting the default delivery method in the checkout process.
Rewritten the threshold class. Regional threshold should work now as well
The basket contained a bug when multiple VAT percentages where present in the basket articles.
Exact offers the option to use the price agreements of a holding company when ordering as a subsidiary. This is known as the Exact "Invoice To" feature. In such cases Invoices are sent to the Holding the price agrements of the holding are used but the order is entered by confirmed to and delivered to the Subsidiary. The function is triggered by filling in the Invoice To filed on the Exact Customer card. This feature is now fully supported.
For situations in which customer-specific shipping methods are defined in the ERP it is unwanted to replace such agreement with the default ones as available in the shop.
Default shipping method is no longer added to the order when placing an order in Exact if not configured or if exact code is left empty. It is no longer required to define a mapping for a delivery method. The order will in such case fall back to the shipping method as defined in Exact for the customer.
CustomerPrices export now exports only active customerprices
The performance of a number of overviews has been improved by speeding up the retrieval of information stock and order information and by changing the way certain UI elements are being rendered.
Related articles now correctly use the "Position" field (from vendisto) to decide the order of the related articles.
The order interface wouldn't work anymore after selecting a filter option.
The article list order UI contained some scripting errors.
Fixed a bug in the article overview the favorites button would not work after filtering the overview.
The article selection wizard will now display stock information if available as soon as there is a single article result.
The article selection wizard can now display the values in the various wizard steps in either the default order or in a natural sort order.
Fixed a bug in he properties list where a property value would be split into 2 separate string whenever a "" was presetn
Gender has been added to the Account registration mail
The mobile filter view sometimes wouldn't display the filter contents when toggling it multiple times.
Added various new html information resource blocks
Main content blocks now have a category specific class for easier styling.
The orderlist detail screen now has support for sorting and for the selection interface.
The orderlist handled the minimum order quantity for articles in the list incorrectly this has been rectified.
An option has been added that checks locally stored orders to filter out cost lines when reordering.
The REST interface now supports Return Orders. If implemented and configured Return Orders will be displayed in de user portal.
Fixed duplicate key problem that occurred when importing articles with EnableArticleGroupSplitting import setting set to false (N)
Fixed Exception that occurred when optional ToQuantity element was missing in CustomerPrices import
Fixed bug bug that prevented the shop from getting the stock data from the ERP Cache in a hybrid webservice configuration where ERP Cache data and data from the realtime ERP webservice are combined.
Fixed an issue that caused the "add sub classification node" button to never be active.

juni 2022

release 2022.06

Een nieuw menutype voor het catalogusgedeelte van uw winkel; nieuwe elementen in de Shoxl lay-out taal; nieuwe opties voor het filteren; nou ja, te veel om op te noemen in deze juni release.

De algemene noemer van alle werkzaamheden: uitbreiding van onze lay-out taal tot een uitgebreide toolkit waarbinnen de meest complexe pagina-indelingen mogelijk zijn, zonder dat dit de noodzaak tot maatwerk met zich meebrengt. Upgraden van de Shoxl Core naar de nieuwste standaard blijft dus altijd mogelijk zonder herbouw.

Een oplossing die volledig op maat is zonder de nadelen van maatwerk - wie wil dat nou niet?

Mega Menu Element of Layout Language



The Mega Menu is a new element in the layout language, which can be added to the Header Section.

Of the menu items only the item which is linked to the product catalogue will actually expand. The other items will be normal links.

The element has the following properties:
  • CatalogueIsClickable (bool): can be clicked on "products" (for navigation). Default: false.
  • CatalogueCustomLink (string): A custom link (in combination with `CatalogueIsClickable = true`) that will be navigated to. If empty, the default will fall back to the standard catalogue page. Default: empty.
  • DisplayTypes (array): An array containing all top-level classifications to be displayed, and how the child classifications should be displayed. Each top-level classification will be a json object containing the following properties:
    • ClassificationId (string): The ID of the classification.
    • DisplayType (int): How the child items should be rendered. This number will map to an enum. Possible values at the moment: 0 = list, 1 = images.
The main menu of type "MegaMenu" now hides dupllicate items, meaning that a child items menu containing just 1 items with the same name as the parent will no longer be displayed.
The classification menu did not check for authorization when rendering the menu, this has been fixed.
Added StaticLists to CategoryPage, news detail page, news overview page and the basket overview page
The dynamic lists did not check for the current language, this has been added.
Refactored some javascript related to the video player.
Implemented a new "GrossPriceBlackList" setting. This setting will hide the gross price from visitors that are not signed in, based on an article property. All articles that have this property with a value that's defined in this setting, will have their gross prices hidden from visitors that are not signed in.
A new category menu has been added, containing links to the children of the active category.
The category title will be displayed instead of the name if the title has a value. If no value is present the name will be displayed.
Added synchronization of filter properties on classification node to FastSync functionality.
The article selection wizard now supports 2 different behaviors: strict mode and flexible mode. In flexible mode, it is possible to select properties that have become unavailable with a chosen value for another property. If an available property is selected, all values of other properties that are not available anymore will be deselected.
The performance of the shop, and specifically the ArticleGroup page has been improved. Aim of these improvement was the shortening of page load times.
Bug fix, the fast sync did only support images type and not documents. From now on, the document mimetypes are supported as well
Added a new resource which will be rendered as description in the downloads section of articles, if filled.
The sort option in the basket has been changed to enable more styling options.
It is now possible to add optional page titles to the order step pages, the title will be displayed above the payment step indicator.
The order history detail page can now display shipping costs provided by the webservices.
Reorder now correctly sends the debtor number with it's requests.
In the search results the sort UI would disappear after selecting a filter option, this has been fixed.
The autocomplete didn't work for shops using authorization, this has been fixed. Another issue was that sometimes the wrong image would be displayed in the results, this has also been fixed.
News overview filters now correctly sort when sorting by alphabetical order.
The static list slider now support options for infinite scrolling and draggable navigation.
Bug fix. Signed in users will now get the correct delivery cost amount
The shop no longer tries to get article group prices on a page that doesn't have any article groups.
Fixed a bug that caused the logout button to do nothing on certain pages.
Introduced extra settings in the Exact Interface in order to convert the tax percentage from Exact to the VAT code that the grossprice XML interface defines.
Portal: The Exact interface can now be configured with an export language. If a translation of an item description is available in the configured language then this translation will be exported as the article's title in the Portal.
Added PaymentConditionsXml to Exact Online deployment configuration
An option has been added to the number of units within a package unit, e.g. the number of articles in a box. This value is shown throughout the shop and all communication. The communication protocol with SAP had to be changed to accomplish this. ,Kristian Jacobs
SAP: SmartLynx connector now supports GetProductInformations function that returns prices for multiple products in one call.
Article Excel Export in EZ-base format. The EZ-base export format is only selectable in Vendisto if the customer has the EZbaseExport license. If the EZ-base export format is selected then the options to export suspended or deleted articles are no longer available. Only active articles will be exported.
A bug was fixed that in some cases occurred when requesting the article stocks in the checkout process
Improved ShopManager in order to ensure that ErpCache DatabaseUgrade will be executed on deployment.
When no telemetry is configured the AutomaticShopImporter now logs only this only once.

mei 2022

release 2022.05

De mei release introduceert met de introductie van Custom Content Blocks nóg meer layout vrijheid. Custom Content Blocks kunnen vrij worden geplaatst op catalogus pagina's, en worden beheerd in Vendisto. En dat is niet de enige winst op layout gebied in deze release: ook voor artikeltabellen, de winkelmand en nieuwspagina's zijn de layout opties uitgebreid.

De Shoxl toolkit om pagina's te definieren die volledig klantspecifiek zijn, zonder ook maar één letter te hoeven programmeren, en zonder ook maar enige concessie te hoeven doen aan onderhoudbaarheid, wordt dus steeds beter gevuld.

A new solution has been implemented enabling the addition of custom tags to the layout of categories, articlegroups and articles. An unlimited number of tags can be configured. Each tag can be given HTML content in Vendisto, either in the Vendisto UI or via a new import/export. The tags can be placed anywhere in the Layout of category, articlegroup and article.

Custom Content blocks



The layout of the basket page can now be changed via the LayoutSettings. Blocks can be moved around, and the option to use more columns to position content items has been added.

Custom Content blocks



Furthermore the basket itself can be fully configured through the layout language, for which purpose new elements have been added to the syntax.

Custom Content blocks



The search result sort UI has been made more flexible by adding it to the LayoutSettings and by creating a mobile specific view for it.
The article group table now supports displaying a stock indicator.
Added "ShowLabel" and "DateFormat" properties for news item author and publication (detail and tile)
Created a new MollieSetting: SendPaymentMethodToMollie. This default value of this setting is True.
True means: We will send the selected paymentMethod to Mollie
False means: We won't send the selected paymentMethod to Mollie. The user has to select a payment method in Mollie
Basket sub rows will now shows four decimals instead of two
Bug fix in delivery costs calculation. Also fixed the total order lines amount
When clicking the plus/minus buttons in the order UI the entire quantity UI will be disabled until the call has been handled and returned a result to the UI.
A mobile-specific display for shops using the new layout for the user menu has been added. This new display consists of a button opening a dropdown menu containing all the account options.
The Youtube video player has been replaced by a more modern implementation with support for responsive screens. This new player also supports the standard Youtube controls for a video.
Fixed a bug that caused the article table to have an extra column.
Fixed a bug that caused the filter order to change when applying a filter.
In some cases the items in a saved basket would be duplicated every time a user would log in again. This issue has been fixed.
Bug fix in the new gross prices. Null values were not checked correctly
The import of grossprices now uses the bulk facilities of RavenDB resulting in an more efficient import process. Changed internal structure of the price model of the shop in order reduce data load.
The RavenOrder and the External email do now have a fallback for the user name if the name is not available. If not available, it will retrieve the customer name
Delivery costs and disposal fee will now get it's own product number. In the past the create order did not create a product number for disposal fee/delivery costs
Added OrderLineType to OrderLine on OrderHistory. This enables users of the ErpCache to display shipping costs in the Order History of the account portal.
ShopManager is now able to install a local SQL database on the webserver
Fixed bug that caused the wrong discount price to be shown in the basket.
Changed custom transformation of ErpCache CSV to XML file in order to fix unexpected cleanup after importing partial ErpCache PriceList file.
Fixed bug that occurred when upgrading the ErpCache database
FastSync: Article references in ArticleGroup document are now ordered on Position when synchronizing to shop

april 2022

release 2022.04

Een release voor de liefhebbers van de nitty-gritty details, zo kan de april release het beste worden omschreven. De release omvat een veelheid van kleine functionele verbeteringen en uitbreidingen. Voorbeelden daarvan zijn de mogelijkheid om nu ook kostencomponenten toe te voegen aan artikelregels (heel nuttig bij verwijderingsbijdragen), een nieuwe layout voor filtering op mobiele apparaten, de mogelijkheid om artikenmerken te verdelen over meerdere kolommen, de mogelijkheid om te werken met meerdere bestellijsten in het klantenportaal....

En meer van dat soort zaken. Kleine dingen waarvan u in de praktijk heel veel plezier zult hebben, want zoals men zegt: "the devil is in the details".

The possibility to define costs per OrderLine has been added. This information will be added to the basket by the CalculateOrder functionality that was added in an earlier release. Any costs will be displayed in the article itself in the basket and as a total in the calculation in the bottom of the basket.
The ArticlePropertiesList table will now always render 1 column on mobile devices.
The articlegroup footer description has been added to the LayoutSettings.
The display for round prices was inconsistent as a result of price rounding issues, this has been fixed.
A new article layout element has been added enabling the configuration of a properties table on an article detail page. The number of columns and the read direction can be configured for this new element.
The price logic has been improved by the introduction of a separate field for the amount with which the quantity of an article can be incremented. br />
Several small technical improvements have been made to the order UI and the CSV upload logic.
The article list filters stopped working dus to a bug. This has been fixed.
The default category layout contained some issues that have been fixed.
Added the user menu to the csv upload confirmation page, changed the way the user menu is loaded on the csvupload page to bring it in line with the other account pages.
The order unit column has been added to the favorites list and the order lists.
Fixed an issue that caused the "select all" to be unresponsive on a basket refresh (after changing the basket)
The empty basket message wasn't shown in all cases as a result of a bug.
Changed the static list slider breakpoints to be in line with Bootstrap breakpoints.
The breadcrumb path can now be displayed for non-classification pages like news, wiki and structure pages. This is an optional feature to maintain backwards compatibility.
Fixed an issue in the list scripting that caused issues when multiple lists on a single page where being used.
A new filtering layout specific for mobile devices has been added.
The redirect module in the shop didn't work due to a logic issue.
The news overview page, news detail page and news tiles have all been added to the new layout.
Fixed a bug that caused the news pages to ignore the default layout.
The standard account menu options have been implemented in the orderlist pages.
Added the option to open the order history details as a new page instead of a dropdown.
Added classes to the user menu list items for styling purposes.
Made some minor changes to the OrderList page for styling purposes.
Fixed an issue that caused the favorites page to display an error message.
The favorites list had some issues when using the new layout options. These have been fixed. An issue where the price couldn't be displayed in some cases has also been fixed.
Improved mechanism on which Exact Batch Interface respects minutely download rate limit
A failing order for passer by users lead to creation of multiple equivalent accounts in Exact. This behaviour is changed to just one account.
Fixed NullReferenceException that occurred when placing order for DefaultAccount
A performance improvement was introduced in the cleanup of old pricelist records
A bug has been fixed in the new sync
When checked, the "Delete not imported properties" checkbox at the article import now deletes the not imported properties. Due to a bug this was not the case.
Fixed unknown error that in some cases occurred during the validation phase of the import when importing customers in Vendisto.
Removed restriction on customer import that imported user cannot have a blocked state.
A memory leak in Vendisto has been plugged, resulting in better performance and a slightly better initial load time.

maart 2022

release 2022.03

Met de afronding van de implementatie van onze Layout Language bereiken we in de maart release een mooie mijlpaal. In deze taal beschrijven we de structuur van pagina's die u in de shop vindt. Denk aan een productpagina, of aan de winkelmand pagina.

Met ingang van de maart release zijn alle paginatypen nu ondergebracht in deze taal en daarmee flexibel inrichtbaar. Ergens een infoblokje nodig? Een lijstje met gerelateerde productgroepen? Bepaalde producteigenschappen ergens gebundeld laten zien? Met de nieuwe layout language is dit allemaal niet meer dan het aanpassen van een paginabeschrijving. Kortom, vrijwel ongelimiteerde mogelijkheden voor onze Enterprise klanten.

Op integratiegebied lag de focus deze keer op details, zoals het volledig gelijk trekken van onze shop calculaties met de BTW calculatie en wijze van afronden in Exact. Het gaat een beetje tegen onze architecturele principes in, maar soms ontkomen we niet aan het dupliceren van wat ERP-functionaliteit in het Shoxl platform. Op het gebied van BTW en afronden heeft elk ERP pakket zijn eigen aanpak, en die is vrijwel nooit duidelijk gedocumenteerd. Maar we lopen inmiddels, in goed overleg met Exact, weer helemaal gelijk.

The ArticleGroup detail page now can be configured with a flexible values overview displaying all the property values of all the articles in the ArticleGroup. The values will be displayed as a comma separated string in the table.

The number of columns in this overview can be configured. It is also possible to set how the columns will be rendered. You can choose between from left to right and column by column (default).

When the article selection wizard is being used the option exists to let the wizard result filter the values being displayed in this overview. Selecting a value in the wizard will result in property values no longer applicable disappearing from the list.

Implemented the option to show article properties in related articles tiles.
Implemented an "information" element for the group article pages
Implemented page anchors for the Article page and Article group page.
Properties set as ignorable will no longer be shown in the article properties.
The core shop now support layout settings for the category pages. This layout can be defined in the Raven database.
The basket layout can now be altered from the LayoutSettings.
The remaining order quantity in the basket preview contained an error resulting in the wrong amount.
The CSV order upload option has been made more user friendly. Some bugs have also been fixed.
After adding a selection from the favorites list to the basket the feedback defined in the WebshopSettings will be displayed. All selected items in the favorites list will be unselected after adding them to the basket.
The quantity input in the basket didn't function exactly like the quantity input on the article detail page, this has been fixed.
Added optional extra fields for personal details to the delivery address form.
Delivery country code has been added as optional parameter to the function Calculate order.
All of the checkout steps are now available in the new layout configurations.
Payment discount rules would remain in the basket after placing an order while rules like that should be removed at that point. This issue has been fixed.
The order(line) / basket(line) calculations have been rewritten so it can round on orderline level on both tax as ex tax level.
Payment discounts are now calculated correctly.

Created two settings for correct order(line) calculations:

1)ShouldRoundOrderLine
Round the orderline instead of the whole order. The rounding precision has to be setup in the setting RoundingPrecision. If the RoundingPrecision is not setup, the setting will work but with it's default value five.

2) RoundingPrecision
A number between 0 and 5. This number will stand for the rounding accuracy on orderline records.
Works only if the setting ShouldRoundOrderLine is activated.

A third setting has been made so we will not get the payment provider price from Vendisto
3) UseWebserviceAsDataSourceForPaymentProviderPrice
Defines where the order price should come from for the payment provider. This setting only works when using the webservice mode 999
True = We will do a request to the webservice to retrieve the order price. This means, it can go to the ERP or Vendisto
False = We will get the order price from RavenDB
Fixed an issue preventing the StaticList to be rendered from a custom tag in the HTML.
Fixed a bug that prevented ordering articles from a list in some implementations.
- Menu classification drop down restyle - Removed double named classifications - Dropdown in menu is styled red with white text
Activation form will not be shown anymore if the post was a success
Password fields will not be shown anymore if you submitted the form correctly
The selection interface allows users to selects a subset of the Favourites List, and Add the selected items to the basket in one click. This selction interface can now be anabled and disabled.
Added the option to show a description on the backorder overview page below the title.
Added the option to show a description on the invoice page
Added a setting to show or hide the header user menu dropdown. When the dropdown is hidden, the user will be directed to the account overview page.
The top level of the order history screen can now also display help icons.
Fixed a bug that caused the favorites list to show an error when the list contained a product without a price.
Fixed an issue that caused the quantity selector in the favorites list to have a wrong initial quantity, which was sometimes lower than the minimum order quantity.
The CSV upload from the account page now uploads a selected CSV file immediately, the separate upload button has been removed.
Implemented the option to filter news on facet or a search string, or sort news by title (alphabetical) or publication date.
Implemented the news sort dropdown html and functionality
Added the newscategory filtering to newsoverview
Added search filter element to the news overview page
The HTML of the knowledge items overview has been extended to enable more styling possibilities.
The contact information as entered on the delivery alternative address in the shop is now translated to a contact in Exact Online and coupled to the delivery address of the order. Next to name also the email address and phone number are stored in to the Contact.
Added UnitField setting to Exact Batch Interface. This setting defines which field (Code or Description) of the Unit is to be exported in the Gross Prices and ERP Cache PriceList and CustomerPrices XML.
If this functionality is configured in the settings of the Exact Batch Interface, the article (item) images that are uploaded in Exact Online are now exported in a (set of) Asset_Image.zip file(s) next to the Article XML export.
These assets are automatically imported in Vendisto and made available as article images in the shop.
The "extra description" field of the item in Exact Online is now also exported to Vendisto and can be found in the Description field of the product variant. The export of the extra description only works if this is configured in the settings of the Exact Batch Interface.
Costlines with 0 shipping costs are no longer sent to Exact Online
Fixed error that occurred when creating account in Exact Online for a passerby user. If the Exact Batch Interface is configured to create accounts for passerby users, the interface will now create a new account per order.
Added ShippingCountry to CalculateOrder REST API
Added import settings ArticleGroupDefaultTitle and EnableArticleGroupSplitting to the article XML import.
The ArticleGroupDefaultTitle can be set to Undefined (this is the default value) or to ArticleNumber.
If set to ArticleNumber this setting specifies that for new articles the ArticleNumber will be used as the title of the ArticleGroup when creating an articlegroup for the article if no Title element is present on the ArticleGroup XML.

If EnableArticleGroupSplitting is set to to Y (default value N) the article import requires that all of the articlegroup's articles are present in the article group node in the XML import. Articles that are not present in the node will be split from the articlegroup after updating the article.

The default behaviour of this setting will in most cases be the expected behaviour. Leaving this setting tot N will enable the update of a single article with XML coming from the ERP without splitting the article from the articlegroup.
Implemented DeleteNotImportedProperties as extra setting for article import. The settings is used in both article XML import as well as article Excel import. An extra checkbox was added to the article import view in Vendisto. The checkbox "Delete not imported properties" is default not checked.

The default behaviour of the article import used to be to delete all not supplied properties from the database. From now on this is only done if the "Delete not imported properties" option is checked or if the ImportSetting "DeleteNotImportedProperties" is set to "Y" in the article XML import.

It now is also possible with the Article XML import to update an article property without having to give the article group name. The Article XML import behaved different than the Excel import.
The customer's incoterm that can be shown in the user portal contained a three character database limit. The field's limit is increased to 255 characters.
SAP will now return the CurrencyCode in an order. The shop has been changed so it will sent the currency code from the order instead of the setup currency in the shop. If the order does not have a currencyCode we will fallback on the currency which is setup in the shop
Articles that have a discontinued state in EZ-base are now set to LifetimeState Active instead of to Suspended when beïng imported into Shoxl.
Added Currency and Incoterm fields to customer Excel import. The fields only appear in Excel if the currency and incoterm licenses are configured for the Vendisto user.

februari 2022

release 2022.02

De kortste maand van het jaar, maar dat is op geen enkele wijze zichtbaar in het aantal nieuwe features in deze maandrelease. We tellen er meer dan 30, waarvan het merendeel in de shopping en portal modules.

In deze release is het check-out proces fors onder handen genomen. We zien hier nieuwe mogelijkheden als het in bulk muteren van de winkelmand en het toevoegen van additionele informatie op orderregelniveau; maar ook een verbeterde performance zodat winkelmandjes met enkele honderden orderregels probleemloos kunnen worden verwerkt.

Zoals vorige maand aangekondigd is verder druk gewerkt aan het afronden van ons werk aan het bestelportaal. Hier zien we nu een vast menu op alle pagina's in desktop view, en een dropdown op mobiele platforms. Daarnaast is het bijvoorbeeld mogelijk geworden om een selectie te maken uit de favorietenlijst en deze in één actie toe te voegen aan de winkelmand.

Op integratiegebied lag de focus opnieuw op Exact Online. De interface met dit pakket is al uitstekend op orde, maar nu nog verder uitgebreid met een aantal gevanceerde ainstellingen. Verder zijn ook de interfaces naar SAP en Exact Globe op enkele punten uitgebreid.

The basket can now display an item selection interface. This interface consists of checkboxes per item in the basket, a select all and a remove selection option.
The basket now has the option to display a sorting interface. This interface displays a dropdown with some default sorting option (date added, name, articlenumber), both ascending and descending.
The shop can now display text fields with specific articles. If the text field is active in the shop it will enable a shop user to provide specific extra information with an article. This extra information will be passed to the back-end in the OrderLine information.
The checkout process pages can now optionally omit the left column (containing the basket summary). In Shoxl shops it is not uncommon that orders contain 100+ order lines. In such cases this summary is not very handy.
Phone and email will now be posted as well do Delivery Match even when you are signed in. This was not the case in the past
Fixed an issue that caused certain javascript files to throw an error due to the order in which they were loaded.
Fixed a bug that occurred when the shopping basket with a large number of different articles (over one hundred) was retrieving prices from Vendisto.
The filter functionality can now show the active filter options above the article group overview in the form of small containers. The containers contain the selected option value and a button that can be used to unselect the filter option.
Added the option for shops to have a custom html block under the filters / left menu.
The Shoxl Layout Language defines the content of pages. On the basis of the Layout Document which is written in this layout language the page HTML is generated. It is now possible to also define the news overview and news detail pages in this document. Previously News Overview and News Detail Pages were based on fixed templates.
Added checkboxes to the favorite list to allow bulk actions such as adding to basket or removing. Previously only a single article or the full list could be added to the basket
The dropdown user menu in the header is now also configurable in the layout settings.
The order portal section of Shoxl shops now shows a menu in the left column. The contents of this menu can be selected out of the available options for the accounyt section, grouped, and customized. This is all handled by the Shoxl Layout Language.
Added a layout setting that controls if the left user menu should only be shown on the account overview page, or all account pages. Hiding this menu is useful for, for instance, order history pages that contains many colimns and need page full width.
The icon set used in the account portal has been updated.
The portal shows placeholder images for all products without images. These images are served and produced by an external service. Due to an insecure connection to this service, the images were not always returned by the service, causing a "missing image" message.
Fixed an issue that caused prices to keep loading in the favorite list on small screens
Added optimalization of certificate variables used during in deployment process. hopManager was modified so future shops will also adopt this change in their deployment configurations.
In order to improve speed and reduce the dependency from external providers, resources that are used by our shops (such as font awesome) are now moved to the Cloudflare CDN.
The Exact Portal Edition enables the user to classify articles in a a 1-level deep classification in Exact online using a defined Assortment in Exact. Each article's selected classification is exported to the Shoxl shop by the Exact Batch Interface.
Added GIROPAY, UBERWEISUNG, APPLEPAY and BANCONTACT to definition of OrderXML Batch export. Published as OrderXmlExport_V5.xsd
The customer import now validates the lengths of the customer address fields in order to avoid database errors. An example of a condition creating an error: Exact allows 20 characters for postal codes, thus supporting codes like '80023 Caivano', while the shop only allows 12 characters for this field.
Article Export without articles no longer generates an export file
Fixed serialization problem when importing XML export files from Exact Online, caused by the Exact export not adhering to the Exact XSD. Fixed a bug in the mechanism that ensures that the Exact Batch Interface interface respects the API request limits.
Due to a new generic implementation of customer price calculation, both a discount price and the first level of a quantity discount table were shown in the article table price column. This has been corrected.
The Incoterms or International Commercial Terms are a series of pre-defined commercial terms published by the International Chamber of Commerce (ICC) relating to international commercial law. They are widely used in international commercial transactions or procurementprocesses. If applicable, the Incoterm description is now shown in the Account section of the Portal.
The Shoxl Webservice now supports a hyrid connector configuration.

This enables for example the webservice to use the ERP Cache caching layer for Invoice and Order history as well as the Shoxl REST interface for realtime Product information.

The mechanism supports the Account, Order, Price, Product and Stock dataservices as well as the ErpCache, Shoxl, ShoxlRest, Stem and Veldmans connectors.
OrderSuccessful is now set to true for successful placed order when using SmartLynx connector in Shoxl Realtime interface.
Replaced SmartLynx DataRequest from GET tot POST method. This solved an error that occurred when deserializing the DataRequest response.
Orderlines can now contain additional information, added by the customer to specify elements such as color charts name for paints, or texts to be printed on clothes. For this purpose we have added a CustomOrderFields field on OrderLine to REST API definition of the PlaceOrder Webservice. This is documented in ShoxlRestApiSwagger_v4.json.
Static lists show the products that are added tot the list in the position the list is added in the Page Layout. The Vendisto interface to position these items has been improved.
The Static List functionality has been extended to support other item types. A static list can now contain: articles, article groups, categories or a combination of those three items. It can also contain one free HTML block. These items can be shown in a slider or in a container containing a fixed number of blocks.

At this moment static lists are supported on the following pages: HomePage, ArticlePage, ArticleGroupPage. In the near future this feature will be added to Category pages also.

januari 2022

release 2022.01

Januari 2022: een mooie maand voor het account portaal, dat eindelijk weer eens de aandacht kon krijgen die dit verdient. Een verbeterd menu met meer aandacht voor de mobiele versie, nieuwe componenten zoals een pagina voor upload van CSV bestanden, nieuwe features zoals het sorteren van de favorietenlijst op basis van toevoegdatum, een fors aantal kleine verbeteringen... Enfin, bekijkt u het zelf eens.

En "be warned": hier gaan we het niet bij laten, in februari gaan we onverstoord door met het uitbreiden van dit portaal totdat we echt niet meer zouden weten hoe we dit nog beter kunnen krijgen.

In de tussentijd zijn we ook druk bezig geweest met onze Portal Edition voor Exact Online, die we hebben voorzien van een geheel nieuw jasje. We zijn er trots op dus vinden het maar al te leuk als u het resultaat eens wilt bekijken. Maak een afspraak voor een online demo zodat we kunnen zien of ons enthousiasme terecht is. (Niet verder vertellen maar: we hebben de hele maand februari ook nog eens een mooie introductie-aanbieding.)

Een ander onderwerp dat ons in januari heeft beziggehouden is het check-out proces, waar we een fors aantal kleine verbeteringen hebben doorgevoerd. Het springt allemaal wellicht wat minder in het oog, maar de continue verbetering van ons e-commerce platform is een belangijke basis voor ons en uw succes.

The account portal offers customers direct access to their data in the ERP system, such as order status and invoices. It also helps them in the ordering process, e.g. by providing access to favorites lists and upload CSV-files to quickly fill the order basket.

The favorites list can now also be sorted by a dropdown selection. Furthermore the option to sort by date added has been added to the options.

 class=

The CSV basket upload functionality has been expanded with an overview that will be displayed after the upload and before the add to basket step. In this overview the uploaded article list can be edited (remove and change quantity). The overview also provides feedback about articles that can't be ordered (e.g. due to stock issues).
The shop now contains a default page that acts as a portal to the CSV basket upload. This page also provides a tutorial for the usage af the CSV basket upload functionality.
The Incoterms or International Commercial Terms are a series of pre-defined commercial terms published by the International Chamber of Commerce (ICC) relating to international commercial law. An optional Incoterm element was added to the Customer XML import. This information is shown to the user in the account section of the user portal.
Fixed the mapping for Open state of both order and orderlines. This state was shown in the shop as Unknown.
As part of this change the GetOrderHistory webservice was also extended with an OrderState field in order to be able to show order state in the overview.
A bug in the Orderstate mapping of the ERP Cache database caused the order history in some cases to fail. The problem was fixed.
Implemented bugfix for order import that was overwriting wrong orderlines when updating order.
The basket can now display an optional text above the basket contents. This text is only visible if provided in the resource overrides.
Article pages now have the delivery date already filled in if the user navigated there from a filter page that had the filters set to a specific delivery date
The payment costs calculation contained a bug that caused the calculation to return the wrong amount due to a tax check issue.
Payment methods can be linked to discounts; e.g., paying through iDEAL might lead to a 2% discount on an order total. The payment cost orderline however would only display costs abovve zero, so no discounts. This has been fixed.
A bug in the address logic in the order process prevented the state/region code to be updated in the checkout.
The combination of a customer invoice address in the (EU) country of the supplier (VAT required, and a delivery address in a non-EU country such as Switserland, would lead to VAT incorrectly being added to the amount charged via a Payment Service Provider.
Pickup point information was missing in the order message (sent to the ERP system and used for the order confirmation message), and also not shown in the shop back-office system Vendisto. This information has now been added.
When a user address does not include a (last)name, the orderservice will now use the (last)name of the main contact person of the customer organization.
In de settings of the Shoxl to Exact Online connector it is possible to define a Payment Condition to be added to the order which depends on the selected Payment Method in the shop. This mechanism was failing when being partially configured.
The improved behaviour is that in case of an unconfigured Payment Condition for the Payment Method, the order will simple contain no Payment Condition. In Exact the Payment Condition will default to the one that is specified for the Customer.
Fixed VatCode mapping for Exact online ErpCache Order history export
The export of pricelists without volume discounts is now implemented in the Exact Batch Interface.
An optional Currency element was added to the customer import XML format. This element can be used by the shop to predefine the users currency in the shop, for instance when changing currencies is not allowed.
The sort by "Position" in the article table did not function correctly and has been fixed.
Fixed a bug in the ordering process for shops that use the packages calculator.
Fixed NullReferenceException that occurred when STEM interface did not return price. Article without price is now removed from basket after restoring basket on login.
A bug in the logic prevented a setting from performing as expected.
When a user in the shop has an order budget, the App must show the remaining budget and show a warning when this budget is exceeded. This part is now available in the app.
Bugfix in OrderDataServfice of Rest connector. Fix for PlaceOrder function not beïng called.
It is now possible to send an alternative delivery address to SAP with a debtor order.
The languages of Vendisto will now cached for one hour by default.
The cache time can be changed by the following web.config settings:
vendisto:TranslationProviderCacheTimeoutSeconds
vendisto:PollingInterval

This change will improve the global import performance by 40%
And this change will stop the DDOS attack to the SQL server instance.

december 2021

release 2021.12

In december hebben we een nieuw lid van de Shoxl familie mogen verwelkomen: Shoxl voor Exact Online Portal Edition. De Portal Edition breidt Exact Online uit met een bestelportaal. Klanten bestellen online en hebben inzage in hun orderhistorie. Een win-win situatie dus: een efficiënter en goedkoper verkoopproces, en een nog hogere klanttevredenheid dan u al wist te realiseren.

Wist u dat bezoekers die zoeken op een B2C website tot 5 keer meer omzet genereren dan de niet-zoekers? En dat de gemiddelde orderwaarde ook nog eens hoger ligt? In een B2B shop zal dit wat genuanceerder liggen, maar dat de kwaliteit van zoekfaciliteiten belangrijk is staat buiten kijf. Met de Elastic Search integratie is een meer visuele vorm van zoeken nu ook beschikbaar voor Shoxl shops. En dat is niet alles: er wordt ook nog eens gewerkt aan een "native" uitgebreide zoek, dus: stay tuned!

Op integratiegebied is de aandacht deze maand vooral uitgegaan naar een uitbreiding van de koppeling met Exact Online, in het kader van de lancering van Shoxl voor Exact Online Portal Edition.  Maar ook voor SAP, Anzio en Dynamics waren er diverse kleine verbeteringen.

Shoxl for Exact Online Portal Edition is our new entry-level edition for companies that want to extend their Exact Online installation with an Order Portal. The Order Portal enables customers to order online, facilitates quick and repeat ordering, and to view order status and order history. Portal accesss and product catalogue management is fully managed in Exact, without the need for for plug-ins and the likes. The Portal itself runs cloud-based in its own instance, so no local installation necessary.

The Portal Edition therefore is an out-of-the-box, easy to install and manage, powerful and affordable extension to Exact Online. More information on this Edition can be found here.

 class=

Shoxl now interfaces with ElasticSearch through Swiftype, a commercial onsite search engine built on top of the Elastic platform. Through this integration, searching a catalogue can now result in a dropdown showing both images and textual search results.

This allows for a more visual type of search (of course, depending on the availability of useful product images). The dropdown will be populated through auto-completion; so every character that is added will change the results set towards a set of of products that more accurately match the search expectations.

ElasticSearch is part of the Elastic Stack: a cloud-based search and analytics engine. ElasticSearch enables the creation of a leading search experience. The tool comes with robust analytics and tunable relevance controls. Users can influence search results by setting weights and boosts, and can promote or hide specific search results.

 class=

The Elastic/Swiftype integration is available through a monthly subscription, starting at USD 79 for an assortment of up to 5000 products. Currently the integration will only work on product sets without authorizations.

In parallel, we are extending our standard Shoxl product search with a dropdown that also autocompletes and contains images and texts. This native search extension is epexcted to be available early Q2/2022.

Our search will deliver the same search experience, but also take into account authorizations on products. The search results page will not be changed. We will still show filters that are generated from the search results; and return product groups and classification nodes instead of individual products. An important difference with the Elastic family will be that we will not (albeit initially) offer facilities to users to customize search results on the basis of an analysis of search behaviour.

The choice between Elastic and native search will first of all depend on the use of authorizations. If they are not in use, the main advantage of the ElasticSearch integration is the adaptability of Search results by the user. Using ElasticSearch comes at a cost however: these facilities do not come cheaply, especially with large assortments.

The display of youtube video assets has been improved by scaling the window used to display the video. Several small fixes to the styling en HTML have also been made.
User management now contains an option to enable/disable the downloads feature for specific users.
The order lists column in user management is now only visible of the module is active. Previously it would always be displayed, resulting in an empty column in the UI.
The Back Button will now always navigate to the Account page when using the barebone setting
Basket now gets rebuilt correctly when changing the currency
Fixed an issue that caused custom javascript to be ignored by Grunt.
Fixed an issue that caused the sort controls to stop responding after opening and closing an article detail popup.
A bug in the function that orders assets in some cases caused the asset sequence of article or articlegroup asssets to differ from the sequence defined in the import sheet.
Added the HideHeaderAndFooter functionality to the POST method of password reset. This one was forgotten
When using the bareBoneLoginPage. If we are signed in, we should not be able to access the PasswordReset page, Activate page and Register customer. In this case we will be redirected to the home page
Fixed an issue causing confusion when rendering images and downloading assets,
Bug fix: Calculate order works now without a webservice or if we use Vendisto as ERP
An asset of type file got the wrong filename when downloaded, this has been fixed.
As a result of a bug in the logic used to set the active page in the main menu the situation could occur that 2 pages where marked as active simultaneously. This occurred when one page started with the title of the other.
A bug in the code has been fixed that caused the budget functionality to not always work in specific cases.
Fixed error that occurred when displaying orderlines in the account portal. The issue affected only sales orders with an unfinished PriceAndTaxCalculation in SAP ByD.
Fixed missing translation of order state in order history overview returned by REST API.
The default Shoxl ERP connector now returns the order reference field for the order history overview.
The default import language of the Vendisto imports that are started by the automated import process are can now be configured in the deployment environment of Vendisto.
It is no longer necessary to define a double administration of delivery costs in both the shop configuration and in the Exact Online interface configuration. The shop now passes on the delivery cost related articlenumbers as specified in the shop settings.
Removed unnecessary dependency from Anzio.XmlImport. This improves the maintainability of the software and fixed a bug that was caused by a library upgrade in the Anzio XmlImport console application.
The STEM webservice connector is now implemented in a separate process while releasing the shop from the responsibility for the connector.

This architectural improvement enables the upgrade to the latest core version for shops that use the STEM connector.
Changes where made to the Shoxl Webservices architecture in order to incorporate the STEM connector in the framework.
Fixed bug that caused some suspended articlegroups to exist in RavenDB. This situation occurred when the webshop XML contained Articlegroups with only discontinued articles.
The Exact Online batch interface is now able to process shop orders that have a discount percentage specified on on the payment method. The discount is added to Exact as a discount on the entire order.

It now also is possible to configure separate Exact Online payment conditions for the different payment method defined in the shop configuration.
Hotfix for (newly introduced) bug caused by Shoxl WebService placing shipment cost orderlines in Vendisto with wrong orderline type.
Added request throttling on Exact Online REST Api calls. This mechanism ensures that the Shoxl Exact Batch Interface respects the minutely limit that Exact imposes on these calls.
In our continued effort to centralize all shop management, we have now moved the management of Vendisto User Rights to our central Setting management Tool. Vendisto User Rights govern the visibility and accessibility of Vendisto Sections (that is: Menu Items, Page Sections, Overview Grid Columns, Action Buttons) to Vendisto Users.

In a next step, the existing set of user rights will be extended, thus creating the possibvility to show users a version of Vendisto that is fully tailored to their needs.

november 2021

release 2021.11

In november is veel tijd besteed aan het verhogen van de kwaliteit en performance van de diverse componenten van het Shoxl e-commerce platform. Hierbij lag de focus op het kunnen afhandelen van orders met zeer veel orderregels, en het verbeteren van de prestaties wanneer zeer veel productdata (meer dan 100000 SKUs) moest worden getoond of geïmporteerd resp. geëxporteerd. Verder is de integratie met DeliveryMatch uitgebreid met de mogelijkheid om voor orderaflevering te kiezen uit beschikbare pick-up locaties.

Ook functioneel is er het één en ander te melden, waaronder een nieuwe integratie met PSP MultiSafePay, en in het Account Portal diverse nieuwe mogelijkheden zoals de optie om kolommen te verbergen.

Op integratiegebied is de aandacht deze maand vooral uitgegaan naar een uitbreiding van de koppeling met CS WholeSale, het ERP-pakket van Centric. Verder zijn diverse issues in de bestaande interfaces aangepakt.

En tenslotte: deze maand is veel aandacht besteed aan het verbeteren van het uitrolproces van nieuwe shops, dat inmiddels vrijwel geheel geautomatiseerd verloopt met onze tool ShopManager. Goed nieuws voor onze nieuwe klanten dus.

The integration with DeliveryMatch has been extended with the option to select a pick-up point. The available pickup points are presented in the third step of the check-out process, when a choice is made between Delivery and Pick-up. If multiple logistic carriers are used, all pick-up points that are part of their delivery network are shown.

 class=

 

The sale items list on the homepage can now optionally link to the ArticleGroup that contains the Article instead of to the Article itself.

MultiSafePay can now be selected as a payment provider for Shoxl.Shop.

 class=

(Image Copyright MultiSafepay) 

 

A new (optional) feature has been added that will show the visitor the remaining amount to be ordered to receive free shipping. This message will be displayed in the basket, the feedback after adding an article to the basket and in the basket summary.
Several performance fixes have been added to the article selection list component improving overall loading speed.
The sitemap will now be stored on disk to be able to serve the sitemap faster for search agents. if the sitemap does not exists, a new sitemap will be created. If it exists, we will check if it is older than one day. If so, we will recreate a new one, otherwise we will serve the one from disk.

A sitemap creation will only take 10 seconds (if not cached) with 100.000 items.

For a normal website, this will only take around 2 seconds (if not cached)

If cached, both requests will be served within a second

It is now possible to always show the shopping cart button and quantity selector on the article group overview page in tile view. Previously, these order buttons were only shown on-hover.

 class=

For our emailing module: OrderDate, PrefferedDeliveryDate and ExpectedDeliveryDate will now be formatted in normal human words like Tuesday 21 April 2021 9: 45 instead of 2021-04-21T09: 45: 00
The option to display te name of an article in the article selection table has been added. This option is disabled by default.
The order overview list in the account menu had been made configurable. When configuring a shop the visibility and display order of the various columns can be set.
The order history failed for users without an account number, this has been fixed.
Fixed bug that caused empty order history list for realtime webservice connections using Shoxl REST API implementation.
An issue causing the register form not to be submitted has been fixed.
When price information for an ArticleGroup was missing the call that has to retrieve the prices for several ArticleGroups would fail. This would result in a failure for all ArticleGroups on a page. This has been changed so that all information that is available will be returned. ArticleGroups with missing information will be skipped.
As a result of a bug in the filtering logic there would be no filters available for certain search result. This issue has been fixed.
After filtering an article selection list the prices would no longer get loaded. This issue has been fixed.
Fixed bug that occurred for users with debtor number but without pricelist in the ERP cache.
Fixed an issue where when resizing an image the transparent background would be replaced by a black background in some cases.
The CS Wholesale connector of the Shoxl Realtime interface now returns the orderline prices after this was implemented by Centric in the CS Wholesale webservice.
Updated the CS Wholesale connector of the Shoxl realtime webservice so that orderlines with items on backorder are now shown with status ToDeliver.
The CS Wholesale ERP now supports the invoice history overview in the user portal. In the overview the invoices can be downloaded in PDF format.
The Shoxl REST API now also supports Bearer token authentication
The REST API connector that connects to ERP systems for customers that have implemented the Shoxl Realtime REST interface now returns PDF documents for the invoices that are shown in the user menu of the shop.
Created new database upgrade tool for the ErpCache database that is now configured to be run as part of the rollout process of the Shoxl Webservice. This webservice functions as an intermediate layer between the shop and the ERP Cache. The new tool centralizes responsibility for the database upgrade which was before shared by multiple processes. In rare cases this could cause issues.
Fixed OutOfMemoryException that occurred while importing pricelists in ERP Cache.
Fixed bug that caused an unknown error for customers that manage their prices in Vendisto. When importing new articles the price synchronization to the shop caused an error.
Fixed an issue in the exception logging mechanism that caused the webservice to fail returning the error to the shop in case of fatal errors. This was leading to slow behavior in the shop.
The Shoxl connector used a wrong parameter when requesting the order history of an account. This lead in some cases to an error.
A large image in the editor could be displayed at a size larger than the editor. This issue has been fixed.
The build process that builds our software was modernized so it now uses the latest version of the .NET build tools.
Shopmanager will now create ShopInstances documents for each chosen language, and a default LayoutSettings document when deploying a new shop.
A change was made to the mechanism that we internally use when connecting the Shoxl development environment to a specific shop instance. This change simplified the process and made it easier to adapt it to new shops.
Shopmanager will now automatically generate a default homepage for each selected language, and add these pages to both Vendisto and RavenDB.

oktober 2021

release 2021.10

In deze release is de Snel Bestellen functionaliteit van de shop uitgebreid met de "Order Grid": een overzichtelijke tabel op de artikelgroep pagina die alle varianten binnen een artikelgroep toont, inclusief hun onderscheidende kenmerken. Op dezelfde pagina is het mogelijk geworden om (in de taal die wordt gebruikt om pagina lay-outs te definiëren) groepjes van productkenmerken te plaatsen op verschillende posities. Dit verhoogt de flexibiliteit voor ontwerpers om tot een pagina te komen die optimaal communiceert.

Ook op integratiegebied is er goed nieuws te melden: er is een nieuwe directe integratie Met Exact Globe beschikbaar gekomen, en er is een koppeling ontwikkelt met de SmartLynx middleware laag op SAP Business One.

An OrderGrid option has been added for the ArticleGroup detail page. When this option is activated a selection UI by a definable property will be displayed (e.g. color). When one or more of the values in this UI is selected an OrderGrid result will be generated. This result consists of a grid containing all the articles available for the selected value. Multiple value selection lead to multiple OrderGrid results.

This functionality can be activated by defining the "OrderGrid" settings in the "ArticleGroup" of the WebshopSettings and placing the filter UI and result UI in the LayoutSettings.

OrderGrid

When the OrderGrid is in use and only one filter option is available, this option will be automatically selected.
The possibility to display value icons in the overview tile of an ArticleGroup has been added. The tile can display icons linked to the property values of articles inside the ArticleGroup. There's no limit to the amount of properties that can be configured for this functionality.
When a user adds items to the basket, a setting now determines user feedback. Previously a feedback pop-up was presented. Now an alternative has been implemented, in which the basket preview automatically opens (and closes after a few seconds). This is the same preview as the one shown when hovering the basket.

By default, related articles are defined on article level. So, an specific product variant is related to a product variant in another group. An example would be: this drill bit is an accessory to this drilling machine. However, in some cases relationships are needed om the article group level. For instance, this t-shirt is a good fit with this trouser (insted of: this red t-shirt, size M, is a good fit with this trouser, grey, size 38). In order to easily define relationships between article groups A and B, the shop now automatically generates such a relationship when one single item in article group A has a relationship with one single item in group B.
The quick order import through CSV assumes that single units are ordered. However, some shops use different packaging units. It has now been made possible to use other packaging units in the Quick Ordering CSV, which the shop then translates to regular units or any unit the shop uses as its standard.
The shop offers the option to filter on possible delivery dates. By default, filters dispappear when you visit an article detail page (since you have found what you are looking for). However, the selected date is something you still neeed when ordering the article. Now, if you have selected a delivery date in the filter options, the shop will remember the date and preselect this delivery date when you visit an article detail page
The grid can now hide prices and the order UI when the prices are not being displayed as a result of the WebshopSettings.
A new layout element has been added to the layout language: PropertyCategoryTabs. This element describes the property groups that have to be displayed as tabs on the ArticleGroup page. The order in this list also dictates the order in which the tabs will be displayed on the ArticleGroup page.
In Shoxl shops, the layout of a page is set up using a layout language. One of the constructs in this language is the "PropertyCategory", which is used to categorize a set of product properties. This set can then be postioned as a whole on the page, and has its own class - which makes it essy to format the items through CSS. This offers great flexibility for page designs.

In this case, a problem has been solved in which a product property was classified in a sepecif properrty category, disappeared from the list of all product properties (which is as it should be), but did not appear in the propert category.
Due to a change in one of our WebServices editing the order lists had developed some issues. This has been fixed.
The display from the reset password page was broken because of a previous change.
A preventive measure was implemented to prevent a misconfiguration of Vendisto that lead to runtime errors.
A new and improved interface to Exact Globe is now available. This interface uses the Shoxl REST API. Benefits are an improved performance and even greater stability.
Smartlynx is a middleware layer from Anrova, which consist of a number of endpoints that connect SAP Business One to the outside world. Smartlynx is  general purpose layer, but also provides all data that is needed by a webshop - and is able to consume the messages that a webshop products, such as order messages.

To be able to connect to Smartlynx endpoints, an adapter has been developed that exposes the Shoxl REST interface to Smartlynx.
Various Optimizations in Article Import and Sync, in order to handle larger volumes of data.:

  • Prevented inmediate article synchronization when updating article authorization profiles in article import batch
  • Solved bug that caused synchronization error when importing new articles
  • Performance improvement when synchronizing assets at the start of the import. Assets are now synchronized in batches.
  • Replaced duplicate batch code by new generic BatchWhereIn queryextension function.
  • Solved bug that caused articles to by synchronized multiple times by passing on LanguageId to Articles synchronization in ArticleGroupSynchronizer
Fixed bug in the simplified article import that was caused by a trailing space in the article group title.
Fixed an issue that caused grid filters to break when navigating in Vendisto

september 2021

release 2021.09

In de september release lag de aandacht vooral op het account portal binnen de shop. Via dit portaal hebben debiteuren toegang tot hun informatie in het ERP-systeem. Dit account portaal is nu uitgebreid met een overzicht van lopende retouren cq retouraanvragen. Verder is nu instelbaar welke kolommen worden getoond in alle overzichten. Het eerste ERP-systeem waarvoor deze koppeling actief is is CS Wholesale van Centric.

The order overview list in the account menu had been made configurable. When configuring a shop the visibility and display order of the various columns can be set.

Order Overview List

The backorder overview list in the account menu had been made configurable. When configuring a shop the visibility and display order of the various columns can be set.
The shop now has the possibility to display a RMA overview. This overview can be found in the account menu of a authorized visitor.
The company name field is now hidden for non-business customers when supplying an alternative delivery address in the order process
Shoxl shops offer the option (if this setting has been enabled) to order articles directly from the article overview page. In some cases, the quick order button would be disbled until changing the amount to be ordered. This has been fixed: the button is now enabled by default.

In shoxl shops, products can be displayed in a pop-up (in order for prospects not to leave the products overview page). When ordering a product from this pop-up, and depending on settings, in some cases a message is shown asking the customer to choose between continuing shopping or go to the order basket. Pressing "continue shopping" closed the shopping cart dialog, but not the product display pop-up. This has now been improved. The customer now returns to the products overview page.

product display pop-up

The form validation in the order process failed when using the Google address autosuggest.
Fixed bug in the simplified article import that was caused by a trailing space in the article group title.
Fixed an issue that caused grid filters to break when navigating in Vendisto
Changed filter options for grids to fix a few bugs

augustus 2021

release 2021.08

In de augustus release zijn belangrijke nieuwe functies beschikbaar gekomen, zoals de mogelijkheid om (via de Google Places API) een check te doen op ingevoerde adressen. Daarnaast zijn de laatste kleine issues in de integratie met DeliveryMatch afgerond. DeliveryMatch handelt de integratie met de software van vervoerders af.

Aan de Vendisto kant heeft de focus gelegen op SettingsManager. Deze software maakt het centraal beheer van alle instellingen van alle opertionele shops mogelijk. Voorheen werd dit per shop geregeld, wat met het groeiende aantal shops echter niet meer doenbaar is. Het is de intentie om deze instellingsmogelijkheden op termijn ook toegankelijk te maken voor shopowners.

Het aantal cases op integratiegebied lijkt bescheiden, maar ook hier is een belangrijke stap gezet: onze software handelt nu ook complexere kortingsregels binnen SAP af.

It is now possible to automatically fill the address fields in the order process using an autosuggest search.

Autosuggest Search in Order Address field

The core shop can now display external plugins via a newly implemented token system used to retrieve the information.

integration of external plug in

The article image can now optionally be shown in the article selection table. The image will be displayed in a small format to make sure the table layout is kept intact.

The possibility has been added to shield the entire shop from unauthorized visitors. This means that only the login page and the password reset page(s) will be accessible to non-authorized users.

Authorization at shop level

 

User agent token is toegevoegd aan de Shoxl Core. Bij elk Mollie request zal deze als user agent mee worden gestuurd.

Changed the Russian and Spanish translations for 'excl. BTW' to be shorter.

Russian and Spanish translation

In the previous release a new option was implemented to display an article count in the ArticleGroup overview tiles. This has now been expanded with a settings to enable or disable this information in the tile.
The volume discount display has been made multi-currency enabling the display of the volume discount in the currency being used in the shop bij the user and not just in the default currency.
Added a label specific to the volume discount interface.
Some minor issues in the order logic have been fixed, mostly occurring when ordering using authentication profiles.
If one or more articles in a list didn't have a price the price filter for that overview would fail. This bug has been fixed.
The shop now support the Russian an Spanish languages.
An error occurred when loading an articlegroup overview with missing prices for articlegroups.
DeliveryMatch does not return the available delivery methods when an api-call is initially made. Repeated calls are succesfull however.
This behaviour was caused by a bug in the DM API, that occurred when the delivery address for which the available delivery methods were requested contained a space. This has been remediated.
1) For home delivery:
Delivery Method, delivery date and delivery time will now be display in the order summary step.

2) For pickup points:
The order summary will now display the pickup point in a correct way, without the 'unknown' delivery date. The houseNumber is added as well to the pickup address

3) Postmark emails have now access to the following fields:
"ShippingProviderInformation": {
"Carrier": "DPD",
"DeliveryDate": "woensdag 11 augustus 2021",
"DeliveryTimeFrom": "08:00",
"DeliveryTimeTo": "17:00"
}

In case of Pickup points only the carrier will be filled.

4) Postmark Paymentmethod has now a good translation:
"PaymentMethod": "Bij levering",

5) Postmark DeliveryMethod has now a good translation:
"DeliveryMethod": "Afhalen",

6) PostMark Shipment Costlines have now a good translation
"Type": "Verzendkosten",

7) Fixed a bug in the checkout. There was a possibility to skip the DeliveryMethod step. By bypassing that step you could order something without paying delivery costs

8) Fixed a bug in the checkout. If you press F5 in the checkout Delivery method step and proceed. The shop will crash.
The display logic for accumulative discounts was flawed, resulting in unwanted display of the accumulative discount information. This issue has been fixed.
Changed the way the app splash screen works to prevent stretching issues
The order button in a sale item thumbnail didn't display in some cases due to a bug in the model initialization. This bug has been fixed.
The minimal order quantity did not function as expected in some configurations. The issue would be that the minimal order quantity would be used a an order step size so that visitors could only order multiples of the minimum order quantity. So if the minimum order quantity was 6 then only quantities of 6, 12, 18, 24 etc. would be considered valid.

This logic has now been fixed. So for a minimum order quantity of 6 all quantities larger that 6 will be considered valid.
After selecting a Brand filter option all other filters would be disabled, this issue has been fixed.
The shop can show a “Pay now” button at the very last step of the order process (the “Thank you” page). In some cases however, the button was shown for payment methods for which direct payments are not available or relevant, like “Bank Transfer” if not handled by the PSP.

This logic has now been changed as follows. If a payment method is selected that is not processed by the selected PSP, or no payment option is offered: the Pay Now button will not be shown.

Non-PSP payment methods include:

  • Buy on Credit
  • Cash on Pickup
  • Cash on Delivery
  • Bank Transfer, if the setting AllowPspBankTransfer is set to False.
The AllowPspBankTransfer setting is setting in the RavenDB document that contains all PSP setting, which is separate from the generic settings file of the shop.
Added a state selector to the article groups and articles labels exports.
Added the possibility to show and hide the 'display order boost' column from the article groups grid.
Added rich text editor and image support to the long description fild of the setting data entity.
Added validation and error messages for the settings classification node selection in the setting create screen.
Fixed a bug where shops that had shop specific values were not able to be deleted.
Calculate order has been implemented in the checkout flow. We now can get Staffel discount from an ERP system in the checkout flow.
To be able to see the discount ánd the original price in the checkout flow we have to enable the setting ShowOriginalPriceAndDiscountPriceInCheckout
The active price period is now selected when retrieving action pricelist from Exact
Fixed bug that caused in some cases wrong price for articles with multiple volume discount lines in Exact online pricelist.
PriceList importer now removes pricelist records of not imported productnumbers in case of a full (not partial) ErpCache PriceList import.

juli 2021

release 2021.07

De juli release omvat een fors aantal wijzigingen en verbeteringen aan de shop. Een aansprekende verbetering is de mogelijkheid om de toegang tot specifieke content paginas te beperken tot ingelogde gebruikers. Maar ook de veelheid van kleinere wijzigingen leidt tot een duidelijke verbetering van de gebruikerservaring. Daarnaast blijven we hier heel enthousiast over de vele mogelijkheden die de integratie met Zapier biedt - nu weer op het gebied van preprocessing van de transactionele emails die de shop verstuurt.

Op integratiegebied is zeker vermeldenswaardig dat de shop nu ook beschikt over een REST interface, naast de reeds bestaande SOAP interface.

Delivery costs that are returned by DeliveryMatch should not include/present VAT when the shop is configured ex VAT (as determined by the setting ShowPriceWithTax). This has now been corrected.
The new way of sending the order confirmation mail via Vendisto lacked some information like tax data. All missing data has been added to the communicated model and is now available for use in the mail template.

VAT has been added to the order confirmation email.

The following columns are added / modified:

Example I
Prijs / unit (EUR) Aantal Prijs(EUR) BTW(EUR) Prijs met btw(EUR)
6, 35 6 38, 1 9% (3, 43) 41, 53


The price summary on the email has been changed as well. It contains now as well the VAT.

Example II
Totaal (excl. BTW) EUR 117, 10
Totaal BTW (9%) EUR 10, 45
Totaal BTW (21%) EUR 0, 21
Totaal EUR 127, 76
An ArticleGroup tile will now show the article count, just like the table view already did.
Pages can now be hidden behind behind the login, so only authenticated users can view the page. The page will be visible in the navigations (if added), a click on the link will result in a redirect to the login screen. This option can be activated for any page by clicking the "Secure page" option in Vendisto.
Added datepicker to list / table view for the article group page, to enable the selection of a delivery date for an order line when using that view.
The Article Group Overview Page can be set to use Tile View or List View as its default. When Tile view is chosen as the default, a view change by the webshop visitor to List View resulted in the display of a wrongly formatted page. This has been corrected.
Classification levels can be used to filter product collections. The use case is to show alle products in say a "main" category, and then filter the results using the subcategories of that main category.

In some cases a bug caused this category filter to fail. This has been fixed.
Changed text field for invoice country into language dropdow in order to avoid problems when interfacing with ERP systems.
Because Shipping Costs are mapped to a regular article in Exact, they are also included when re-ordering an order. This should not be the case, they should be calculated again when the order is placed.
Fixed a bug caused by resizing images. This error caused webshops to not display images.
Delivery costs will now be visible / calculated even if someone enters 0 euro's in the settings.
The Postmark e-mail functionality in Vendisto now has the possibility to pre-process order data before sending it to Postmark. This endpoint is optional.

An example of such usage is preprocessing by Zapier to sent mails to different sales offices, depending on the delivery address of a customer.
Implemented retry mechanism for retrieval of token that is needed for communication with Exact online.
The Shoxl Webservice now supports a standard REST connection to the ERP system next to the existing SOAP interface.
Fixed a bug where the earning KPI box would not show on the welcome page

juni 2021

release 2021.06

Vanaf de juni release is het mogelijk om externe templates in te zetten voor alle transactionele mail die de shop verzendt (wachtwoordwijzigingen, orderbevestigingen, etcetera). Verder is het eenvoudiger geworden om custom formulieren die worden gemaakt met externe editors in te zetten ter vervanging van de standaard formulieren van de shop.

Op het gebied van integratie met ERP systemen is weer veel aandacht uitgegaan naar integratie met de diverse Exact varianten. Zo is het mogelijk geworden om in Exact aan te geven wat de minimale bestelhoeveelheden zijn per product, en is een klein maar storend afrondingsverschil dat ontstond als gevolg van btw berekeningen verholpen.

Transactional emails that used to be formatted by the shop and then sent by Postmark, are now using Postmark templates.
The order information is sent through

This had the added advantage that user-specific design issues are now isolated in templates, and do not pollute the standard Shoxl Core Shop Solution.

The following functionality has been added to the email functionality:

1) Based on the language/region, dots / commas are displayed with the amounts
2) Amounts are now rounded to 2 decimal places. 1.567 is shown as 1.57
3) Prices are now always shown with two decimal places. 1.5 becomes 1.50
4) The templates are now multi language.
5) The hyperlinks are now environment independent. So staging now points to staging and production to production
6) The template now also contains the field currency
It has been made possible to configure a custom form for new customer registration.
This is done by creating this form by any means, for instance by using a package such as mailchimp. Next, the form is embedded on a Page in the shop.
The only question that remains is: how to link the "Register" button on the Login page to this Page. This is done by creating a link in the resources file on the specific button class.
Although some configuration is involved, this creates great flexibility for creating custom registration forms. A nice example can be found here: https: //cobecopharma.com/nl/registratie
It is now possible to filter article on Delivery Date on the search pages / filter pages if delivery dates are imported per article.
DeliveryDates are not imported anymore in the ERP cache, but from now on by the Shoxl Pro Xml importer.
The Spanish and Russian languages are added tot the Shoxl shop.
Fixed a bug that made the images be displayed in the wrong size when using Cloudflare.
The shop allows for a minimum order quantity to be defined for an article. When this quantity is set, the customer cannot order less than the defined number of articles.
The minimum order quantity is provided by the ERP system through the PriceList and CustomerPrice exports. However, Exact does not have a standard field in which a minimum order quantity is defined.
The Exact (Online) integration now looks for the freefield MinimumOrderQuantity on an article (item). When present, the information is used to fill the minimum order quantity in the export files.
Fixed bug that prevented net prices to be exported to the ERP Cache for customers with over 60 pricelists.
Pricelist export now supports pricelists with multiple price periods and exports the pricelist of the active period.
Increased precision on price fields in PriceList and CustomerPrice tables in ERP Cache in order to fix rounding difference on shops.
Exchange rates to same currency are no longer exported to ERP Cache in order to solve problem with double export of prices.
Fixed a bug that enabled the user to change the quantity ordered of an article in the basket below the defined minimum quantity.
Customer import is now using case insensitive comparison when validating on double usernames.
The customer import requires user names to be unique. Because the validation is case sensitive, equal user names passed validation, causing the importer to crash. This has been fixed by making the validation case insensitive.

mei 2021

release 2021.05

De mei release biedt een aantal uitbreidingen op de shop. Een leuke nieuwe optie is de mogelijkheid om gewenste afleverdata direct in de winkelwagen aan te passen, zodat niet terug hoeft te worden gegaan naar de artikeldetailpagina. En met de toevoeging van de Spaanse en Russische taalvarianten kunnen deze markten direct worden bediend.

Op het gebied van integratie met ERP systemen is de shop (of in feite de ERP cache) uitgebreid met de optie om geen gebruik meer te maken van wisselkoersen, maar om prijzen in elke valuta apart op te geven.

Previously delivery dates could only be set on productpage, and were fixed in the basket. It has now become possible to change delivery dates without leaving the basket, so on the orderline.
A setting has been added to hide VAT in the shopping cart dropdown. In combination with other settings it is now possible to hide VAT completely, as some shop owners need.
The core shop now support progressive image loading in the overviews. This option can be enabled by setting the WebshopSetting "UseProgressiveLoading" in the Image settings to true.
Spanish and Russian are now available as default language in the core shop.
It has been made possible to display a logo on the article detail page in a non-ezbase shop. The logo can be added via the LayoutSettings.
It is now possible again to filter on the articlegroup page on Article Properties. It did not work because the Article properties were not indexed correctly.The following has been changed: A new version of the ArticleIndex has been created. A dynamic field named: 'propertyvalue_' has been added which will contain the Article properties
Fixed in bug in the quote mail communication: a pickup location never received an order copy.
The Veldmans Mobile App has been changed: The connection to Raven has been changed so it can do now more than 30 calls in one session
The ERP Cache already had support for multiple currencies by importing exchange rates for other currencies. It is now possible however to import CustomerPrices and PriceLists in multiple currencies in the ERP Cache without the use of exchange rates. In this case the calculation is no longer made in the ERP Cache but in the ERP itself.

april 2021

release 2021.04

In de Shoxl april release is binnen de shop de mogelijkheid beschikbaar gekomen om meerdere standaard orderlijsten te creëren, die vervolgens met één klik in de winkelwagen kunnen worden geplaatst. Deze lijsten kunnen zowel door de shop eigenaar als door de bezoeker worden aangemaakt. Ook is gewerkt aan diverse performance verbeteringen.

Op het gebied van integraties is gewerkt aan uitbreiding van de faciliteiten om Order Documenten op te slaan in de ERP Cache, de laag tussen het ERP systeem en de shop.

Voor Vendisto is deze maand weinig te melden. Er wordt volop gewerkt aan de Visual Editor (dynamische items). De verwachting is dat deze nieuwe bouwblokken in mei of uiterlijk juni algemeen beschikbaar zullen komen.

A much requested feature is now available: the option to create multiple lists of products that a customer can maintain him/herself and add to the shopping basked in one click.

The option is available for logged-in users. When it is enabled, the user gets the option to create, edit and delete lists. A list can contain an unlimited number of articles. These articles can be ordered from this list individually or grouped.

The shop owner has the possibility to add, edit and delete order lists from all customers from Vendisto. There's also a new import option enabling the shop owner to import new lists.
When items are on sale, the favourite list did nog show the special offer price (but the regular price instead). This issue has been resolved.
The UI for related articles would not be entirely hidden if no active articles where present in the related articles collection. This has been fixed.
Some structured product data markup needed by the Google (and other) crawlers has been changed. We now use https instead of http. Furthermore, itemprop=offers was missing and has been added.
It is now possible to view photo's that are attached to orders in the order history view of the account portal.
The article group overview page loaded each price individually, instead of doing a bulk request. This resulted in poor performance for large pages with many article groups. The implementation has now been changed: alle prices on article group overview pages are now requested in bulk, so only one call to the ERP system is needed.
A setting has been added to hide VAT in the shopping cart dropdown. In combination with other settings it is now possible to hide VAT completely, as some shop owners need.
The option to put a label on top of and image (e.g., 30% discount) has been improved.

Resized PNG images will now remain PNG images and will retain their transparency.

The option has been added to define a label for a specific article. The previous implementation only allowed labels on article groups (so on all articles within this article group).
A bug has been fixed in the favorites list that prevented the article prices from being loaded.

The timing for loading of the basket and usermenu in the header has been changed to gain a small improvement in load times.
The shop's webservice backend now supports an extra function to disclose order documents from the ERP if the connector supports this feature.
ERP Cache importer now supports ERPCache OrderDocument format.
Exact batchinterface is now able to export of photo's that are attached to orders in Exact in XML file that is structured according to the ErpCache OrderDocument format.
The move to Vendisto.net as the standard domain for staging environments has created some redirect issues. The web.config for the Vendisto website can now make a distinction between vendisto.net domains and other domains. This prevents redirect loops when using the vendisto.net domain.
The order line overview page within Vendisto did not show prices. This bug has been resolved.
An issue has been resolved that caused Orderlines in Vendisto to show the gross price and not the customer price

maart 2021

release 2021.03

Een belangrijke nieuwe functionaliteit in de maart release is de mogelijkheid om downloads op te voeren voor groepen van gebruikers of individuele gebruikers. Deze bestanden zijn vervolgens te vinden in het klantenportaal.

Op het gebied van ERP integratie is vooral gewerkt aan de Exact Online interface. In de nieuwste versie worden ook facturen (in pdf formaat) en beelden die zijn toegevoegd aan een verzending, opgehaald, waarna ze vindbaar zijn in het klantenportaal.

Binnen Vendisto is gewerkt aan opwindende nieuwe mogelijkheden waarmee dynamische content kan worden toegevoegd aan het content canvas. Dit maakt het mogelijk om op gebruiksvriendelijke wijze producten, nieuwsberichten en wiki-items te plaatsen op shoppagina's.

Products can be marked as quotation products, meaning that they cannot be bought directly but the customer has to contact the webshop for a price. For these products, an Ask Quotation button is shown on the article detail page. Prices can be hidden or the Manufacturer Suggested Retail Price can be shown.

For known debtors, these products can have a customer-specific price. However, since these products are marked as quotation products, logged-in users were not able to add them to the shopping basket.

This has now been changed. A webshop owner can choose whether quotation products can be ordered by known debtors, or not.
It is now possible to upload files in Vendisto, that can be made available to all users or to a set of specific users. These files are then available through the Customer Portal. This function can be used to, for example, provide users with user-specific downloadable pricelists.
The Exact batch interface supports export of invoices to the ERP cache.
The ERP Cache importer is extended with an extra format for the import of invoices.
The shop can be configured to display the Invoice PDF if the implemented ERP connection supports this functionality.
If AddressLine1 is empty, we will now fill it with available data.
Language code has been changed to 2-character ISO code.
Optional fields Telephone Number and Emailaddress are now sent too.
Increased ravendb:MaxNumberOfRequestsPerSession session limit in order to prevent issues with placement of big orders.
Exact batchinterface is now able to export of photo's that are attached to orders in Exact in XML file that is structured according to the ErpCache OrderDocument format.
The shop's webservice backend now supports an extra function to disclose order documents from the ERP if the connector supports this feature.
Exact BatchInterface now Export ErpCache_Stock XML format 1.2 which supports decimal stock values

ErpCache Stock Importer now accepts decimal stock values.

When configured to show numbers the available stock is now shown in the price unit of the article. Also a decimal stock quantity is now shown with decimals.
It can now be configured in the Exact batch interface if stock on Planning In is added and if stock on Planning Out is subtracted from the stock that is exported to the ERP Cache (and shown in the shop.).
Fixed security issue in invoice download.
The echoservice can now be used by our monitoring software to check if the Shoxl webservice is available.
The Visual Editor is being extended with multiple dynamic blocks. Using these blocks, items such as product items/lists, news items/lists and wiki items/lists can be placed on the canvas. Underneath the surface, this is then translated in a dynamic tag that is sent to the shop page. These tags can also be written by hand. Using these new function, dynamic pages can be build by non-technical users. The functions will become gradually available. The work is expected to be fully finished in release 2021.06.

In this release, the dynamic blocks for Product Items and Product Lists are available for selected users for beta testing.
The simplified article importer now prioritizes the active article groups when matching, and puts the article in active AG.

februari 2021

release 2021.02

In de februari release zijn enkele kleine functionele verbeteringen beschikbaar gekomen, zoals de mogelijkheid om te specificeren wat de positionering van landen moet zijn in de dropdown in de checkout flow. Ook enkele problemen die konden optreden bij internationaal gebruik van een shops zijn verholpen.

Aan de integratiekant is veel aandacht uitgegaan naar het verbeteren van de efficiency van data-uitwisseling. Zo is een formaat ontwikkeld om leverdata-schema's per product per klant te kunnen importeren, zodat klanten op hun eigen kalendertje kunnen zien wanneer bepaalde versproducten geleverd kunnen worden.

The country selection in the order process has been improved. It is now possible to move a selection of countries to the top of the list in the dropdown. The rest of the countries will be displayed below these preferred countries and will be displayed below a separator. Furthermore, the possibility to display country names in the language used in the shop has been added. Previously this was limited to one language, English.
Countries shown in a drop down in the order process will now by default be shown in alphabetical order by display name.
The steps displayed in the top of the screen during the order process have been made more flexible. This has been done to enable more layout options and cleaner HTML.
Fixed bug in filtering that in some cases was leading to empty result lists
Fixed a bug that caused a visitor from a timezone different from the server timezone to select a preferred delivery date.
Fixed bug that occurred on pages with downloads section
Due to a logic bug the label that can be put on top of product images, for example to show that an item is a Sale Item, was not always available. This has been fixed.
A new webshop settings has been created. This settings contains a list of units. When the unit of a Packaging property is present in this list the packaging calculation will not be performed and the normal ordering logic will be used.
The ErpCache Product Delivery Scheme interface was changed so that it is now required to add a DeliverySchemeCode to the DeliveryScheme of a product. Also the ErpCache Customer import was changed in order to add a corresponding DeliverySchemeCode to the Customer.
This solution makes it possible to define different delivery dates for different customers for the same productnumber.
AutomaticShopImporter now stores failed import files in a separate folder. This speeds up the process analysing the failed imports.
Implemented ErpCache Cleanup importer.
See specification on https: //shoxl.gitbook.io/erp-integration-guide
It is now possible to add an article number for delivery costs. This (external) article number can be used for the ERP system to connect the costline to a product.

The following setting has been introduced:
1) Price.ExternalArticleNumber (This number will be used if you are not using price regions for your shipments)
2) Price.RegionalDeliveryCosts[x ].ExternalArticleNumber (If you are using price regions. You can setup a separate external article number per region. So the costline can be connected to different products in the ERP)
Article and article group imports now detach properties, VAT rates, assets, and authorization profiles when the respective column in the import was left empty.

januari 2021

release 2021.01

Mooie nieuwe shopfuncties deze maand! Er is onder meer een koppeling gerealiseerd met DeliveryMatch, een krachtige oplossing voor koppeling aan de logistieke systemen van vervoerders. Verder is aandacht besteed aan BTW afhandeling bij wereldwijde verzending.

In Vendisto is het nu mogelijk om aan te geven welke producten onderdeel moeten zijn van een productfeed, bijvoorbeeld voor koppeling met Channable.

Qua integraties is in januari vooral aandacht besteed aan kleine issues die konden optreden in de koppeling naar Exact, en in zeldzame gevallen als het opvoeren van orders met honderden orderregels.

====
Shoxl
====
The webshop can now connect to Delivery Match.
To activate an external Delivery service we have to set the following setting to '1'
DeliverySettings\DeliveryCostsMode = 1

When connecting to an external delivery service, the webshop gives the following functionality to change the webshop behavior:
DeliverySettings options:
--------------------------------
1) DeliverySettings\FinalizeShipment = true / false (Default = false)
When set to true the webshop will finalize the shipment instead of the ERP software. Normally the ERP will complete the shipment

3) DeliverySettings\CheckConsistencyShipmentBeforeCreatingOrder = true / false (Default = true)
Checks if the basket contains the same items as has been entered in the shipment. So we check if somebody alters the basket after the shipment has been made. If the basket has been changed. The shop will redirect you to the choice shipment step

4) DeliverySettings\TaxIsIncluded = true / false (Default = false)
If set to false, the shop still needs to add tax to the returned price from the delivery service.

OrderUnitsSettings options:
-------------------------------------
To be able to work with an external delivery provider. We need to at least the following settings, those settings will be used to match product properties like weight, length, etc.:
1) OrderUnitsSettings\CommercialUnit\WeightHeaderId
2) OrderUnitsSettings\CommercialUnit\HeightHeaderId
3) OrderUnitsSettings\CommercialUnit\WidthHeaderId
4) OrderUnitsSettings\CommercialUnit\LengthHeaderId
5) Article\WeightPropertyId*

* Please note that WeightPropertyId should be the same ID as WeightHeaderId

Article properties:
------------------------
Every article must have a weight, height, width and length connected to the above settings to be able to create a delivery. Without a delivery, an order cannot be created.

====
Shoxl webservice
====
At the moment it is only possible to connect to Delivery Match. In later stages it is possible to add other delivery service providers

To activate Delivery Match you have to set the following AppSettings in the web.config:
DeliveryService: value=DeliveryMatch
DeliveryApi:secret value=[API secret ]
DeliveryApi:password value=[password ]
DeliveryApi:userName value=[username ]
DeliveryApi:baseUrl value=[URL to delivery match API ]
DeliveryApi:ClientId value=[ClientId ]
DeliveryApi:ClientChannel value=Shoxl webshop
The shop can now handle the following rules:
1) If (B2C or B2B) sale to outside Europe, shop will use 0% vat.
2) If B2B sale to another EU country*
the shop wil use Reverse Charge (0% vat)

*The EU countries can be modified by adding or deleting country codes. This can be done in the web.config of the Shoxl.Shop core

Edit the following setting: shoxlpro:ViesCountries
Add countries comma separated:
By Default the shop will use the following values:
AT/BE/BG/CY/CZ/DE/DK/EE/EL/ES/FI/FR/HR/HU/IE/IT/LT/LU/LV/MT/NL/PL/PT/RO/SE/SI/SK/XI

Work still needs to be done:
At the moment the shop support multi price regions. But there is no way to import multiple price regions.
(Case 72225)
It has been made possible to display specific styling when an article has a discount price.
A quickview has been created, in which a product variant is shown in an overlay so a customer can see details and order without leaving the overview page.
The payment methods: Bancontact & Apple Pay are now available in the webshop. They can be activated in the section: 'Payment/PaymentMethods'
To activate Bancontact add the number: 2097152
To activate Apple Pay add the number: 1048576
The packages calculator module has been changed so that it can now handle non-integer numbers.
An option to select a specific pickup location for an order has been introduced
A bug in the Mailchimp subscription functionality has been fixed. The handing of additional (custom) fields contained an error.
Changed interpretation of NettoPricePerItem field in PriceList and CustomerPrice XML of Exact BatchInterface. The NettoPricePerItemExclVat is the price including discounts.
Fixed bug that in some cases caused webservice to return wrong (0) 'from' price for price discounts
Exact BatchInterface now only exports accounts that have the accountStatus Customer
Order XML is now exported again in insbou order format
Fixed bug that in some cases caused a partial export of a pricelist
Orderline quantity that was exported in order XML is no longer converted to integer when importing order in Exact by the Exact Batch Interface
The ERP Cache now supports the import of decimal values for orderline quantity. The Exact Batch interface now supports the export of decimal values for orderline quantity.
Increased RavenDB session limit in order to resolve problem that occurred for a large order
Fixed error that occurred when importing classification nodes in empty classification.
Implemented fix for Value cannot be null error that sometimes occurred when paging data in Exact Batch Interface.
Fixed Unkown error in article import that was caused by duplicate assetIds ArgumentException when importing assets.
Resolvedn bug that in some cases caused an Exception when importing price documents in Raven database
Vendisto is now capable of defining a subset of articles to a specific feed. There is a new section Feeds in Vendisto/Settings, where all available feeds are show. There you can enable/disable a feed and copy the feed url,
Furthermore, it is possible already on article level to select a feed, in which the article will be included.
There is also import/export functionality with which you can specify the article subsets and to which feed/s they will belong.

december 2020

release 2021.07

Een korte maand, met alle feestdagen - maar toch is ons productontwikkelteam er weer in geslaagd om goede voortgang te boeken, vooral op het gebied van kwaliteitsverbetering. U merkt er wellicht niet zoveel van, maar dat is juist de bedoeling. Geen wijzigingen op Vendisto echter, deze maand.

Bug solved in RavenDB 5. Ordering on Integers is not supported so we will transform the value(position) to a long
If an article doesn't have the Commercial Unit property the default order interface will be used. in the old situation this would result in an exception.
The eletter subscription option now supports additional field (defined in Mailchimp).
If the debtor number is available in the quotation e-mail data it will be added as a visible element in the e-mail.
If the delivery address external ID is available in the quotation e-mail data it will be added as a visible element in the e-mail.
A bug in the display of company specific fields has been made. The company specific field would not show in some cases.
The number of fields that can be made mandatory in the registration form has been expanded.
Fixed the HTML for the tag in the order-confirmation mail. So it is used correctly and the details, billing adress and delivery address are alligned correctly.
When the publication state of an article changes it will no longer be displayed on the favorites list.
Sale item thumbnails can now optionally display an order button.
The restricted order list will also display the article number from now on.
An error in the filtering query resulted in invalid results in some cases.
Implemented generic solution for the mapping of shipping methods and salesperson for orders in Exact Batch Interface
A bug was solved that prevented stock to be shown for an article in a (rare) case where the article was was not included in a pricelist while using the ERP cache as stock provider.
Fixed bug that caused the mapping tool to sometimes stop processing a file in cases where the tool too early tried to process the file.
Added extra check on empty rows in Excel import. Rows that occur after an empty block of 100 rows will no longer be parsed by the importers.
This approach prevents the import from consuming all server resources in the rare case that Excel sheets with over one million empty rows are uploaded.

november 2020

release 2020.11

In de november release is het onder andere mogelijk geworden om per orderregel een gewenste leverdatum in te voeren. Deze kan worden weergegeven in de order bevestigingsmail. Het is ook mogelijk geworden om geselecteerde producteigenaschappen mee te sturen op orderregelniveau.

Aan integratiezijde is vooral aandacht besteed aan de issues die soms optraden bij het verwerken van zeer grote datasets.

In Vendisto heeft de aandacht gelegen op het losmaken van enkele klant-specifieke elementen uit de standaard oplossing. Het effect is dat CSS en vertalingen nu kunnen worden beheerd via Vendisto.

Upgraded Shoxl performance database to RavenDB 5.
The delivery date for an orderline wasn't displayed in the order conformation mail due to a bug in the mail generation code.
A new setting had been created that can be used to define the way the properties in the tabs on the article detail page will be ordered.
An optional required validation on the gender field in the customer request form has been added. This option can be disabled or enabled in the FormSettings.
If OrderUnits are being used they will be added to the order XML generated by the shop.
A bug in the generated basket HTML has been fixed.
An article image can now optionally be displayed in the improved order confirmation mail.
The possibilities to style the home category overview have been expanded.
The initial address selection and the address selection when navigating back in the order process contained some bugs that have been fixed.
Fixed a bug that prevented customer data in Vendisto from being saved.
Fixed a bug in the ArticleGroup Overview where the overview would remain empty if no prices are present.
In some cases generation of a barcode image would result in an corrupt image. This corrupt image would result in an unfound image in the shop. This would remain visible until the article would be changed and the caching on the barcode image would be triggered to build a new image, This issue has been improved upon so that a corrupt image will nog stay in the caching.
The properties tab button would be displayed even if no properties were available, this has been fixed.
The synchronisation of data from Vendisto to Shoxl now uses the ArticleHeader sequence as defined in the Vendisto to position the articles in the shop.
Not all available payment options where correctly implemented in de Vendisto Webservices. This resulted in certain payment options not being available to the visitor after selecting them. This has been fixed in this hotfix.
Implemented fix for Application Scope Violation exception that occurred when requesting users from Exact.
A bug in the importer that caused it to crash when importing a large collection of data has been fixed. The importer has also gained some speed as a result of the changes made to fix this issue.
Introduction of CustomerData XML format 2.2
- The PriceGroup element was removed from the XML definition
- A new PriceList element was added to the definition
Updated message bus handling in order to solve issues when synchronizing data from Vendisto to RavenDB at import time.
Solved exception that occurred due to large number of article groups when invoking Shoxl synchronization for IBH Export.
Prices in ERP cache are now rounded to two decimals instead of truncated when the import supplies prices with more then two decimals.
Added the funcion to dinamically change the styling of the shop, using the raven settings.
Added the ability to manage custom labels in Raven
The new custom error messaging is used across the Vendisto API. In the UI each error will be displayed in differently coloured touster depending on the HTTP response code.

oktober 2020

release 2020.10

Enkele highlights van deze release: aan de shop-zijde omvat de oktober release onder andere de mogelijkheid om artikel eigenschappen te classificeren en groepsgewijs te tonen. Op het gebied van integraties is de aandacht vooral gericht geweest op uitbreiding van de Exact interface. En binnen Vendisto vindt u nu onder meer nieuwe mogelijkheden om klanten aan kortingsgroepen te koppelen.

For a wholesale company selling tiles, a function has been created that allows a customer to calculate the number of boxes (containing tiles) that are needed to cover a specific number of square meters.
An option has been added enabling the shop to enrich an order XML file with additional article information in each orderline. This information is read from the properties of the article in the orderline.
The custom order confirmation mail has been extended with the optional display of the customer account number.
The option has been added to display article properties in the tiles used in the articlegroup en saleitem overviews. In the WebshopSettings it is possible to determine what properties will be displayed and in what order they will be displayed. There's also an option available to display brand, articlenumber, GTIN and manufacturer GTIN.
Product properties can now be classified, in order to be used/shown in separate sections. This could for instance be used to divide properties between tabs.
A new field has been added to the configurable contact form: "gender". This field currently supports 2 possible values: male and female.
An option has been added that displays the brand of an article on the article detail page.
A new setting has been introduced for hiding the tax numbers in the checkout
An improvement for the Order Unit module:
The shop can now convert the delivered volume to a given unit, this is for display only in the checkout flow.
This are the available options:
* Disabled = 0 (default), the volume will not be converted. It will be shown as it will be delivered to the webshop
* Millimeters = 1, the volume will be shown in mm³
* Centimeters = 2, the volume will be converted to cm³
* Decimeters = 3, the volume will be converted to dm³
* Meters = 4
The volume will be converted to m³
Please note that the shop only can convert in the following order: mm3--> cm3 --> dm3 --> m3 and not the way around."
A bug that caused an error message to be wrongfully displayed when ordering a sale item has been fixed.
Articles that make user of order units can now also be ordered from a tile in an overview.
The logic that determines if a user is allowed to order an article (when using authorization) was flawed and has been improved.
The barcode displayed on the article detail page would result in a server error when attempting to render the barcode for an article without a GTIN value.
A bug in the display settings for the customer type options in the customer registration form has been set. It was no longer possible to display a business type only form.
Added the configuration of a PriceUnitType to the Exact Batch Interface.
PriceUnitType BaseUnit takes the active itemprice with the highest unitfactor and recalculates the price to a price per base unit. The minimumorderquantitity is then set to the unitfactor of the itemprice. This will enable the shop to show the price per individual item. The customer can only buy items in amounts that are based on the number of items contained in the package.
PriceUnitType PackageUnit takes the active itemprice with the highest unitfactor and keeps the unit of this itemprice with a minumumorderquantity of 1. This will enable the shop to show the price of the package and te customer to select the number of packages we wants to order.
PriceLists, CustomerPrices and DiscountPrices are also recalculated based on PriceUnitType.
Fixed an issue that prevented multiple exact authenticator applications to simultaneously operate on the same server. Updated format of Customer batch export to XML version 2.1.
Article price list discounts are now determined on the basis of the debtor number, rather than the username.
Removed repositioning of articlegroups in classificationnode after declassification of articlegroup in article import in order to fix performance problem
Solved performance issue that occurred when importing articlegroups with ArticleGroup importer.
Fixed bug that occurred in articlegroup import when VatRate columns where missingFixed bug that occurred in articlegroup import when VatRate columns where missing.
Fixed bug that caused DisplayOrderBoostString to be overwritten by articlegroup position
Fixed unknow error in customer Excel import that occurred when importing customer without userrights column
Fixed bug that prevented mapping of EUOTHER and NONEU delivery costs to corrensponding articles for Huvema Order when placing order in Exact
Fixed bug that caused Exact batch interface to export customer addresses with legacy element names for addreslines.
The price importer contained 2 bugs. The first bug was an exception occurring when an article couldn't be found in the target database, causing the import to fail. The second bug was the fact that the article asset synchronization was being triggered by the price import while this is not needed in this case. Both issues have been fixed.
An option has been added that enables the classification of properties into several categories (1 per property). To make this possible a new module has been added that enables the management of the categories. A category can be created, edited and removed. It's also possible to change the position of the categorie in the list in Vendisto. This position is reflected in ShoxlPro by the order in which the lists of properties are displayed. A category can be connected to a property by selecting it in a dropdown in the property detail page in the properties module.
New-Product webhook added! This hook is triggered on simplified article import for each new product.
Vendisto now has a new pricing system enabling simpler price management. New in this implementation is the option to add customers to a price group that enables a default discount percentage for all the articles available to the customer.
Case 69020: added possibility to authenticate also with x-api-key header
Data pool fields are no longer editable in the user interface
The data pool fields can be added to an export sheet only if the shop is externally populated and the used has selected the "Include datapool labels" option when exporting
Added a new section in Vendisto, where publicly servable files can be uploaded and managed.
Adding overlapping items has been limited to one of a type. This means that Image Blocks can still have an overlapping Text item or an overlapping Button item, or both. However, trying to add a second Text or Button, respectively, will not produce any changes. The action of adding overlapping items is still in the Image Block settings
In order not to confuse users about how much columns are there in a Row, Rows will no longer change their width when the "Full-width" option changes value. To see how the page will look like on the webshop, click on the "Preview" option at the top-menu of the Editor
Rows that are hidden or not accessible for the selected authorization profile will be grayed-out.
The process of hiding rows remains the same. The process of adding/removing authorization profiles also remains the same.
To see how the page will look in the webshop, select the "Preview" option from the Editor top-menu. Grayed-out Rows will become invisible.
Users can now use the Image Block settings to add images in addition to double-clicking the Block itself.
The "Add Image" button can be accessed by selecting an Image Block and clicking on "Component Settings" in the side menu
Users can now use URLs instead of searching for the Video ID when trying to add videos. Supported providers are YouTube and Vimeo.
The URLs should be valid and lead and lead to an existing video. Otherwise, the player will display a warning message accordingly.
The video will assume its provider automatically and update its settings appropriately.
When editing a feed mapping line, the feed name disappeared. This has been fixed.
Instead of needing to double-click a Text Block in order to edit it, it will now require only a single-click. This was perceived as more intuitive and user-friendly
Users can now directly start typing once they add a Text Block. The added Block will be highlighted and the Rich Text Toolbar will appear.
The process of adding Text Blocks has not been changed.
Data pool fields can now be populated only by an external import
When importing article groups for non externally populated shops, the normal title will be used to match the importing records with those already in Vendisto
Fixud a bug where datapool fields were geting exported, rather than the regular fields the translations import/export

september 2020

release 2020.09

De september release omvat voor Vendisto een interface met Channable, en diverse faciliteiten voor een flexibele definitie daarvan. Verder is veel aandacht besteed aan het opschonen van prijsmanagement en BTW tarieven. Highlights op integratie vlak zijn een verbeterde integratie met Exact Online en AGP. Aan shop-zijde zijn vooral diverse problemen in het bestelproces verholpen, die zich konden voordoen in specifieke uitzonderingssituaties.

A new header menu has been implemented. The new menu will be displayed in the website header and will display all the root categories in a bar with a fold-out menu while hovering over these items. This fold-out menu contains the child items and their children in a list type display.
A bug has been fixed which prevented correct functioning of the Account Activation page.
A bug which prevented alternative deliver adresses to be shown, has been solved
A bug has been fixed that caused an error page when searching while logged in as a user with UserRestrictedArticleLists attached.
Fixed in bug in the logic determining what restricted order lists a user is connected to.
The mobile shop has been updated to the latest ShoxlPro core version. Some improvements have been made in the communication of messages to the app user.
A bug has been fixed in the order process that in some cases prevented a logged in user to place an order when using UserRestrictedOrderLists.
A user that has no UserRestictedArticleList(s) attached to his/her account will not automatically have access to all UserRestrictedArticleLists that are available to the customer the user belongs to.
An order for a passerby customers is now fully mapped to a new created customer account in Exact.
The interface to Exact Online now uses the Shoxl API key instead of a customer key. Furthermore, several changes have been made to the Exact batch interface parts: Delivery Costs are now optional, classification of the Delivery Account can now be specified, and Outlet/Sale price functions are now set per Shoxl shop user.
A bug has been resolved which prevented the import of ProfileRestrictedProduct files. These files describe for each authorization profile which products should be shown in the default product list that a customer with such a profile sees in the customer portal, after logging in.
Shortcomings of the feed response fixed. Image link is still under discussion.
The new UI for the product feed settings is more intuitive. It has two columns to choose product feed setting value. One is called Setting value where you specify the value of the setting with plain text. The other is called Product property where you can select to map a already existing product property value to the product feed setting value
Column is renamed to Product Property for better understanding.
The feed can be requested via two separate requests depending on the desired feed format response. There is one for XML and one for JSON. The request structure can be found in the Swagger APi Documentation.
Fixed a bug where an error message would appear when an article is selected for an orderline
Fixed a bug where when the user right section is not enabled for a Vendisto customer, users could not be saved.
Fixed a bug where the VAT rate for an article will not be updated in the performance database.
Article importers speed optimization by changing the queries
The orderline price per unit gets automatically populated when an article is selected
Creating VAT rate for a country with no rates will automatically make it default and assign it to all article groups.
Changed article price information labels
Changed the information text on the order line pricing information section
The price list price for an article now uses the debtor number for customer identification, rather than the username of its users.
The XML that is sent on the Order Confirmation Event was not formatted properly in the message body. This has been corrected.
Users will not be able to have more than 12 Cells in a Row. A placeholder will not be shown when hovering over such Rows.
Users can safely add videos, being sure they will be displayed accordingly in their webshop
Users can now safely use the "Delete" keyboard button to delete Blocks from the Editor

augustu 2020

release 2020.12

Highlights van de augustus release zijn de uitgebreidere ondersteuning voor het bestellen in diverse verpakkingseenheden, en in Vendisto de nieuwe facilteiten voor het beheer van BTW tarieven en de uitbreidingen van de Vendisto API met diverse REST hooks. Ook is op de achtergrond veel werk verricht aan updates aan de Shoxl infrastructuur. Niet direct heel interessant vanuit functioneel oogpunt, maar zeker wel vanuit de verhoogde betrouwbaarheid en de snelheidswinst die hiermee is geboekt.

ShoxlPro can now work with several packaging units. This means that the shop can be enabled to allow ordering by several units. For example: an article can be ordered bij "Commercial Unit (a box of articles), a pallet layer (several "Commercial Units") or a pallet (several pallet layers).

When ordering one of these packaging units into the basket the number of ordered articles will be shown because all price information works on a per article basis.

The packaging units in use and their values for a specific article can be defined in de article properties. What property is used for what packaging unit is defined in the webshop settings.

It is not mandatory to use all 3 packaging units, it is possible to use just 1 or 2.

An additional option to this is the display of weight and volume per article in the basket and for the basket as a whole. The properties needed to calculate this can be stored in the article properties and the webshop settings again define what property to use for weight and volume. This information will be displayed in the basket, the order process and in the order confirmation mail.
Added the data-attribute 'data-stockmessage-targetid' to each order view, so that each order view displays a message when the user tries to order an amount higher than the current available stock. Also moved the order feedback components to a separate div.
A new option has been added enabling the removal of duplicate items in the main menu. These duplicate items are caused by classification nodes containing only 1 child automatically redirecting to this child. This option is by default disabled.
The order confirmation mail generated with the new layout now has the possibility to display an image for articles on each order line.
Fixed bug in import of ErpCache Orderhistory that caused the Vatcode to be imported with a wrong value
A new way to determine what the homepage for a webshop is has been implemented. This enables the possibility to set a page using the new "PageEditor" template as the homepage.
A new module has been added that allow users to specify VAT rates per region. These rates are now set in the section Settings / VAT rates.

VAT rates for a region will be automatically applied to all existing and new articles that do not yet have a VAT rate for that region. These products will then get the default rate for the region. If applicable another VAT rate may be chosen at the product level.

It is assumed that all variants of a product (articles of an article group) have the same VAT rate. It is therefore defined at the product (article group) level, not at the variant/article level.
A module has become available for the creation and management of tokens that are used by external applications when authenticating to the Vendisto API.
New REST hooks give you the ability to subscribe and unsubscribe to certain event types - new order, new customer and new news item. When you subscribe you make a POST request to the Vendisto API and provide the hook url (to which we will send the data when the event occurs) and the event type (New_Order, New_Customer, New_NewsItem).

For authentication purposes a token can be generated on the Application Management page in the Settings of Vendisto. Each request to the API must consist of Authorization header with value - Bearer + space + token.
Vendisto is now capable of sending a JSON-formatted message to an endpoint, as specified in the Document Settings section, on Confirmation of an Order.
A setting has been introduced that defines whether product data originates from an external source. When this is the case, a button will be shown on the Product screen , section Description, that triggers the visibility of the fields that show the imported data. These fields are called "Original Title" and "Original Description Header/Footer".

The shop will use the Title, Description Header and Description Footer fields. Initially, these fields will be set to the imported data, so equal the Original field values. They may be changed by the user however.
The article group import/export has been extended with VAT rates for each country. So the number of columns is the same as the number of countries. These columns are not required. Each cell contains the applicable VAT rate for that article in the country specified in the head.
The buttons Ask a Question and User Manual on the Vendisto homepage now link to the Contact Page and the User Manual on the Shoxl site, respectively.
A bug has been repaired that prevented the "Back" button in the Vendisto customers section from working correctly.

Release 2020.07 (juli 2020)

In de Juli release is veel aandacht besteed aan het doorvoeren van verbeteringen in de Shoxl Scan App - de App waarmee u snel winkelmandjes samenstelt door barcodes te scannen. Verder zijn diverse uitbreidingen in de Drag & Drop page editor beschikbaar gekomen.

A scan of a barcode could results in more thanone find, because the search function also looked for the scanned GTIN in other fields such as the description field. For this reason the search and barcode scan functionality has been changed. The general search in the top of the app still works as before. The quick order in the basket and by extension the search function underlying the barcode scan has been changed. It will first attempt to find an article based on article number or GTIN, if this is unsuccessfully it will revert to the basic search functionality as described above.
The default configuration of the scan app has been changed to make sure that only secure call (HTTPS) are being made.
When switching users the values that had been entered in the field "Project number" and "Remarks" in the order process would be carried over to the new user. This is not a desired feature and has been changed by emptying the field when switching users.
Error messages originating from the search, quick order and scan functionality would get "stuck", meaning they where never hidden after display. This has been fixed. We have also implemented a new more user friendly way of displaying error messages.
We fixed a bug where a user after logging in from an article detail page would be confronted with a totally grey content pane in the scan app.
Introduced new setting "DisplayCustomerSelectedArticleProperties" (boolean). If set to true, all properties that are specified in CustomerSelectedArticleProperties will be displayed in a separate group/block. The properties specified in CustomerSelectedArticleProperties have higher precedence than normal properties of an article. So properties specified in CustomerSelectedArticleProperties will not be displayed in the normal property list of an article. The CustomerSelectedArticleProperties contains a list of header id's. Optional, a css class name for this property can be specified. If no css class name for a property is specified, then an index will be used as css class name.
"The article property table can now be ordered in the order specified in Vendisto Properties. The order as specified in the article import will then be ignored. The setting can be activated by adding a setting UseHeaderCollectionOrderingForTheArticlePropertiesTable with value = true."
The text displayed in de CSV quick order userinterface is now presented in the HTML format, enabling more elaborate layout options. The text is set in the resources table.
The article name in the favorites list can now optionally be wrapped in an anchor element.
A new setting has been added that will disable all order options in the favorites list when set to true.
"When trying to change slides on a carousel in the shop, an error was thrown. This was caused by the carousel arrows having an invalid "href" attribute. The href was changed to point to the carousel ID, as in Bootstrap 3's documentation"
A bug has been fixed that caused the shop to return a server error (500) instead of a 404 error when handling an url leading to a category, articlegroup or article with a suspended lifetimestate.
Fixed a bug that caused the article price information not to be retrieved correctly.
The articles in the CategorySlider where being displayed in an incorrect order, this has been fixed.
Disabled automatic formatting of XML files that are converted to Zip format in order to solve a problem that was caused by the formatting.
Orders from new customers can now result in the automatic creation of a new debtor in Exact, instead of being attached to a general collective debtor number for small customers.
An additional web hook event has been introduced. This is the New_Product hook event which sends the new articles from simplified article import.
66390 Page Editor: components now take full width of container (no padding)

Padding on some components was causing confusion about the component positioning. The paddings are now consistent and should be a closer match to end-user expectations

66305 Page Editor: All slides should have the size of the biggest image

Carousel was constantly switching height because placeholders had a fixed height independent of the images placed in the carousel. The behaviour was updated, so that placeholders have the same height as the highest image in the carousel. This should be more consistent with user expectations, especially if users fill the carousel with images having the same height

66304 Page Editor: Add hyperlink, alt for images/slides

The carousel component was capable of adding/removing images only. Images in the carousel can now point to a particular hyperlink (added from the side menu) or have an alt text (added from the image browser dialog)

66312 Page Editor: 12 col container that does not stretch the full-width

Previously, users had the option to place rows that span to the full width of a page only. Now they can make use of the container and container-fluid Bootstrap classes. By setting an option in the Row side menu, the selected Row will either occupy a fixed width (changing per device) or span the full width of the screen

66310 Page Editor: Change list element template and settings

List and item blocks now render a placeholder when dropped on the canvas. Furthermore it is now possible to specify the type of item that is to be rendered (product, news, wiki).

66591 Page Editor: Placeholders in shop for missing images

Image components without an image were displaying a placeholder in the editor, but as a missing image in the shop. Placeholders are now made available in the shop as well

65344 Page Editor: Hiding/showing content depending on device size

Bootstrap provides utility classes which enable users to hide HTML elements for different device sizes. Users can hide Rows by clicking on the crossed eye icon in the Row toolbar. Hidden rows can then be viewed by clicking on the same icon in the editor top bar

66998 Page Editor: Changing an image does not update site

Changing images (or other properties) should update site

66996 Page Editor: Label PageEditor positioned on top of image upload dialog

The upload dialog covers everything on the page

66315 Page Editor: Responsive height is lost on duplicate/move

Carousel slides and images should resize to keep the aspect ratio of the selected image. The behaviour was breaking when moving or duplicating components. Both now preserve their height even when moved or duplicated.

Release 2020.06 (juni 2020)

In juni is de eerste versie van onze volledig vernieuwde PageEditor beschikbaar gekomen. Met deze editor kunnen volledig responsive pagina's worden samengesteld via "drag-and-drop" van blokken. In komende releases zal de editor nog verder worden uitgebreid met nieuwe contenttypes.

A new "PageEditor template has been created in Vendisto and is now available for use in ShoxlPro. This editor gives total page layout freedom.

A totally revamped editor allows our users to build content in a more visual way, by dragging/dropping components. The resulting page is fully responsive (uses the Bootstrap framework).

The first version of the editor supports a limited number of building blocks. This set will be extended in the near future.

The editor can be activated by selecting the template "PageEditor" at creation time of a page.
All images in the ShoxlPro shops can now be served via Cloudflare CDN. This means a decrease in page load times and better security when it comes to attacks. This feature is optional. It requires the shop to be configured to use the caching layer. The feature requires a subscription.
The shop now shows both original and discounted gross prices, based on gross pricelists that are maintained in the ERP system.

The capability to shows customer-specific price lists (discounts) is also still available. It is thus possible to show, for a specific article, the original price, the discounted price, a customer-specific price, and if applicable also pricing discount based on volume.

Technical background: Implemented outlet and action pricelists to be exported as discount prices in brutopricelist, ERP Cache pricelist and ERP Cache customer prices for Exact batch interface.
"The new "PageEditor" template content will always be shown at full page-width (100%). This allows users to create banners/wows that span a whole page. Content that needs left/right whitespace must now be placed in a container.

Please note that this also requires a change of the CSS used for the shop; otherwise, standard bootstrap behaviour will result in a small amount of whitespace to the left and right of the row content."
The PageEditor template offers the option to specify which users can view the row content. This works on the row level, e.g.: the user will either see all content in all cells (columns) in a row, or the user will not see the row at all. Both rows and users are added to one or more authorization groups. The user sees all rows that are visible for the authorization profiles the user has been added to.
The order confirmation mail can now show product images. The images will be shown in the order confirmation mail by default en can optionally be disabled by the mail styling.
An articlegroup search result sometimes displayed the article image instead of the articlegroup image. This has been fixed. The articlegroup search result will now always display the image belonging to the articlegroup. If the articlegroup doesn't contain any images an article image will be used.
Vendisto instances that get data from an external datapool (such as EZ-Base, IceCAT or 2BA) show for relevant fields both datapool product data and the product data that has been modified by the user.

The button that shows/hides the product datapool data for a specific user is now only visible for Vendisto instances that are actually connected to a datapool.
For a better "what-you-see-is-what-you-get" experience Vendisto content editors now use the same styling as applied in the shop itself. The CSS to be used can be specified in Vendisto (Settings/Vendisto/Page editor external styling).

Images that are uploaded in the Vendisto editor now get the "img-responsive" class. Previously this class was only applied at page rendering by the shop. By adding the class to images in the editor we ensure that they are equal to the cell width here too.
Optimized import of WebShop XML files. The import now compares articles with the previous import and skips them if they are unchanged.
It is now possible to sum product stock in multiple warehouses, in order to show total stock.

Technical background: Shoxl Webservice using ErpCache Connector now retrieves new Stock table data in GetProductInformations function. Old location of stock data is used for legacy installations. ERP Cache Stock import now supports stock per WarehouseId. Stock is imported in new table named Stock. For legacy purposes the old stock field is preserved.
A cashback overview has been created which is accessible from the user portal and via the user menu. The cashback overview will show the cashback, the cumulative sales volume and the date until which it is calculated.

The Cashback overview can be enabled via the website settings
It is now possible in the order confirmation email to override the Articlenumber from a orderline by an Article property

Technical explanation:
To be able to override the article number by an other article property you should setup two properties:
1) OverrideArticleNumberWithCustomerArticleNumber: true
2) CustomerArticleNumberArticlePropertyName: "[PropertName]"

The second property will be used to match with the Article Property list node. So if [ProperryName ] is called 'CustomerArticleNumber'
The linked articles should have property field named: CustomerArticleNumber
And the value of this property field will be used to be overriden in the order confirmation email.
Connected Shoxl webservice to renewed VelService that was developed by MSG
A bug that prevented product data import because it caused a high load on the caching layer (RavenDB) has been removed.

Technical info: Fixed NullReferenceException in CategoryAssetsChangeListener. Optimized memory usage of importer."