Sprint 58

may 30, 2025

 

Sprint 59 brings powerful upgrades to the order history, with advanced filtering, sorting, and smart search options. We’ve also improved packaging unit handling in our interface with Exact Online, extended our Microsoft D365 F&O interface with support for product data, and ensured performance stability with heavy traffic caused by search engines indexing your site.

Plenty of smaller features and fixes too — from VAT accuracy to external image syncing to multi-currency price exports.

👉 See something useful? Reach out to Shoxl — we’re here to help you get the most from our evolving e-commerce platform.

 

The order overview has been upgraded with an advanced view that helps users quickly locate relevant orders through enhanced search, filter, and sort capabilities.

This new view includes:

  • Search functionality by order number, customer reference, article number/name, and order date.
  • Filters by order status (e.g. All, Open, Delivered, In progress).
  • Sorting options on all order-level columns, both ascending and descending.
  • Improved paging and significantly better performance.




The search requires a minimum of one character and displays a clear result set, including a customizable "no results" message when applicable. Long result lists include a “show more” option to reveal additional items in batches of 20. A clear filter icon allows users to quickly reset search and filter inputs.

This functionality is only available when the Shoxl ERP caching layer is active and must be explicitly enabled through the LayoutSettings.

In Exact Online, it's possible to define multiple package units for a single article (e.g., units, boxes, pallets). To represent these in the shop, the Exact Batch Interface can create separate articles for each package unit. Each of these receives a unique name—typically the article description followed by the unit size—since Exact does not assign a unique GTIN/EAN to each packaging variation, but the shop requires unique identifiers.

Until now, each of these generated articles was placed in its own article group, resulting in multiple single-item groups. This approach ensured consistency with the shop's structure (which always expects article groups and their variants), but it also meant that no variant selection page was shown.

A new feature now allows these related articles—each with a different package unit—to be grouped automatically together under a single article group using the MapPackageUnits:GroupArticles setting in the Exact Batch Interface. This results in a true variant experience for visitors when multiple packaging options exist.

The article group page then displays all variants, allowing users to choose between package units through icons, a dropdown menu, or a list format—depending on the shop's configuration.

We’ve introduced a deeper integration with product master data in Microsoft Dynamics 365 Finance & Operations, making it possible to manage commercial product content directly from F&O—similar to how a PIM system would operate.

This advanced interface allows for:

  • Multilingual product category support and full category hierarchy integration via OData endpoints.
  • Access to product images and attachments through ReleasedProductDocumentAttachments.
  • Retrieval of article-level attributes via ProductAttributeValuesV3, enabling enriched metadata and filtering.

These enhancements bridge the gap between ERP-managed product data and rich e-commerce presentation, supporting localized content, better filtering, and consistent product experiences across markets.

An OData layer has been introduced on top of the Shoxl Webservices used to retrieve order history data from the ERP cache, the cache we use to store ERP data in the background to speed up retrieval and display.

OData (Open Data Protocol) is a standard protocol for querying and updating data using RESTful APIs. It allows clients to request only the data they need, apply filters, sort results, and handle paging—all using a consistent and widely supported format.

With this new layer, it is now possible to access order history data more flexibly and efficiently. The OData implementation supports advanced filtering, field selection, and pagination (such as skipping or limiting results), making it ideal for integrations and reporting tools.

This feature requires the ERP Cache connector to be active and an API key to be configured for secure access.

The article group import functionality has been extended to support multiple classifications, including the ability to specify article group positions per classification path.

Previously, the import format supported a single Position field, which was not sufficient when dealing with multiple classifications or deeper category structures. With this enhancement, the import can now handle multiple classification paths and assign specific positions within each path.

To achieve this, the import format now allows repeated pairs of fields: ClassificationPath_1, Position_1, ClassificationPath_2, Position_2, etc. These fields map to the ClassificationNodePosition and ArticleGroupPosition values in the ClassificationNodeArticleGroup table.

In systems with multiple classifications, an additional level of indexing is used: for example, ClassificationPath_1_1 and Position_1_1. The first number indicates the classification index, while the second indicates the position within that classification structure.

The classification path includes both the path itself and the name of the classification. The import supports the following scenarios:

  • Single classification and single category
  • Multiple categories within a single classification
  • Multiple classifications
  • Multiple classifications with multiple categories

After the import, all updated article group positions are automatically synchronized to the shop.

Vendisto supports assigning an article group to multiple classifications when configured accordingly. However, the bulk Excel import function in the PIM encountered an issue when different classifications contained identical node names at the top level of the structure.

This caused the importer to match article groups with the wrong classification, which in turn resulted in incorrect categorization and—in some cases—a generic "Unknown error" during import.

This problem has now been resolved. The import logic has been updated to correctly distinguish between identical node names across multiple classification trees, ensuring accurate classification assignment during bulk import operations.

Shops often receive background traffic from search engines that scan and index product and content pages. In certain cases, this indexing activity caused unnecessary load, which could lead to performance degradation or temporary unresponsiveness.

This issue has been resolved by optimizing the way such traffic is handled. The shop now processes background indexing more efficiently, maintaining stable performance even during periods of intensive crawling by search engines.

In Exact Online, it's possible to assign the same email address to multiple contacts within a single customer account. This can lead to duplicate user creation attempts when ImportContactMode is enabled, as each contact would trigger the creation of a user with the same email and user ID—causing import errors.

To resolve this, a deduplication mechanism has been implemented. When ImportContactMode is not set to None, the system will now create exactly one user per unique email address within a customer, based on the combined set of the main contact and associated contacts.

Email addresses must always be unique within a single customer. This is necessary because email can be used as a login credential in the shop. The Shoxl platform supports login via either debtor number or email address—but email-based login only works correctly when the address is unique within the customer's scope.

An email address may appear in multiple customer accounts. If a user logs in with such an email address, and that address is linked to several customers, the system will prompt the user to select the correct account from a list.

This enhancement ensures a consistent import process, prevents duplicate user errors, and guarantees correct login behavior based on unique user identities.

In the Vendisto platform, users—not companies—log in to the shop. When a customer is imported without any associated contacts, a default user is automatically created to enable login.

Previously, if contact data was imported at a later stage, Vendisto would create a user account for each contact and delete any users not included in the import—based on the assumption that the contact user list was complete. As a result, the initially created default user was removed.

This caused confusion for customers who had already started using the shop with the automatically created default user account. Once contacts were supplied, the default user could suddenly no longer log in, even though the credentials were still familiar to the customer.

This behavior has now been corrected. The system will preserve the default user that was created during the initial import, even if contacts are imported at a later time. This ensures uninterrupted access for users who were already logging in before contact data became available.

Resolved an issue in the quote request flow where the payment method was automatically preselected as "Buy on Credit" if it was available for the customer. If this method had a configured payment discount, the discount was incorrectly applied during the quote process—even though no actual payment was being made at that stage.

