As part of its update 210, Episerver has finally shipped out version 12 of its Commerce platform. Epi had already announced around the time of its Ascend conference in Las Vegas that it would release this new version in the near future. And now, it’s finally here; so let’s take a look at what Commerce 12 brings to the table.
The main focal point of the improvements in Commerce 12 is how Episerver Commerce handles tax, specifically in environments with multiple markets which may or may not include taxes in the prices shown to customers.
Price calculators have been restructured in order to make them more efficient. The tax calculator now only calculates sales tax and shipping tax for a line item. Calculations for shipments, order forms, and order groups now appear under their own calculators.
With the default implementation of calculators improved, unnecessary calls to the calculators should be reduced, especially when getting tax values of order entities or getting shipping costs of shipments from external tax or shipping services.
In order for Episerver Commerce to support both the US tax style (where prices don’t include taxes) and the European style (where prices do), there has been a new setting added to the market and order group, giving you the choice to state whether prices include tax.
In addition, the tax category is now stored in a line item, meaning that it doesn’t have to be retrieved from the database or from cache when an order is calculated. Another benefit is that, even if a product in a line item is removed or no longer taxed after an order is made, that line item's price should not change if the order needs to be recalculated.
Also, each order has a setting indicating its prices, including or excluding tax. An order can allow changes to the tax setting on a market without causing future issues with re-calculation. When creating a new order, this setting is retrieved from the market's PricesIncludeTax setting.
The market property is now obsolete. In its place, Commerce 12 introduces three new properties, namely MarketId, MarketName, and PricesIncludeTax. As a result, a saved purchase order should be complete without needing to refer to other tables or entities.
Events raised when changes to Catalog DTOs are about to be saved, for example CatalogEntryUpdating, are no longer replicated on the remote event channel. Events raised when a change transaction has been completed, for example CatalogEntryUpdated, are still replicated. The Updating events are no longer replicated because they provide no additional value, according to Episerver.
This is because a remote party cannot intervene and manipulate the data before it is saved, while the transaction may have completed its Updated event before the remote party has processed the Updating event. So, the Updated event is sufficient for the remote party, and the Updating event only adds noise and unnecessary network and service bus traffic.
All calculations in activities are now done by using calculators. That is meant to ensure that order calculations are consistent between workflow systems and non-workflow systems.
Also, a number of obsolete APIs have now been officially removed. You can find a complete list of these APIs in Episerver’s write-up of Commerce 12’s major changes. (https://world.episerver.com/documentation/upgrading/episerver-commerce/commerce-12/breaking-changes-commerce-12/)
Target framework requirements
Episerver Commerce 12 requires the .NET target framework to be 4.5.2 or higher. If an existing site is built on a lower version and you try to update its NuGet packages, you will see this error: "You are trying to install this package into a project that targets '.NETFramework,Version=v4.x', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author."
If you want Episerver Commerce 12 for your site, come to Niteco, the world’s largest Episerver Partner. We power your Episerver ambition.