HomeGuidesAPI Reference
Submit Documentation FeedbackJoin Developer CommunityOptimizely GitHubOptimizely NuGetLog In

Tax calculator

This topic describes TaxCalculator, which calculates a line item's tax value and tax amount, based on tax value.

  • Sales tax. Calculates sales tax for a single line item based on market, shipping address, and base price. [New in 13.0.0.]
public Money CalculateSalesTax(ILineItem lineItem, IMarket market, IOrderAddress shippingAddress, Money basePrice, ITaxcalculator taxCalculator)
          {
            return taxCalculator.GetSalesTax(ILineItem lineItem, 
                                             IMarket market, 
                                             IOrderAddress shippingAddress, 
                                             Money basePrice);
          }
  • Sales tax. Calculates sales tax for line items based on market, shipping address and currency. [New in 13.0.0]
public Money CalculateSalesTax(IEnumerable<ILineItem> lineItems, 
                                       IMarket market, 
                                       IOrderAddress shippingAddress, 
                                       Currency currency, 
                                       ITaxCalculator taxCalculator)
          {
            return taxCalculator.GetSalesTax(lineItems, market, shippingAddress, currency);
          }

Changing the default calculation

By inheriting from the default implementation of the interface, DefaultTaxCalculator, you can override the calculation of get tax value and get tax category name. Just override one or several methods in the DefaultTaxCalculator.

public class TaxCalculatorOverridingDefault : DefaultTaxCalculator
      {
        public TaxCalculatorOverridingDefault(IContentRepository contentRepository, ReferenceConverter referenceConverter)
          : base(contentRepository, referenceConverter)
          { }
        protected override string GetTaxCategoryNameById(int taxCategoryId)
          {
            return string.Empty;
          }
        protected override IEnumerable<ITaxValue> GetTaxValues(string taxCategory, string languageCode, IOrderAddress orderAddress)
          {
            return new List<ITaxValue>() { new TaxValue(10, "SalesTax", "clothing", TaxType.SalesTax) };
          }
      }

Related blog post: Adjust your Tax Calculation to Use Billing Address in Optimizely Commerce by Casper Rasmussen.


Did this page help you?