This caused unintended pricing behavior and confusion during quoting. The logic has been adjusted so that payment discounts are no longer applied in the quote flow.

As a result, quotes now reflect the correct pricing without prematurely factoring in payment-related discounts.

The Microsoft Navision Batch Interface has been updated to correctly handle non-product order lines, such as shipping costs.

Previously, all order lines—including cost lines—were assigned a LocationCode. However, Navision does not support location codes on non-inventory items, which caused the order to be rejected with an error.

The system now omits the LocationCode for lines that are not linked to physical products, ensuring smooth order processing in Navision.

The PriceList export in the Batch Interface has been updated to correctly support multiple currencies per item. Although the XML format already allowed this, the internal implementation did not fully process prices defined in different currencies.

With this improvement, customer prices can now be exported with multiple currency values—for example, both USD and EUR—within the same export block. Each NettoPricePerItemExclVat and DiscountAmountPerItemExclVat field includes a Currency attribute to clearly indicate the applicable currency.

This enhancement enables better international pricing support and integration with systems that require multi-currency price structures.

A bug has been resolved that affected the interaction between quantity selection and the "Add to Basket" button in order lists (used to manage favorites).

Users could increase or decrease the quantity using the plus/minus buttons, which correctly activated the "Add to Basket" button. However, when entering a quantity manually via keyboard input, the button became inactive—preventing the product from being added to the basket.

This issue has been fixed. Both manual input and use of the plus/minus controls now consistently activate the "Add to Basket" button, ensuring smooth ordering from order lists.

Resolved an issue in the Exact Batch Interface where the Customer Price export incorrectly applied an exchange rate conversion based on the article’s default currency, rather than the currency specified for the actual customer price.

This resulted in prices being exported with unintended currency conversions, leading to incorrect price data being returned to the shop or external systems.

The export logic now correctly uses the currency associated with each price entry, ensuring that no unnecessary or incorrect exchange rate conversions are applied.

Resolved an issue in the shopping basket where the total VAT amount was not recalculated after increasing the quantity of an item.

This caused the displayed VAT to remain incorrect until the page was refreshed or reloaded. The logic has now been corrected to immediately update the VAT total in real-time when quantities are adjusted, ensuring accurate tax display at all times.

Product images in the Shoxl shop can be uploaded and managed directly in Vendisto. Some customers, however, manage product images externally and reference them using image URLs instead of uploading them.

Previously, the synchronization from Vendisto to the Shoxl performance database did not correctly process externally hosted image URLs. As a result, images were sometimes missing on the product overview pages, even though they were visible on the article group page.

This issue has now been resolved. Images provided via external URLs are now properly handled during synchronization and consistently shown in all parts of the shop.

A bug in the Vendisto article import process caused classification nodes to be matched using their title instead of their internal name. This led to the creation of duplicate nodes whenever the displayed title differed from the system name.

This issue has now been fixed. Classification nodes are correctly matched based on their name, preventing unintended duplicates during import.

Resolved an issue where downloadable files could not be saved correctly in Vendisto when the user interface language was set to anything other than Dutch.

This problem was caused by language-dependent handling in the file creation process. The logic has now been corrected to ensure that downloads function properly regardless of the selected UI language.

Sprint 57

may 9, 2025

 

Sprint 57 brings smarter variant selection directly in article tiles, making ordering faster and more intuitive. Behind the scenes, we’ve made key progress on multi-shop PIMsupport and improved handling of packaging units in Exact Online. And we completed our Microsoft Navision integration.

Plenty of smaller enhancements too — worth a look!

👉 See something useful? Reach out to Shoxl, we’re here to help you benefit fully from the ongoing improvements to our e-commerce platform.

 

The article group overview page previously only showed the number of available variants per article group, without the option to select a specific one.

It is now possible to select and order a specific variant directly from the tile (or row, in list view). The selection dropdown is based on a product property that uniquely identifies each variant within the group—allowing for immediate and precise ordering.


Variant Ordering in Article Tiles


On both the article group overview page and the article group detail page, articles can be added directly to the shopping cart when the Quick Order functionality is enabled. The presence of elements such as the order button, pricing, product features, and stock information may vary per article group.

To ensure a clean and consistent layout, technical improvements have been made. Article cards now maintain equal height without relying on scripts, regardless of which elements are shown.

On article group overview pages, article groups with only one article can be ordered directly and typically show stock availability. When an article group contains multiple variants, users must first navigate to the detail page to select and order a variant.

In some cases, when both types of article groups were shown together in the same overview, the stock status was not displayed for groups with just one article—despite it being possible to show it there. This has now been corrected: stock information is displayed consistently for article groups with a single article.

Previously, the Exact Online integration included a setting that enforced ordering in the highest packaging unit when multiple units were defined for an article. In the webshop, this could be displayed in two ways: either purchasing in the largest packaging unit with its corresponding price, or purchasing per base unit with a calculated unit price, while requiring a multiple of the packaging quantity.

This approach has now been replaced by a more flexible and transparent setup. In Exact, you can now define a minimum number of base units per order, as well as the increment in which the item must be purchased. Additionally, if multiple packaging units are specified for a single item, each unit is now shown as a separate article in the webshop.

This change eliminates the need for the old ‘PriceUnitType’ setting and simplifies both setup and ordering logic.

In the upcoming release, articles representing different packaging units will automatically be grouped into a new article group. The minimum order quantity setting will continue to apply when ordering per base unit.

Static product lists embedded in content pages can now display the full order interface, including the order button and quantity selector.

This ensures consistent ordering functionality, regardless of where the list is used within the webshop.

The ArticleGroup Excel export has been updated to support both multiple classifications and multiple category assignments per classification.

Instead of using a single 'Classification Path' column with slash-separated values, the export now follows the same structure as the article export. Classification and level data are split into separate columns using a structured naming convention.

This includes:

  • Level_[category position]_[n] for single-classification setups with multiple category levels
  • Level_[classification position]_[n] for multi-classification setups with one category per classification
  • Level_[classification position]_[category position]_[n] for combined cases

The export also includes corresponding Classification_[n] columns to identify classification roots, enabling full import compatibility.

Vendisto now supports the import and display of customer-specific VAT rates.

This allows tailored tax handling per customer, based on external system configuration.

Uploading images in Vendisto would fail when the filename already existed, even if the upload was valid. This blocked users from replacing or updating existing images via the UI.

The issue has been resolved, allowing seamless uploads regardless of whether the filename already exists.

In environments where multiple shops are connected to a central PIM system—each with its own local (slave) PIM—it is now possible to block article data from being imported into the slave system.

This allows shops to import only locally relevant data, such as lifecycle status, while excluding centrally managed product content from the article XML feed.

It is now possible to place orders to Vendisto using the BuyOnCredit payment method in environments with multishop configuration.

