public ActionResult <decimal> GetExcludedAmount(decimal totalAmount) { var vatCalculator = new VatCalculator(); var vatRate = taxRepo.getVatRate(); return(vatCalculator.excludeVat(totalAmount, vatRate)); }
public ActionResult <decimal> GetTotalAmount(decimal amount) { var vatCalculator = new VatCalculator(); var vatRate = taxRepo.getVatRate(); return(vatCalculator.calculateVat(amount, vatRate)); }
public bool PlaceOrder(OrderDto orderDto, int customerId) { // load the customer Customer customer = _customerRepository.Load(customerId); if (customer == null) { throw new CustomerNotFoundException(); } // do not proceed with order if amount is 0 if (orderDto.Amount == 0) { return(false); } // get the appropriate vat for the customers country orderDto.VAT = VatCalculator.GetVat(customer.Country); // build and save the order var order = OrderMapper.Map(orderDto); order.CustomerId = customerId; _orderRepository.Add(order); return(true); }
public void OrderWithManyItemsHadRelativelyLargeDeviationWhenCalculatingVatOverPartsInsteadOfOverTotal() { IOC.IntegrationTest(); IOC.SettingsService.InclVat(); IOC.VatCalculationStrategy.OverTotal(); var productInfo1 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(7500, 2, 21m); var productInfo2 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 25, 21m); var productInfo3 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 50, 21m); var productInfo4 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 50, 21m); var productInfo5 = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(200, 25, 21m); var order = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo1, productInfo2, productInfo3, productInfo4, productInfo5); var directlyCalculatedVat = VatCalculator.VatAmountFromWithVat(45000, 21m); Assert.AreEqual(7810, directlyCalculatedVat); Assert.AreEqual(7810, order.VatTotalInCents); Assert.AreEqual(45000, order.GrandtotalInCents); Assert.AreEqual(45000 - 7810, order.SubtotalInCents); Console.WriteLine(directlyCalculatedVat); Console.WriteLine(order.VatTotalInCents); Console.WriteLine(order.GrandtotalInCents); // todo: this might be a concern: // var orderNewDiscount = order.DiscountAmountWithVatInCents; // Assert.AreEqual(x, orderNewDiscount); where x should not be 0 but orderNewDiscount is 0 }
public void CalculateVat(int amount, VatCategoryType categoryType, int expectedResult) { VatCalculator calculator = new VatCalculator(); decimal result = calculator.CalculateVat((decimal)amount, categoryType); Assert.That(result, Is.EqualTo((decimal)expectedResult)); }
private void UseCurrency(string currencyCode = "IQD") { var currencyService = Substitute.For <CurrencyService>(); currencyService.Get(Arg.Any <Guid>()).Returns(new Currency(currencyCode)); sut = new VatCalculator(currencyService); }
public void Test_CalculateVat_WithVatRate(decimal amount, decimal vatRate, decimal expectedTotalAmount) { // Act var vatCalculator = new VatCalculator(); decimal actualTotalAmount = vatCalculator.calculateVat(amount, vatRate); // Assert Assert.Equal(expectedTotalAmount, actualTotalAmount); }
public void Test_CalculateExcludeVat(decimal totalAmount, decimal vatRate, decimal expectedAmount) { // Act var vatCalculator = new VatCalculator(); decimal actualAmount = vatCalculator.excludeVat(totalAmount, vatRate); // Assert Assert.True(expectedAmount == actualAmount, $"expected {expectedAmount}, actual {actualAmount}"); }
public int GetPrice(ISellableUnitPriceSource unit, bool vat, bool discounted = true, bool sale = true, bool ranged = true) { var unitDiscounted = GetOriginalPrice(unit, discounted, sale, ranged); if (vat && !unit.PricesAreIncludingVAT) { return(VatCalculator.WithVat(unitDiscounted, unit.Vat)); } if (!vat && unit.PricesAreIncludingVAT) { return(VatCalculator.WithoutVat(unitDiscounted, unit.Vat)); } return(unitDiscounted); }
public void Test_TexController_CalculateVat_with_repo(decimal amount, decimal vatRate, decimal expectedTotalAmount) { // Arrange var vatCalculator = new VatCalculator(); var mock = new Mock <IRepository>(); mock.Setup(r => r.getVatRate()).Returns(vatRate); var repo = mock.Object; var vatManager = new VatManager(repo, vatCalculator); // Act var actualTotalAmount = vatManager.calculateVat(amount); // Assert Assert.Equal(expectedTotalAmount, actualTotalAmount); mock.Verify(r => r.getVatRate(), Times.Once); }
public void Test_TaxController_excludeVat_WithRepo(decimal totalAmount, decimal vatRate, decimal expectedAmount) { // Arrange var vatCalculator = new VatCalculator(); var mock = new Mock <IRepository>(); mock.Setup(r => r.getVatRate()).Returns(vatRate); var repo = mock.Object; var vatManager = new VatManager(repo, vatCalculator); // Act var actualAmount = vatManager.excludeVat(from: totalAmount); // Assert Assert.True(expectedAmount == actualAmount, $"expected {expectedAmount}, actual {actualAmount}"); }
public void AmountDiscountIncludingVat() { IOC.IntegrationTest(); var productInfo = DefaultFactoriesAndSharedFunctionality.CreateProductInfo(1000, 1, 10); var order = DefaultFactoriesAndSharedFunctionality.CreateIncompleteOrderInfo(productInfo); var discount = DefaultFactoriesAndSharedFunctionality.CreateDefaultOrderDiscountWithAmount(500, DiscountOrderCondition.None, 0); IOC.OrderDiscountRepository.SetupFake(discount); order.OrderDiscountsFactory = () => IO.Container.Resolve <IOrderDiscountService>().GetApplicableDiscountsForOrder(order, order.Localization).ToList(); order.ResetDiscounts(); var absoluteDiscountAmount = 500; var AverageOrderVatPercentage = 10m; var vatAmountFromWithVat = VatCalculator.VatAmountFromWithVat(absoluteDiscountAmount, AverageOrderVatPercentage); //var vatAmountFromWithoutVat = VatCalculator.VatAmountFromWithoutVat(absoluteDiscountAmount, AverageOrderVatPercentage); Assert.AreEqual(45, vatAmountFromWithVat); // berekende discount vat = 45,45454545.. // correct zou zijn 500 - 454 = 46 (zie hieronder) // full amount: 909 // discounted amount: 455 // discount: 909 - 455 = 454 // 'discount vat': 500 - 454 = 46 Assert.AreEqual(1000, order.GetAmount(true, false, true)); Assert.AreEqual(909, order.GetAmount(false, false, true)); Assert.AreEqual(500, order.GetAmount(true, true, true)); Assert.AreEqual(455, order.GetAmount(false, true, true)); var price = new SimplePrice(order, order.Localization); Assert.AreEqual(1000, price.BeforeDiscount.WithVat.ValueInCents); Assert.AreEqual(909, price.BeforeDiscount.WithoutVat.ValueInCents); Assert.AreEqual(91, price.BeforeDiscount.Vat.ValueInCents); Assert.AreEqual(500, price.WithVat.ValueInCents); Assert.AreEqual(455, price.WithoutVat.ValueInCents); Assert.AreEqual(45, price.Vat.ValueInCents); Assert.AreEqual(500, price.Discount.WithVat.ValueInCents); Assert.AreEqual(454, price.Discount.WithoutVat.ValueInCents); }
public void WithoutVatFromWithVat(int amountWithVat, int amountWithoutVat) { Assert.AreEqual(amountWithoutVat, VatCalculator.WithoutVat(amountWithVat, 19)); }
public void VatAmountFromWithoutVat(int amountWithVat, int vatAmount) { Assert.AreEqual(vatAmount, VatCalculator.VatAmountFromWithoutVat(amountWithVat, 19)); }
public void WithoutVat() { Assert.AreEqual(84, VatCalculator.WithoutVat(100, 19)); Assert.AreEqual(85, VatCalculator.WithoutVat(101, 19)); }
public void CaclulatingBackAndForthShouldReturnSamePrice(int amount) { Assert.AreEqual(amount, VatCalculator.WithoutVat(VatCalculator.WithVat(amount, 19), 19)); Console.WriteLine(VatCalculator.WithoutVat(amount, 19)); Assert.AreEqual(amount, VatCalculator.WithVat(VatCalculator.WithoutVat(amount, 19), 19)); }
public void InitOrderGrid(ArrayList cartTable, GridView grdOrder) { if (cartTable.Count > 0) { DataColumn colQuantity; DataColumn colTotalPrice; colQuantity = new DataColumn(); colQuantity.DataType = System.Type.GetType("System.Int32"); colQuantity.ColumnName = "quantity"; colQuantity.DefaultValue = 1; colTotalPrice = new DataColumn(); colTotalPrice.DataType = System.Type.GetType("System.Double"); colTotalPrice.ColumnName = "total"; //String sql = GetCartListSql(cartTable); //DataTable dtOrder = DataAccessHelper.GetInstance().GetDataTable(sql); grdOrder.Columns[0].HeaderText = "  " + (string)base.GetGlobalResourceObject("string", "lblCategory"); grdOrder.Columns[1].HeaderText = (string)base.GetGlobalResourceObject("string", "productdescription"); //grdOrder.Columns[2].HeaderText = (string)base.GetGlobalResourceObject("string", "price"); grdOrder.Columns[3].HeaderText = (string)base.GetGlobalResourceObject("string", "price"); grdOrder.Columns[4].HeaderText = (string)base.GetGlobalResourceObject("string", "quantity"); grdOrder.Columns[5].HeaderText = (string)base.GetGlobalResourceObject("string", "total"); //dtOrder.Columns.Add(colTotalPrice); // dtOrder.Columns.Add(colQuantity); //int rowCount = dtOrder.Rows.Count; DataTable dtOrder = new DataTable(); dtOrder.Columns.Add("articlecode"); dtOrder.Columns.Add("productType"); dtOrder.Columns.Add("title"); dtOrder.Columns.Add("subtitle"); dtOrder.Columns.Add("publisher"); dtOrder.Columns.Add("price"); dtOrder.Columns.Add("quantity"); dtOrder.Columns.Add("total"); dtOrder.Columns.Add("vatpc"); dtOrder.Columns.Add("deliverytime"); int i = 0; enu = cartTable.GetEnumerator(); while (enu.MoveNext()) { DataRow row = dtOrder.NewRow(); order = (Order)enu.Current; row["articlecode"] = order.articlecode.ToString(); row["productType"] = order.productType.ToString(); row["publisher"] = order.publisherName.ToString(); row["title"] = order.productdescription.ToString(); row["subtitle"] = order.subtitle.ToString(); row["deliverytime"] = order.deliveryTime; double discount = Math.Round((order.price * (order.discountpc / 100)), 2); double price = Math.Round((order.price - discount), 2); row["price"] = string.Format("{0:F2}", price); row["quantity"] = order.quantity.ToString(); row["vatpc"] = string.Format("{0:F2}", order.vatpc); qty += (int)order.quantity; double total = Math.Round((price * order.quantity), 2); double vatIncludePrice = VatCalculator.GetVatIncludedPrice(total, order.vatpc); totalVat += (vatIncludePrice - total); totalPrice += total; row["total"] = string.Format("{0:F2}", total); dtOrder.Rows.Add(row); i++; } totalVat = Math.Round(totalVat, 2); grdOrder.DataSource = dtOrder; grdOrder.DataBind(); double totalShippingCosts = CalculateShippingCostsWithVat(cartTable); double grandTotalPrice = Math.Round((totalPrice + totalVat + totalShippingCosts), 2); ViewState["GrandTotalPrice"] = grandTotalPrice; ViewState["TotalVat"] = totalVat; ViewState["TotalNetPrice"] = totalPrice; ViewState["TotalShippingCosts"] = totalShippingCosts; // Session["gtotal"] = string.Format("{0:F2}", grandTotoal); lblSubTotal.Text = "€ " + string.Format("{0:F2}", totalPrice.ToString()) + " "; lblVat.Text = "€ " + string.Format("{0:F2}", totalVat.ToString()) + " "; lblTotal.Text = "€ " + string.Format("{0:F2}", grandTotalPrice.ToString()) + " "; lblShippingCost.Text = "€ " + string.Format("{0:F2}", totalShippingCosts.ToString()) + " "; } else { grdOrder.DataSource = null; grdOrder.DataBind(); grdOrder.Visible = false; lblSubTotal.Text = "€ 0 "; lblVat.Text = "€ 0 "; lblTotal.Text = "€ 0 "; lblShippingCost.Text = "€ 0 "; } }
public int WithVat(bool pricesAreIncludingVAT, int originalTotal, decimal vat, int summedParts) { return(pricesAreIncludingVAT ? originalTotal : VatCalculator.WithVat(originalTotal, vat)); }
public void InitOrderGrid(ArrayList cartTable, GridView grdOrder) { if (cartTable.Count > 0) { DataColumn colQuantity; DataColumn colTotalPrice; colQuantity = new DataColumn(); colQuantity.DataType = System.Type.GetType("System.Int32"); colQuantity.ColumnName = "quantity"; colQuantity.DefaultValue = 1; colTotalPrice = new DataColumn(); colTotalPrice.DataType = System.Type.GetType("System.Double"); colTotalPrice.ColumnName = "total"; //String sql = GetCartListSql(cartTable); //DataTable dtOrder = dbHandler.GetDataTable(sql); grdOrder.Columns[0].HeaderText = "  " + (string)base.GetGlobalResourceObject("string", "lblCategory"); grdOrder.Columns[1].HeaderText = (string)base.GetGlobalResourceObject("string", "productdescription"); //grdOrder.Columns[2].HeaderText = (string)base.GetGlobalResourceObject("string", "price"); grdOrder.Columns[3].HeaderText = (string)base.GetGlobalResourceObject("string", "price"); grdOrder.Columns[4].HeaderText = (string)base.GetGlobalResourceObject("string", "quantity"); grdOrder.Columns[5].HeaderText = (string)base.GetGlobalResourceObject("string", "total"); //dtOrder.Columns.Add(colTotalPrice); // dtOrder.Columns.Add(colQuantity); //int rowCount = dtOrder.Rows.Count; DataTable dtOrder = new DataTable(); dtOrder.Columns.Add("articlecode"); dtOrder.Columns.Add("productType"); dtOrder.Columns.Add("title"); dtOrder.Columns.Add("subtitle"); dtOrder.Columns.Add("publisher"); dtOrder.Columns.Add("price"); dtOrder.Columns.Add("quantity"); dtOrder.Columns.Add("total"); dtOrder.Columns.Add("vatpc"); dtOrder.Columns.Add("deliverytime"); int i = 0; ArrayList shopItems = (ArrayList)Session["order"]; enu = shopItems.GetEnumerator(); while (enu.MoveNext()) { DataRow row = dtOrder.NewRow(); order = (Order)enu.Current; row["articlecode"] = order.articlecode.ToString(); row["productType"] = order.productType.ToString(); row["publisher"] = order.publisherName.ToString(); row["title"] = order.productdescription.ToString(); row["subtitle"] = order.subtitle.ToString(); row["price"] = string.Format("{0:F2}", order.vatIncludedPrice); row["quantity"] = order.quantity.ToString(); row["vatpc"] = string.Format("{0:F2}", order.vatpc); row["deliverytime"] = order.deliveryTime; qty += (int)order.quantity; Session["CartItems"] = qty; double total = Math.Round((order.vatIncludedPrice * order.quantity), 2); double vatIncludePrice = VatCalculator.GetVatIncludedPrice(total, order.vatpc); totalPrice += total; row["total"] = string.Format("{0:F2}", total); dtOrder.Rows.Add(row); i++; } grdOrder.DataSource = dtOrder; grdOrder.DataBind(); lblHeaderTotPrice.Text = (string)base.GetGlobalResourceObject("string", "total") + " " + (string)base.GetGlobalResourceObject("string", "price"); lblTotalPrice.Text = string.Format("{0:F2}", totalPrice); } else { grdOrder.DataSource = null; grdOrder.DataBind(); lblTotalPrice.Text = "0"; grdOrder.Visible = false; lblEmptyCart.Visible = true; btnContinue.Enabled = false; } }
public int Vat(bool pricesIncludingVat, int originalTotal, decimal vat, int summedParts) { return(VatCalculator.VatAmountFromOriginal(pricesIncludingVat, originalTotal, vat)); }