public string GetReceipt(IList <Item> items) { var totalPrice = items.Select(item => item.Price).Sum(); var totalTax = items.Select(item => _TaxCalculator.GetSalesTax(item)).Sum(); var result = string.Join(" ", items.Select(x => x.Display)).Trim(); result += $" Sales Taxes: {totalTax}"; result += $" Total: {totalPrice+totalTax}"; return(result); }
public Money GetSalesTax(ILineItem lineItem, IMarket market, IOrderAddress shippingAddress, Money basePrice) { if (market.MarketId.Value == "sv" && shippingAddress.City == "Stockholm") { Decimal decPrice = 0; string taxCategory = CatalogTaxManager.GetTaxCategoryNameById((int)lineItem.TaxCategoryId); IEnumerable <ITaxValue> taxes = OrderContext.Current.GetTaxes(Guid.Empty, taxCategory, "sv", shippingAddress); foreach (var tax in taxes) { decPrice += (decimal)(tax.Percentage + 0.10) * (lineItem.PlacedPrice * lineItem.Quantity); } return(new Money(decPrice, basePrice.Currency) / 100); } else { return(_defaultTaxCalculator.GetSalesTax(lineItem, market, shippingAddress, basePrice)); } }
private void GetTaxInfo(DemoMarketsViewModel viewModel) { ICart cart = _orderRepository.LoadOrCreateCart <ICart>(CustomerContext.Current.CurrentContactId, "BogusCart"); IOrderAddress bogusAddress = _orderGroupFactory.CreateOrderAddress(cart); bogusAddress.CountryCode = viewModel.SelectedMarket.Countries.FirstOrDefault(); bogusAddress.City = "Stockholm"; ILineItem lineItem = _orderGroupFactory.CreateLineItem(viewModel.Shirt.Code, cart); lineItem.Quantity = 1; lineItem.PlacedPrice = viewModel.Shirt.GetDefaultPrice().UnitPrice; lineItem.TaxCategoryId = viewModel.Shirt.TaxCategoryId; cart.AddLineItem(lineItem); viewModel.TaxAmount = _taxCalculator.GetSalesTax(lineItem, viewModel.SelectedMarket, bogusAddress, new Money(lineItem.PlacedPrice, viewModel.SelectedMarket.DefaultCurrency)); viewModel.TaxAmountOldSchool = GetTaxOldSchool(viewModel, bogusAddress); }