This extends compatibility of the BuyOnCredit method with newer order routing logic across shops.

The ShippingCostAPI now correctly falls back to the general shipping cost configuration when no specific rates are defined for a user's linked pricelist.

This fallback already applied to guest accounts and is now consistently applied to all user types.

In certain configurations involving article groups and the article selection wizard, external image URLs were not displayed correctly. This was partly due to invalid characters in the image paths.

The handling of external images has been improved to ensure they are now properly shown in both overview and detail pages, regardless of the component combination used.

Users with full access rights were previously unable to open quote details, despite having the correct permissions.

This has been resolved so that authorized users can now view all quote details as expected.

News categories consisting of multiple words were not filtered correctly in the webshop. As a result, clicking on such a category did not always return the expected articles.

This issue has been resolved. News category filters now work properly, regardless of the number of words in the category name.

When a classification node or product is renamed in Vendisto, the corresponding shop URL changes. The previous URL is then stored as a historic reference, intended to automatically redirect to the updated URL.

A bug in this redirection process has been resolved. Historic URLs now reliably redirect to the correct new location when accessed by users.

When a classification node or product is renamed in Vendisto, the corresponding URL in the shop changes. The system automatically registers the old URL as a historic reference.

If a user accesses the old URL, the shop now correctly redirects to the updated URL.

An XML-based import option for product relations has been added, following the same structure and behavior as the existing Excel import.

This allows external systems to synchronize product relationships in a single step, without leaving outdated data behind.

The Microsoft Navision integration now supports ordering article variants. Previously, variants were not available in the webshop when using this ERP connection.

This enables full support for product variant structures in both browsing and order processing.

Within the Microsoft Navision integration, variant articles managed now support fallback pricing. If no price is defined for a variant, the system will automatically use the base article’s price.

This ensures consistent pricing behavior, even when variant-specific prices are omitted in the data source.

When logged in as a representative, the user dropdown menu now correctly displays 'Choose another customer' instead of 'Sign out'. This matches the behavior already present in the customer portal.

Previously, when a user switched from 'List View' to another display mode (such as 'Tile View'), the setting would revert back to the default view after applying a filter.

This behavior has been corrected. The selected display mode now stays active when filters are used.

In cases where a product had no image of its own, the webshop would automatically use the image from the first variant during synchronization to the performance database.

This mechanism did not trigger when the main product had a PDF document but no image. This has now been corrected: images from variants are once again used as fallback, even if a PDF is present at the main product level.

The view_item event in Google Tag Manager was not triggered in certain cases, causing product views to be missed in tracking.

This has been corrected so the tag now loads reliably across all relevant pages.

Orders that included component articles were incorrectly flagged as failed during the purchase tracking step. This led to confusion in order confirmation reporting.

The logic has been updated to properly recognize and process these types of orders.

When a guest account places an order, the integration between the shop and Exact Online can automatically create a corresponding customer record.

Previously, these records were created without a country setting, causing Exact to apply the default country code 'NL'—even for international customers. The country is now correctly derived from the invoice address.

The article table component could fail to render when the layout included AccumulatedProperties and one or more articles had no properties defined.

This scenario is now handled gracefully, preventing layout errors in such cases.

Sprint 56

april 18, 2025

 

This release brings powerful new personalization options, including customer- and product-specific content, to create even more tailored shopping experiences.

We've also expanded control over what logged-in and non-logged-in users see, such as stock visibility, giving you greater flexibility.

Our improved Dynamics F&O integration makes it easier and faster to connect new installations.

And as always, we've resolved several minor issues to keep everything running smoothly.

 

For articles that include multiple components, a direct "Add to order list" button is not always appropriate. We've updated the article overview pages (both list and tile views) to replace this button with a "View" button for such articles, guiding users to the detailed product page first.

With the Authorized Contents Template, you can show different content to different users or user groups based on their authorization profiles. Here's how it works:

A content block is linked to a specific authorization profile. Customers or customer groups are also linked to authorization profiles. After logging in, a customer will only see the content for which they have access according to their assigned profile. This allows you to deliver highly personalized content experiences within the webshop.

This mechanism operates in the same way as product authorizations in Shoxl: the system can be configured so that users only see the products linked to their authorization profile. With Shoxl’s authorization features, you can effectively offer every user their own personalized version of the shop.

We also fixed several issues related to the handling of authorized content blocks, ensuring that authorized content is now correctly displayed according to user profiles.

Dynamic content in Vendisto allows you to add product-specific information directly to product pages. It works by defining a layout with content blocks, where each block is linked to an editor in the "Dynamic Content" tab within the Vendisto CMS for that product. This gives you maximum flexibility to enrich product pages with tailored content.

Previously, a bug in the classification module prevented users from adding new subclassifications when dynamic content was active. The save button remained disabled, blocking the addition of new classification nodes. This issue has now been resolved, allowing full use of both classification management and dynamic content editing.

We introduced a new configuration option to tailor how stock information is shown to different user types. In the webshop settings, you can now define separately for anonymous visitors (passers-by) and logged-in users whether they see:

  • ColorIcons (stock status through color icons)
  • Numbers (exact stock quantity)
  • ColorIconsAndNumbers (both status and quantity)

This allows you to offer more detailed stock insights to logged-in customers while keeping information for anonymous visitors more general.

Google Tag Manager (GTM) simplifies managing tracking scripts on websites. Previously, enabling the "MeasureViewBasket" setting could cause crashes in the shopping basket when handling products composed of multiple components.

The GTM tracking code has been updated and now correctly processes these bundled products.

We've introduced the option to set distinct MultiSafePay API keys per country, based on the customer's invoice address. This enhancement provides greater flexibility in managing your payment processing across different regions.

Support for the Polish payment method Przelewy24 has been added to the webshop settings. You can now easily enable and configure this option for your customers during checkout.

The various F&O endpoints now provide timestamps along with their data. This improvement enables our caching layers to selectively import only updated records, making data synchronization faster and more efficient.

Microsoft Dynamics 365 F&O is highly configurable, which can lead to variations in how data is structured between customers. We have now developed a generic mechanism that interacts directly with the oData layer, making it possible to support multiple F&O setups without the need for customer-specific adjustments.

We resolved several issues that occurred when paging through search results after applying a price filter. Previously, the minimum and maximum prices set via the slider or input fields were incorrectly converted to integer values after moving to another page.

Now, the minimum and maximum price values remain accurate throughout navigation, and are correctly based on CustomerPrices or PriceList prices when applicable.

Some webshops use multiple classifications within the Vendisto PIM to manage different storefronts from a single system. Previously, these classifications were stored in a random order, causing the default PIM classification to not always appear first.

We have now introduced a mechanism to position classifications in a logical sequence in the database, ensuring consistent and predictable ordering.

