Displaying discount values

When using discounts or free shipping offers on your MVC site, you may want to display the discounted prices or display banners that show how much more customers need to spend to obtain free shipping. This page describes how to use properties and methods of the Kentico.Libraries integration package to display such information.

Displaying catalog discounts

In a controller's action, use the GetPrices method from an implementation of ICatalogPriceCalculator in the CMS.Ecommerce namespace (installed into your project as part of the Kentico.Libraries integration package). The method's calculations, in its default implementation, automatically include any catalog discounts that apply for the current customer.

The GetPrices method returns a ProductCatalogPrices object. You can use the object's StandardPrice and Price properties to find the amount reduced by catalog discounts via subtraction.

            // Gets the current shopping cart
            ShoppingCartInfo shoppingCart = Service.Resolve<IShoppingService>().GetCurrentShoppingCart();
 
            // Calculates prices for the specified product
            ProductCatalogPrices price = Service.Resolve<ICatalogPriceCalculatorFactory>()
                .GetCalculator(shoppingCart.ShoppingCartSiteID)
                .GetPrices(sku, Enumerable.Empty<SKUInfo>(), shoppingCart);
 
            // Gets the catalog discount
            decimal catalogDiscount = price.StandardPrice - price.Price;

We recommend using a dependency injection container to initialize service and factory instances (e.g. the IShoppingService and ICatalogPriceCalculatorFactory instances used in the example above).

You can then use the discount value in your views.

Displaying free shipping offers

In a controller's action, call the CalculateRemainingAmountForFreeShipping method of the shopping cart object.

The method returns the remaining value of products the customer needs to add to the shopping cart to be eligible for free shipping. If the cart is null, if there is no valid discount, or if free shipping was already applied, the method returns 0.

            // Gets the current shopping cart
            ShoppingCartInfo shoppingCart = Service.Resolve<IShoppingService>().GetCurrentShoppingCart();
 
            // Gets the remaining amount for free shipping
            decimal remainingFreeShipping = shoppingCart.CalculateRemainingAmountForFreeShipping();

We recommend using a dependency injection container to initialize service instances (e.g. the IShoppingService instance used in the example above).

You can then display or use the amount remaining in your views.


Was this page helpful?