public void SetOrderLinesTaxes(ref Order order) { foreach (var orderLine in order.OrderLines) { var productVariant = _productVariantService.GetProductVariantBySKU(orderLine.SKU); var getDefaultTaxRate = new GetDefaultTaxRate(_session); var productPricingMethod = new ProductPricingMethod(new TaxSettings { PriceLoadingMethod = PriceLoadingMethod.IncludingTax, TaxCalculationMethod = TaxCalculationMethod.Individual, TaxesEnabled = true }, getDefaultTaxRate); var taxRate = productVariant == null || productVariant.TaxRate == null ? getDefaultTaxRate.Get() : productVariant.TaxRate; var taxRatePercentage = taxRate == null ? 0 : taxRate.Percentage; var tax = productPricingMethod.GetTax(orderLine.UnitPrice, taxRatePercentage, 0m, 0m); orderLine.UnitPricePreTax = orderLine.UnitPrice - tax; orderLine.PricePreTax = orderLine.UnitPricePreTax * orderLine.Quantity; orderLine.Tax = orderLine.Price - orderLine.PricePreTax; orderLine.TaxRate = _getProductVariantTaxRatePercentage.GetTaxRatePercentage(productVariant); } order.Subtotal = order.OrderLines.Sum(line => line.UnitPricePreTax * line.Quantity); order.Tax = order.OrderLines.Sum(line => line.Tax); }
public GetDefaultTaxRateTests() { _getDefaultTaxRate = new GetDefaultTaxRate(Session); }