Postmark is a reliable email delivery platform used by Shoxl to ensure smooth and dependable email communication. When placing a pickup order as a guest user, the confirmation email previously showed the customer's invoice address instead of the store's pickup address.

This has now been corrected. Confirmation emails for pickup orders placed by guest users clearly show the correct store pickup address.

A robots.txt file instructs web crawlers (search engine spiders) which pages or files they should or shouldn't access on your website. By default, the Shoxl platform automatically generates this file to ensure essential directives are always included.

We've introduced greater flexibility: You can now manually create your own robots.txt file. When this custom version is present, the platform will no longer overwrite it, giving you full control over specific crawler instructions.

Category pages previously experienced crashes when articles contained properties defined in multiple languages. This issue has been resolved, ensuring category pages remain stable regardless of language-specific attributes.

In Shoxl, article tables are fully configurable: you can define exactly which columns are shown by using our layout language — the same language used to design overall page layouts.

Previously, columns in article tables could get stuck on "loading" when viewed by users who were not logged in. This issue has been resolved. Additionally, a new LogInToView layout setting has been introduced, allowing any column to display a login button instead, redirecting anonymous users to the login page.

In Vendisto, images can be managed at different levels of the product structure: at the product variant, product, or classification node level. The webshop displays these images on the relevant pages and, when a product image is missing, automatically substitutes it with the image from the first product variant.

A bug that sometimes prevented this substitution from occurring has now been fixed. All article groups now correctly display an image in the overview, even when a direct product image is missing.

Delivery schedules can include overrides to block specific dates from being selectable. A bug previously caused some of these overrides to be ignored, allowing blocked dates to appear as available. This issue has now been fixed, and all exceptions are correctly enforced.

Previously, it was not possible to add an article composed of multiple components to the basket together with one of its standalone components. This issue has now been resolved, allowing both the bundled article and its individual components to be added to the basket simultaneously.

In Vendisto, the Batch Upload function for images could crash when uploading more than 100 images at once. This issue has been fixed, ensuring smooth and reliable uploads even for larger batches.

When ordering an article with components, using the back button from the basket did not correctly restore the selected configuration. As a result, the article page failed to load the appropriate price and stock information. This issue has been fixed, and returning to the article page now fully restores all selections and displays accurate data.

We developed a more memory-efficient version of the article export function, reducing server load when exporting articles to Excel. During this update, we also fixed a bug where articles imported from the ERP system without a Title element were unintentionally omitted from the bulk export. All articles are now correctly included in exports, regardless of title presence.

To prevent outdated data from being served, we've introduced an "expire after" setting (in hours) for cached responses from the Product and Product Group APIs. This ensures that order book information remains fresh and up-to-date without requiring manual cache clearing.

We fixed an issue where the Country field on the customer registration form was not always visibly marked as required, even though it was technically mandatory. The form now clearly indicates that the Country field must be completed.

We fixed an issue where products that had a customer-specific net price but no gross price could not be added to the basket. The order button now correctly becomes active as long as a valid customer-specific price is available.

We've optimized the synchronization process for images and other assets between Vendisto and the shop. Updates are now faster and more reliable, ensuring that new and updated product images are reflected in the webshop with minimal delay.

Sprint 55

march 28, 2025

Sprint 55 was all about enhancing quality and user experience. Highlights include improved handling of bundled products, making it effortless to combine a base product with required or optional components. We've also extended the capabilities of our PIM system, paving the way for smoother integrations with popular data distribution platforms like Channable. And uploading your order books? That's now faster and more efficient than ever!

In the shop, a component relationship can be established between a base product and related articles. This setup changes the behavior on the product detail page: components can be selected via dropdowns and added to the basket along with the base product. These components can be optional or mandatory. In the basket, the base product and its selected components are shown as a single line, which can later be split into individual order lines depending on the ERP system's capabilities.


Exact Online Item Charges


An issue arose where clicking back to a product with selected components from the basket failed to properly initialize the product detail page. As a result, the order interface appeared disabled and users could not modify or reorder the product setup.


Exact Online Item Charges


This behavior has been corrected. Returning to a product with selected components now properly initializes the page, allowing users to interact with the order interface as expected.

The basket encountered issues where removing a bundle item did not properly remove the associated product due to a flaw in the basket logic.

This behavior has been corrected. When a bundle is removed, the associated product is now correctly deleted from the basket as expected.

In Vendisto, new relation types, such as "replacement" or "complementary," can be defined. These relation types are categorized either as "related" or "component."

Previously, a timing issue in the Vendisto UI made it difficult to add related items correctly. This experience has been improved: the "Add Related Product" button is now more responsive and reliably available when setting up new relations.

This enhancement streamlines the process of linking related products, making it faster and more intuitive for users.

Channable is an online feed management and automation platform that helps companies distribute their product data to marketplaces, comparison websites, and advertising platforms. Within our setup, Channable connects directly to our generic Product API to retrieve product information for feed generation and distribution.

We have enhanced the AutomaticProductImportManager tool by introducing a small parser that supports dynamic placeholders in filenames. The available placeholders are:

  • {TIME}
  • {DATE}
  • {DATETIME}
  • {TIMESTAMP}

These placeholders allow greater flexibility: feeds can now have either dynamic filenames (based on the timestamp or date) or static filenames, depending on the configuration.

This improvement simplifies integration with platforms like Channable and provides more control over feed file management.

The article XML file forms a crucial part of the automated data stream between ERP systems and the shop. Imported article data is stored in the Vendisto PIM database, which then synchronizes with the shop.

Within Vendisto PIM, article data can be enriched with additional properties and assets, such as images and documents. Articles can also be activated, suspended, or deleted through the concept of a "lifetime state."

We have enhanced the Article XML import functionality by introducing a new setting: ArticleDefaultLifetimeState. This new feature allows users to define a default lifetime state for newly imported articles if the state is not explicitly set in the XML. Previously, new articles without a specified state were automatically set to 'Active'. Now, administrators can configure whether such articles should default to 'Suspended', offering greater control over article activation workflows.

This functionality was developed in response to customer needs for better control over article visibility immediately after import.

During article imports, merging two article groups while simultaneously updating their group names could incorrectly trigger a validation error. This situation has now been improved to allow both operations to be performed smoothly without errors.

VAT rates are typically determined based on the region to which goods or services are delivered. However, in some business cases, VAT handling needs to be adjusted on a per-customer basis. For example, special VAT agreements may apply to educational institutions, healthcare providers, export customers, or resellers operating under specific tax exemptions.

To address these needs, we are extending the platform to support customer-specific VAT rates. The foundation for this functionality has now been laid: customer-specific VAT percentages can already be stored in the Vendisto database, and the Exact Batch Interface has been extended to import these rates from Exact systems.

This enhancement paves the way for even more flexible and accurate tax handling across different customer groups.

