🚨 Vendr is now Umbraco Commerce 🚨
NEWS

Vendr 2.1.0 Release

14 February 2022

Vendr 2.1.0 is our first big feature release since the port to .NET Core and is jam packed with some brand new features, big fixes and some breaking changes to be aware of.

Vendr 2.1.0 Release

You may recall at the beginning of last year we attempted to set out a roadmap for the year with some great customer suggested features we really wanted to implement. At the same time though, last year was also a big year because of the eventual release of Umbraco v9, the .NET Core release, and so we also had to balance when and how we tackled that.

We made a good start on one or two of the roadmap features, but as the year went on, it was clear to us that porting to .NET Core was becoming more important as we started getting requests about when Vendr would be ready. As we've blogged about before, the move to .NET Core was no easy task, and was a huge change for Vendr and so unfortunately the roadmap had to take a back seat.

With Vendr 2.0.0 now out in the wild, and our initial wave of support requests resolved, we could finally get back to some feature development and so we are so excited to share with you our first big feature release for Vendr v2.

Carts

The first of those big features is the new editable carts area we've added to the commerce section.

Vendr Carts

We felt it important to separate carts from orders in the UI (even though in code they are both just `Order` entities in different states) as we believe the store owner is in a different mind set for the 2 views. With the Orders section it's all about managing those purchases and the next steps, where as in the Carts section we see it being more about helping customers complete their orders.

So with the new Carts section you can find carts in various states, be they in progress or abandoned etc and use that information to reach out to customers to help them cross the finish line.

Vendr Cart Editor

In addition, with the Carts section supporting the full editing of the cart itself, you can quickly help customers resolve any issues they might be having.

Advanced Search

The next big feature is the improved order/cart search functionality with a new advanced search filter dialog that you can use to perform more targeted searches.

Rather that just being able to search on order / payment status and a broad text search, you can search across all aspects of an order from when the order was placed, to whether the order contains a specific order item.

And if the search still doesn't support everything you need, then you are also in luck as we have made the filter dialog entirely pluggable. Developers can implement their own advanced filters to add new search functionality that isn't available OOTB.

namespace Vendr.Umbraco.Filters.Implement
{
    [AdvancedFilter("cartNumber", "Cart Number", "A full or partial cart number to search on", 
        Group = "Order")]
    public class OrderCartNumberAdvancedFilter : OrderAdvancedFilterBase
    {
        public override bool CanApply(string value)
            => !string.IsNullOrWhiteSpace(value);
        
        public override IQuerySpecification<OrderReadOnly> Apply(IQuerySpecification<OrderReadOnly> query, 
            IOrderQuerySpecificationFactory @where, string value)
        {
            return query.And(where.HasCartNumber(value, StringComparisonType.Contains));
        }
    }
}
builder.WithCartAdvancedFilters()
    .Append<OrderCustomerFirstNameAdvancedFilter>()
    .Append<OrderCustomerLastNameAdvancedFilter>()
    .Append<OrderCustomerEmailAddressAdvancedFilter>()
    .Append<OrderHasCustomerEmailAddressAdvancedFilter>()
    .Append<OrderCartNumberAdvancedFilter>()
    .Append<OrderPropertiesAdvancedFilter>()
    .Append<OrderTagsAdvancedFilter>()
    .Append<OrderCreatedAfterAdvancedFilter>()
    .Append<OrderCreatedBeforeAdvancedFilter>()
    .Append<OrderLastUpdatedAfterAdvancedFilter>()
    .Append<OrderLastUpdatedBeforeAdvancedFilter>()
    .Append<OrderOrderLineSkusAdvancedFilter>()
    .Append<OrderOrderLinePropertiesAdvancedFilter>();

Tagging

The next feature is a simple but effective one, and that is the ability to add tags to your carts and orders.

Vendr Order Tagging

As with most tagging features, you are in full control over what tags you add and you'll get autocomplete / suggestions on tags that have already been used in your store. With your orders and carts tagged, you can then use these as ways to filter your carts and orders via the new advanced search filter feature. 

Minor Updates and Bug Fixes

Along with these bigger features, we've also implemented some additional minor updates and bug fixes along the way too.

  • We've introduced a new IUmbracoNodeStoreFinder interface to standardise how we locate a store based on a given Umbraco node, and even better we've made it pluggable too so if you have a unique way of organising your project, you can implement a custom store finder and Vendr can still work without a hitch.
  • We've implemented a new Change Status bulk action on orders to allow the bulk setting of a new order status.

Vendr Bulk Change Status

  • We've updated the order customer details editor to allow changing the billing / shipping countries of a customer after an order is placed. Changing these won't recalculate the prices of the payment / shipping fees, but if you need to override these details, you now can.
  • We've also made some headway with getting Vendr Linux friendly by going through all our file paths that get used and ensure they are correctly cased due to the Linux OS having a case-sensitive filesystem. There is definitely more testing needed, but this is a great first step.

For a list of all the features and bug fixes that make our 2.1.0 release, be sure to read the changelog.

Breaking Changes

Unfortunately when adding these new big features, we weren't able to do so without a few small breaking changes. We were reluctant to have to do this as we knew Vendr 2.0.0 was already a big breaking change so we didn't want to release another breaking change so soon, but we hope the changes are minor enough and the feature important enough to make them worthwhile.

  • IProductAdapter now exposes SearchProductSummaries, GetProductVariantAttributes and SearchProductVariantSummaries methods for editable carts support.
  • IProductAdapterIStockServiceIProductServiceIVendrApi methods that accept a productReference productVariantReference parameter now receive a storeId parameter as well (#339).
  • IPaymentCalculator and IShippingCalculator now accepts a nullable countryId parameter

Available Now

The Vendr 2.1.0 release is available now from the NuGet gallery, as well as in Umbraco package form for v8 sites on our page on the Umbraco developer portal.

Thank you

We'd like to thank everyone who fedback on the original roadmap survey for sticking with us during the .NET Core port, but hopefully this Vendr 2.1.0 release will show that we are back on feature development.

We're going to spend some time reviewing what's next and whether the roadmap approach works for us, but regardless, we can't wait to add more features to make the lived of our customers even easier.

Thanks for reading,

Team Vendr.