Limit Order Line Quantity
Guide to limit order line quantity in Umbraco Commerce.
This guide explains custom validation event handlers in Umbraco Commerce that enable limiting order line quantities based on:
The existing stock value of the product, and
The existing quantity of the product in the cart.
ProductAddValidationHandler
When adding a product to the cart, verify that the product is in stock. Also, ensure the customer does not exceed the available quantity in the cart.
public class ProductAddValidationHandler : ValidationEventHandlerBase<ValidateOrderProductAdd>
{
private readonly IProductService _productService;
public ProductAddValidationHandler(IProductService productService)
{
_productService = productService;
}
public override async Task ValidateAsync(ValidateOrderProductAdd evt)
{
var order = evt.Order;
var productReference = evt.ProductReference;
var stock = await _productService.GetProductStockAsync(productReference);
var totalQuantities = order?.OrderLines.Where(x => x.ProductReference == productReference).Sum(x => x.Quantity) ?? 0;
if (stock.HasValue && totalQuantities >= stock.Value)
evt.Fail($"Only {stock} quantities can be purchased for {productReference}.");
}
}
OrderLineQuantityValidationHandler
When changing the order line quantity on the cart page, ensure that the quantities being changed are in stock.
Register event handlers
Register the Umbraco Commerce event handlers via an IUmbracoCommerceBuilder extension method.
Last updated
Was this helpful?