Previously, the free delivery threshold did not consistently account for discounts, which could lead to incorrect eligibility for free delivery. This behavior has been improved: discounts are now correctly factored in when calculating whether an order meets the free delivery conditions. This adjustment ensures a more accurate and fair application of delivery policies for all customers.

Some products were not orderable because the basket button on certain article detail pages contained an incorrect link. This resulted in users being unable to place orders directly from those pages.

The issue has been corrected. The basket button now properly links to the ordering process, ensuring that products can be added to the basket without problems.

Navigating from the sidebasket now correctly points to the selected variant instead of the default product.

Cloudflare's Rocket Loader is a feature that improves website performance by optimizing the loading order of JavaScript. It asynchronously loads scripts and prioritizes page rendering, helping to speed up the initial display of content for users.

However, Rocket Loader can sometimes interfere with custom JavaScript functionality by changing the execution order of scripts. This caused issues with our webshop's scripting behavior.

We have now added support to ensure that the webshop runs correctly alongside Cloudflare’s Rocket Loader optimization, maintaining full functionality without scripting conflicts.

Users were unable to reorder items from their order history due to an error in the Shoxl REST service layer. This issue interrupted the reorder process, preventing customers from quickly duplicating previous orders.

The problem has been corrected, and the reorder functionality now works as expected, allowing users to easily place repeat orders from their history.

The "lists" functionality allows article and article group lists to be displayed at various positions in a Shoxl shop or portal. Depending on the chosen configuration, these tiles can also show article attributes and (gross or customer-specific) prices. If prices are not yet available, a "loading..." placeholder is shown temporarily.

However, if prices could not be retrieved or were not allowed to be displayed, the "loading..." placeholder would remain visible indefinitely, causing confusion.

This behavior has been improved. The placeholder is now properly removed when prices cannot or should not be shown, ensuring a cleaner and clearer user experience.

In earlier setups, images imported from Exact Online required a file extension (such as .jpg or .png) to be included in the asset name. Without this extension, the system could not correctly recognize or handle the imported files.

We have improved this process: the file type is now automatically detected based on the content header of the imported asset. This means that manual addition of extensions is no longer necessary, making the import process more reliable and user-friendly.

This enhancement simplifies asset management and reduces the risk of import errors, improving the overall efficiency of product data handling.

One of the essential principles of the Shoxl platform is that the shop does not duplicate functionality already present in the connected ERP system. This approach ensures consistency, simplifies maintenance, and avoids potential conflicts between systems. It also means that, especially when completing an order, the shop should ask the ERP whether any additional costs or discounts apply. This communication happens via the CalculateOrder request.

An issue had arisen where the CalculateOrder request incorrectly added a null entry to the list of order lines.

This behavior has now been corrected, ensuring clean and accurate communication with the ERP system for a reliable calculation of the final order.

OAuth2 is a widely used standard for secure authorization. It enables users to grant limited access to their resources on one site to another site without exposing their credentials. OAuth2 plays a crucial role in modern authentication flows by ensuring secure and manageable access to protected APIs and applications.

To enhance the configurability and ease of deployment of our OAuth2 server, we have expanded the available logging functionality. This improvement provides better insight into authentication flows and system behavior, making it easier to troubleshoot and fine-tune configurations during deployment and maintenance.

Within the Shoxl platform, several generations of CSV upload processing have been developed. The latest generation significantly improves speed and efficiency. This advanced method has now also been applied to the Order Book functionality.

The Order Book allows customers to download a fully configurable Excel file that lists their personalized product assortment. Customers can easily compile a new order by filling in quantities for the desired products and uploading the file again. The selected items are automatically placed in the shopping basket in the specified quantities.

We have introduced the 'EnableFastCsvUpload' setting for the Excel Order Book, ensuring faster and smoother handling of uploads for even the largest customer catalogs.

The products and product variants in Vendisto are structured within a classification tree that can span multiple levels, depending on the shop configuration. Images can be assigned at different levels: Product, Product Variant, or Classification Node.

When a product lacks an image, the shop previously displayed the image from the first product variant. Similarly, a classification node without an image would inherit the image of the first product classified beneath it. Higher-level nodes would inherit from the first child node.

We have now enhanced this mechanism: product variants' images are properly propagated upwards to ensure products and classifications always display a relevant image when no specific image was assigned.

---

The structure for products and variants allows assigning images at multiple hierarchy levels. In cases where no image was available for a product, a fallback mechanism ensures an image is still displayed, pulling from associated variants or classifications.

An improvement was made to strengthen this fallback logic, ensuring that images are accurately inherited from lower levels when needed. This change enhances the visual consistency across the storefront, even when direct images are missing.

---

Vendisto organizes products into a tree structure with classifications. Images can be attached at the product or classification level. If an entity had no assigned image, the system would fetch the first available image from linked articles or classifications.

We refined this inheritance behavior to better handle missing images, ensuring that the first available product variant image is now properly displayed at higher classification levels when necessary.

A Shoxl shop features an article group overview page that lists all article groups. This overview is available in both List View and Tile View. If an article group contains only one article, that article can be purchased directly from the overview page (if configured accordingly). For article groups with multiple variants, the number of available variants is shown, and users must click through to select a variant before purchasing.

When the overview included both single-article groups and multi-variant groups, a problem occurred: no prices were displayed for the articles that could be purchased directly. This happened because the rendering logic was inconsistent depending on whether a row contained an article or an article group. The layout would also misalign columns.

We improved the rendering logic to ensure that prices are now correctly displayed in all cases. The layout has also been harmonized so that all rows contain a consistent number of columns, ensuring a clear and uniform presentation.

In previous versions, optional components linked to articles were not correctly added when users compiled order lists. This led to incomplete orders being created when optional items were expected.

The handling of optional components has now been improved. When articles are added to an order list, any optional components selected by the user are correctly included, ensuring a complete and accurate order list experience.

A bug was fixed where articles could be added to an orderlist without selecting mandatory components. This ensures that all required fields are now properly validated before items are added, preventing incomplete or incorrect entries.

When using the quote functionality, users who were already logged in could sometimes incorrectly see the "log in and order" button. This behavior has been corrected to ensure a smooth flow.

Additionally, the product overview was unable to display the "request quote" button and defaulted to showing the standard order interface. We have improved this behavior: the overview can now correctly show a mix of "request quote" buttons and standard ordering options, depending on the individual article settings. This update has been applied to both the list view and the thumbnail view.

Resolved an issue where the news overview incorrectly included archived news items. This resulted in the display of outdated content, incorrect filter counts, and misleading category options. The filter now exclusively shows active, published news items to maintain content relevance and clarity for users.

We identified and corrected a bug in the handling of delivery dates during the checkout process. Customers were previously able to select a delivery date that would later be rejected when finalizing the order, making it impossible to complete purchases for certain dates. This issue has now been resolved to ensure a seamless and reliable order placement experience.

