I’ve been working with a large retailer to enable click and collect. Here is one approach to implement click and collect within Sitecore Commerce. Like with most things there are many ways to approach this and each customer will have their own unique requirements which need to be factored in.
For those not familiar with click and collect, google provides this definition:
“a shopping facility whereby a customer can buy or order goods from a store’s website and collect them from a local branch”.
The main objective behind this approach is to minimise load to backend systems and provide the best user experience possible. Achieving these objectives evolves around being able to model products and their inventory sufficiently. Plus doing this in the most OOTB way possible.
To enable this scenario in Sitecore Commerce we are going to use a combination of Base Catalogs, Custom Catalogs (aka Virtual Catalogs) and Inventory Catalogs. Please review the product documentation if you’re unfamiliar with any of those terms.
Here is a graphical representation of the setup:
The single base catalog is where products are defined (ProductID, Name, Description, ListPrice, images, etc.). From there we have a custom catalog for each physical store and a single inventory catalog linked to all the physical stores.
The purpose of the custom catalog is purely to represent the physical stores. In this case there was no overriding of product pricing or information but that could easily be achieved.
Alternatively to a single inventory catalog we could also have individual inventory catalog per custom catalog but that really depends on the requirements. In this case I opted for a single inventory catalog because we need to be able to provide a view, from the product details page, of the products availability across all the physical stores and modelling it in this manner makes the query easy.
This is a high level view that hopefully introduces you to the approach.