To optimize pricing data storage and handling, the ErpCache price service has been enhanced. In addition to detailed pricing per customer and product, it now supports customer-specific discounts applied at the product group level, based on the standard price list prices.

This improvement reduces the amount of data needed, particularly in cases where customers are assigned to groups with defined product group discounts, minimizing storage load while maintaining accurate price calculations.

Sprint 54

march 7, 2025

In Sprint 54, our development team took a deep dive into improving integrations with both Microsoft Dynamics F&O and its older sibling, Dynamics NAV (the proud ancestor of Business Central). Meanwhile, our shop users received a shiny new feature—a deceptively simple but technically heroic price filter based on customer-specific pricing.

Oh, and we casually threw in Finnish language support, significantly upping our Finnish skills in the process. So, if you’re ever tempted to conquer Finland, we've got your back—or should we say, your "selkä"!

A price filter can now be configured as part of the Shoxl shop. This filter allows users to select articles within a specified price range, either by adjusting a slider or manually entering minimum and maximum values.

Previously, the filter only worked on gross prices. Now, the functionality has been extended to support filtering based on net prices.

To use this feature, the ERP system's price model must be mapped to PriceLists and customer-specific prices. The expectation is that customer-specific prices serve as exceptions to the standard PriceList prices. However, if ERP price calculations require a customer-specific price for every product/customer combination, this solution (and net price-based filtering) may not be viable.

Future enhancements planned on the Shoxl product roadmap include implementing a default pricelist and supporting customer discount percentages to further improve this functionality.

The shop includes a setting that determines which net price is displayed on search result tiles after filtering or searching. For products with multiple quantity discount prices, this setting allows the system to show either:

  • The lowest cumulative discount price
  • The price of the cumulative discount with the lowest quantity (the unit price)

Previously, the net price filter did not follow this setting, leading to inconsistencies in price display. This has now been corrected—the net price filter will now respect the configured setting, ensuring consistent price representation across the shop.

The shop now supports the Finnish language, allowing users to navigate and interact with the platform in Finnish.

This enhancement improves accessibility for Finnish-speaking customers and ensures a better user experience in their preferred language.

Currently, the Shoxl shop sends various emails, including contact form confirmations, password reset emails, order confirmations, and quote-related messages. These emails are sent through a mix of external mail services and internal mail servers.

To improve efficiency and reliability, a dedicated email microservice is being developed. This new service will centralize all email sending, ensuring better management and consistency.

The initial development has started in this sprint, with full functionality planned for upcoming releases. A key benefit for shop administrators will be the ability to customize all email templates directly.

Previously, gross prices were incorrectly retrieved due to a mix-up in DataareaId values. Price calculations for gross prices also relied on the PriceAgreement entity, which could pull data from multiple divisions. If the system was set to retrieve price agreements from both Division A and B while gross prices were only meant to come from Division A, the final price calculation mistakenly included prices from Division B as well.

This issue has now been fixed by ensuring that only price agreements that match the same Division ID as the gross prices are considered in calculations.

Gross prices were not being exported because of missing permissions on the TaxEntity. This entity is required for gross price calculations, and without proper access, the export process failed.

Another issue was that price currencies were not handled correctly. The exporter only supported a single currency instead of multiple, limiting its functionality.

Solution:

  • Permissions to the TaxEntity have now been granted, ensuring proper gross price calculation and export.
  • The exporter now correctly supports multiple currencies, resolving the limitation.

These fixes ensure that gross prices are now exported correctly and without restrictions.

The batch interface for F&O relies on OData metadata to determine which entities and fields can be accessed. When a customer modifies the standard entity configuration by adding a new field, the locally cached metadata must be updated by retrieving the latest version from the customer's backend.

To streamline this process, the batch interface now includes a recovery mode. When an OData error is detected, the recovery mode automatically downloads the updated metadata and replaces the outdated cache. This ensures that changes in the customer's entity configuration are handled dynamically without manual intervention.

In the Shoxl cache, pricelists and price agreements result in storing a price for every combination of user, article, and quantity. While this setup ensures very fast response times, it can also lead to extremely large databases when dealing with a high number of users, multiple pricelists, and extensive quantity discounts.

To address this, an initial improvement has been implemented where the cache now utilizes pricelists more efficiently. This approach helps reduce database size while maintaining fast performance. This feature will be GA in the next release.

Sales representatives associated with a customer are now included as Global Access Users in the BatchCustomer export for Microsoft Navision Batch Integration. Additionally, an option has been introduced to configure Global Access settings.

In the customer interface, a salesperson_code is used. The question remains whether NAV can also provide an email address for each salesperson. If not, the system will map salesperson codes to email addresses or names that still need to be retrieved from FACE.

Furthermore, it is now possible to manually assign representatives to each customer. A combination of both automated retrieval from NAV and manual assignment should work seamlessly.

Permissions for sales representatives and regular users can now be managed during shop deployment, with Access Users being identified by their email addresses.

The quote overview was missing when a user had no permissions assigned. This led to confusion, as users without explicit quote-related rights were unable to see any relevant information.

To improve this, the system now ensures that users without specific quote permissions can still access the quote overview if they have general access.

This adjustment enhances transparency and provides a more consistent user experience.

Previously, the order history displayed incorrect VAT amounts due to a miscalculation. The system mistakenly used a percentage range of 0-100 instead of the correct 0-1 range when applying VAT to order totals. As a result, instead of adding 21% VAT, the system multiplied the total amount by 21.

This issue has now been resolved, ensuring that VAT is correctly calculated and displayed in the order history.

A new version of CalculateOrder (/V2/CalculateOrder) has been implemented, which supports decimal quantities. This allows more flexibility when processing orders that require non-integer values.

The system now determines which version to use based on the setting ShoxlRestCallV2CalculateOrderMethod:

  • If set to True, /V2/CalculateOrder is used.
  • If set to False, the system falls back to /V1/CalculateOrder.

This enhancement ensures better handling of decimal order quantities while maintaining backward compatibility.

A new option has been added to control the loading of price, stock, and order interfaces for items in static lists. This setting allows administrators to enable or disable price calls on these lists.

By disabling price calls, this feature helps reduce the load on slower back-end systems, improving overall performance and responsiveness.

Previously, the customer import process in Vendisto could cause duplicate pricelist records to be created in the database. This led to inconsistencies in price authorizations and potential pricing errors.

This issue has now been resolved, ensuring that the import process correctly checks for existing records before adding new pricelist authorizations.

When using the article selection wizard, the price and order UI did not load when clicking on the main image or link from an article group overview. This caused important product details such as SKU, price, and stock information to be missing from the page.

This has been corrected, ensuring that all relevant product details are properly displayed when navigating from the article group page.

Contact forms were not appearing after the page loaded. This issue was caused by the system failing to use the DefaultForm while, at the same time, attempting to validate custom form fields only on form submission instead of during page load.

The implementation has been adjusted to ensure that form validation occurs correctly during the page load process, allowing contact forms to display as expected.

Certain user pages did not redirect to the login page when accessed by a non-logged-in user. Instead, these pages either displayed an error message or redirected to the homepage, causing confusion.

This behavior has now been corrected. Users who attempt to access restricted pages without being logged in are now properly redirected to the login page.

Sprint 53

february 14, 2025

Sprint 53 brings exciting enhancements to help you boost conversions and improve your e-commerce experience:

  • A new empty basket page, designed to guide visitors back into the buying journey—proven to increase conversions.
  • More flexibility in customer discounts, allowing you to display them more explicitly than your ERP system supports.
  • Smarter search capabilities, now including exact match support for phrases with spaces, delivering more precise results.
  • …and much more!

📌 Check out the full list and reach out if there’s anything that could benefit your business!

Shoxl now offers a new way to display an empty shopping basket. Instead of showing the default basket layout, users can configure a separate page with a custom message and two call-to-action buttons: "Login" and "Continue Shopping." This feature provides a clearer, more guided shopping experience for visitors.

Exact Online Item Charges

In general, customer-specific discounts should be managed in the ERP system. However, Exact Online always applies such discounts directly to the price of each order line. Some Shoxl users prefer to display the discount separately in the order totals for commercial reasons, rather than embedding it in individual product prices. Since Exact Online does not support this approach, we have extended its functionality.

With this update, you can now specify a customer discount in Vendisto. This discount will be transferred to Exact Online and will appear in the discount section of the order totals, rather than being factored into the line-item prices. This aligns with our core philosophy: if the ERP system lacks a specific capability, we enhance it to meet our customers' needs.

Exact Online Item Charges

During Exact Online’s scheduled maintenance window (4:00 - 5:00 AM), the system was generating unnecessary email notifications due to service unavailability.

To prevent this, email notifications in the Exact Batch Interface have been disabled for specific HTTP responses, such as Service Unavailable. This ensures that only relevant alerts are sent, reducing unnecessary notifications.

It is now possible to apply authorization profiles to the OrderBook Excel download. This ensures that every user gets a personalized catalog, containing only the products they are authorized to see.

Since this Excel file can also be used to upload an order, this improvement helps streamline the ordering process while maintaining the correct access restrictions. Additionally, a loading spinner has been added to provide better feedback during the download process.

The search engine now supports exact match searches by using quotation marks (""). Previously, the system automatically added wildcards to every search term, which sometimes led to too many results.

With this update, users can now search for an exact phrase by enclosing it in quotation marks. This provides more precise search results, ensuring that only exact matches are returned.

Vendisto supports multi-classification for products across multiple shops, with a central PIM acting as the data source. A database inconsistency caused classification exports to be incomplete when products were assigned to multiple classifications. This issue has been resolved, ensuring that all classifications, including root classifications, are correctly included in bulk exports.
An issue in the PIM system caused duplicate classification categories to be created when importing new article groups. This has now been resolved, ensuring that categories are correctly assigned without unnecessary duplicates.

A bug prevented redirects from functioning correctly if they did not include a classification (e.g., /NL/). This issue has now been resolved, ensuring that such redirects work as expected.

However, redirects for existing pages will not work. This is because the system always checks whether a page exists before looking for a redirect. If the original page is still present, no redirection occurs. This behavior follows best practices to ensure that valid pages remain accessible while only missing pages trigger redirects.

Previously, Vendisto automatically converted all relative URLs in the Visual Page Editor into absolute URLs by prefixing them with the Vendisto domain. This caused issues when copying and pasting links within the editor.

This behavior has now been corrected. Relative URLs will remain unchanged, ensuring that links function as expected without being altered unnecessarily.

The API now allows full management of OAuth2 audiences, providing more control over application access levels. Users can create, read, edit, and delete audiences directly via the API, making it easier to adjust authentication settings as needed.

Additionally, a new overview and search function has been added, enabling users to quickly find and manage existing OAuth2 audiences within the system.

A bug caused article imports to fail when asset category labels were missing translations. To prevent this, a proper fallback mechanism has been implemented. If a translation is unavailable, the system will now use a default value instead of generating an error.
A bug prevented guest users from successfully applying a voucher during checkout, resulting in an error. This issue has now been resolved, ensuring that vouchers can be used by both registered customers and guest users without problems.
Settings that were no longer referenced have been removed to improve system maintainability and prevent unnecessary configuration clutter. A summary of the removed settings is available in the documentation.
A bug caused the voucher discount to incorrectly include VAT when sending orders to Exact Online. This issue has now been fixed, ensuring that the discount is applied correctly without unintended tax calculations.

A bug caused classification documents to be overwritten when new menu items were added. Additionally, catalog pages could disappear when synchronizing data from the central PIM to multiple shop instances.

This issue has now been resolved, ensuring that classification documents remain intact and catalog pages are preserved during synchronization.

A bug caused English-language resources to be missing from the asset dropdown in Vendisto, making it difficult for users to select the correct assets in an English-language environment.

This issue has now been resolved, ensuring that all necessary resources are available in the dropdown as expected.

The system now utilizes the ArticleOrderConfiguration entity in Microsoft Dynamics F&O to enforce minimum order quantities and addition quantities per product. This ensures that products can only be ordered in predefined increments, improving consistency and preventing incorrect order quantities.

This update also integrates these settings with the gross price per product, ensuring that pricing calculations align with the configured order quantities in Microsoft Dynamics F&O.

When placing an order, some fields that cannot be modified from outside the system should be changed. As a workaround, users can refresh metadata using one of two methods:

  1. Start the batch interface with the --clearMeta parameter.
  2. Manually delete the metadata file (Metadata.trimmed.xml) from the system folder and restart the batch interface.

This ensures the correct value is applied without manual intervention.

The Account API has been extended to include customer-specific discounts. This allows external systems to retrieve and update customer discounts directly via the API, ensuring seamless integration with other platforms.

Sprint 52

january 24, 2025

Sprint 52 introduces exciting new features, including an expansion of Vendisto PIM with shop-specific classifications. This enhancement enables multiple shops to be powered by product data from a single Vendisto installation.

Additionally, a solid foundation has been established for price filters based on customer-specific pricing. Previously, filtering was only possible using gross prices.

Finally, it's worth mentioning that support for item charges, such as deposit fees, is now also available for products sold in multiple packaging units.

All this and much more in Release 52!

By default, PIM data in Vendisto is synchronized with the Shoxl shop's performance database. However, some customers manage a central PIM system and need to distribute product data selectively across multiple shops - and thus, multiple performance databases.

With this update, products in Vendisto PIM can now be assigned to specific classifications, ensuring that each shop only receives the assortment relevant to its classification.

This new feature allows for precise control over product availability in multi-shop environments, automatically syncing data to the correct shop (performance) databases based on configured classifications.

Exact Online Item Charges

The ShoxlPro importer now supports CustomerPrice and PriceList imports, allowing the price filter to operate based on net prices rather than gross prices.

With the Exact Batch Interface extended for CustomerPrices and PriceLists exports, filtering results now correctly reflect the selected price range using net prices.

This enhancement ensures that price filtering is fully aligned with actual customer-specific pricing, making it more accurate and relevant for users.
When exporting items with multiple packaging units, it is possible to create separate articles in the shop, each with an item number suffixed by the packaging unit. These packaging units often have different item charges ("statiegeld") associated with them.

With this update, the Exact Online Batch Interface now correctly collects and applies the appropriate ItemCharge values for each generated item when "EnableItemPriceToArticleMapping" is set to true.

This ensures that the correct deposit fees ("statiegeld") are assigned based on the packaging unit, improving pricing accuracy and compliance within the shop.

Exact Online Item Charges

PriceListAuthorizations control which products a user can see in the shop by limiting the assortment to the price list assigned to that customer.

With unit mapping, the articles listed in price lists do not directly exist in the Shoxl shop. Instead, when importing items, they are suffixed with the packaging unit. This caused issues where the system could not correctly match price list entries to available products.

To resolve this, the Exact Batch Interface has been improved to accurately map item numbers with their corresponding unit suffixes in the PriceListAuthorizations lookup.

Additionally, price list and gross price exports now function without errors, ensuring that items with suffixed packaging units are correctly processed and matched to their corresponding price lists.
Temporary price lists now automatically deactivate in the shop after their expiration date. Additionally, a mechanism removes outdated Price List entries when they are not included in a non-partial PriceList XML import, ensuring accurate pricing and proper lifecycle management.
Shop visitors can no longer register multiple accounts with the same email address. If an email is already in use, the form prevents submission and prompts the user to log in or activate their existing account.
Users can now select a value directly from the article overview page, opening the article detail page with the chosen value preselected. For example, when browsing t-shirts, users can select a color before entering the detail view, streamlining the selection process.
Previously, when adjusting sorting, paging, or display mode, only the modified setting was sent to the backend, causing the sorting to reset to default when changing other parameters like quantity.

This has now been fixed by ensuring that the entire query string (including sortMember, sortDirection, pageSize, and display mode) is always appended. Additionally, this improvement allows users to share product listing links with consistent sorting and display settings, ensuring the same article view for other customers.
The article table now immediately reflects the selected language without requiring a page refresh. Previously, it displayed values from the previously selected language until manually refreshed.
The calculation of element heights in overview pages has been improved to ensure correct spacing. Previously, incorrect height settings caused article numbers to overlap with titles.
The article overview now renders correctly, ensuring a seamless browsing experience. Previously, invalid HTML affected page functionality, which has been resolved for better usability.
The "next" button in the article selection wizard now disables more quickly when required. Previously, a delay allowed users to click it when the action should not have been available.
The alternative delivery address is now correctly preserved when navigating through the order process. Previously, returning to a previous step caused the entered address to be lost. This issue has been resolved, ensuring a smoother checkout experience.
  • Delivery Scheme Overrides Now Applied Correctly
    Webshop users can now successfully apply overrides to the default delivery scheme. Previously, an issue prevented this, but correct delivery settings are now enforced.
  • Accurate Delivery Schedule Retrieval
    A date format issue occasionally caused incorrect delivery schedules to be displayed. This has been resolved, ensuring visitors always see the correct schedule.
  • Improved Date Validation in Delivery Schedule API
    The delivery schedule API now correctly validates dates, preventing errors caused by format mismatches. This ensures accurate delivery date checks.
An issue caused links in the classification menu to appear in the wrong order instead of following the specified order in Vendisto. This has now been fixed, ensuring accurate link placement.
The system now correctly enforces minimum order values and quantity increments. Previously, users could bypass these restrictions, allowing invalid quantities to be added to the basket.
The HTML structure of the order history interface has been updated, improving styling and layout. These enhancements provide a better visual experience, especially for mobile users.
An issue previously prevented users from adding a single article to the basket from an order list. This has now been resolved, restoring full functionality.
When adding a bundle (an article with components) to an order list, all components are now correctly included. Previously, only the main article was added due to an issue in the order list logic. This has now been resolved.
The login process now works reliably with ReCaptcha v3. Previously, a conflict between form improvements and legacy scripts caused login failures, which has been resolved for a smoother authentication experience.
The customer registration form validation now functions as expected. Previously, recent form updates caused valid submissions to be blocked, preventing registration. This issue has been resolved.
Previously, some pages intended for authorized users were accessible to non-authorized users through a workaround. Security measures have been improved to ensure that only authorized users can access these pages.
Knowledge items now retain the correct publication state after updates. Previously, some items were incorrectly set to "published" due to a synchronization issue between Vendisto and ShoxlPro. This has been resolved, ensuring accurate status management.
An additional check in the Vendisto Customer Importer now ensures that activation emails are not sent to users linked to blocked customers, preventing unauthorized access.
The Exact Batch Interface now prevents exporting empty article properties when VendistoPimEnabled is active. This ensures these properties can be deleted when no longer needed.
When deploying the Exact Batch Interface, an optional initial sync will now be executed. This sync exports the 60 most recently modified entities across key data types:
  • Articles
  • Batch Customers
  • Batch Gross Prices
  • Customers
  • Price Lists
This allows the testing phase to begin before all data is fully available, significantly reducing waiting time during deployment.
A uniform request retry mechanism has been implemented in the Exact Batch Interface using Polly.

This ensures better handling of temporary failures by automatically retrying failed requests, improving stability and reliability in communication with Exact Online.
Previously, Exact Online did not support shipping costs through the API, requiring a separate "shipping cost article" to be created as an order line.

With recent changes in Exact Online, shipping costs are now a recognized concept, allowing them to be written directly to the shipping cost line.

As a result, the option to create a separate order line for shipping costs has been removed from the Exact Batch Interface, ensuring better integration and more accurate order pricing.
The VatPercentage node in the F&O Batch Interface now correctly displays percentage values instead of decimal values, ensuring accurate tax calculations in the gross prices XML.
The default currency is now automatically imported from SAP. If the default currency is unavailable, an alternative currency is used, with a fallback option ensuring proper currency selection.
The Vendisto start page now includes updated links to support hubs and user guides, making it easier for users to find relevant assistance and resources.
A timing issue previously caused incorrect labels to appear in the language selection interface. This has now been resolved, ensuring accurate label display.
Orders with more than 50 lines are now fully visible in the Vendisto order detail screen. Previously, only the first 50 lines were shown. Pagination has been added to ensure all order lines can be accessed.

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.