public void TestAmountWithRelativeDiscountWithDifferentVatRatesPresent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(25) .SetQuantity(2)) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(6) .SetQuantity(1)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(3)); // 5000*.25 = 1250 // 600*.25 = 150 // matches 1400 discount Assert.That(formattedTotalAmount, Is.EqualTo(26700)); // 35600 - 8900 discount Assert.That(formattedTotalVat, Is.EqualTo(4200)); // 5600 - 1400 discount (= 10000/35600 *5600) discount }
public void TestAmountWithFixedDiscountIncVatOnlyWithDifferentVatRatesPresent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(25) .SetQuantity(2)) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(6) .SetQuantity(1)) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(100.00M)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(3)); // 100*250/356 = 70.22 incl. 25% vat => 14.04 vat as amount // 100*106/356 = 29.78 incl. 6% vat => 1.69 vat as amount // matches 15,73 discount (= 100/356 *56) discount Assert.That(formattedTotalAmount, Is.EqualTo(25600)); // 35600 - 10000 discount Assert.That(formattedTotalVat, Is.EqualTo(4027)); // 5600 - 1573 discount (= 10000/35600 *5600) discount }
public void TestFormatFixedDiscountRowsAmount() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(4)); List<HostedOrderRowBuilder> newRows = new HostedRowFormatter<CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetAmount(), Is.EqualTo(-400L)); }
public void TestFormatFixedDiscountRowsAmount() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(4)); List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetAmount(), Is.EqualTo(-400L)); }
public void TestGetTotalVatNegative() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountIncVat(-100L) .SetVatPercent(25) .SetQuantity(2)); var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); Assert.That(formatter.GetTotalVat(), Is.EqualTo(-4000L)); }
public void TestFormatShippingFeeRowsVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddFee(Item.ShippingFee() .SetAmountExVat(4) .SetVatPercent(25)); List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetAmount(), Is.EqualTo(500L)); Assert.That(newRow.GetVat(), Is.EqualTo(100L)); }
protected void FormatRequestValues() { var errors = ValidateOrder(); if (errors.Length > 0) { throw new SveaWebPayValidationException(errors); } var formatter = new HostedRowFormatter <CreateOrderBuilder>(); HrowBuilder = formatter.FormatRows(CrOrderBuilder); Amount = formatter.GetTotalAmount(); Vat = formatter.GetTotalVat(); }
public void TestFormatRelativeDiscountRowsVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(4) .SetVatPercent(25) .SetQuantity(1)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(10)); List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[1]; Assert.That(newRow.GetAmount(), Is.EqualTo(-50L)); Assert.That(newRow.GetVat(), Is.EqualTo(-10L)); }
public void TestFormatFixedDiscountRows() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddDiscount(Item.FixedDiscount() .SetDiscountId("0") .SetName("Tess") .SetDescription("Tester") .SetUnit("st")); List<HostedOrderRowBuilder> newRows = new HostedRowFormatter<CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetSku(), Is.EqualTo("0")); Assert.That(newRow.GetName(), Is.EqualTo("Tess")); Assert.That(newRow.GetDescription(), Is.EqualTo("Tester")); Assert.That(newRow.GetQuantity(), Is.EqualTo(1)); Assert.That(newRow.GetUnit(), Is.EqualTo("st")); }
public void TestFormatFixedDiscountRowsVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(4) .SetVatPercent(25) .SetQuantity(1)) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(1) .SetDiscountId("0") .SetName("Tess") .SetDescription("Tester")); List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[1]; Assert.That(newRow.GetAmount(), Is.EqualTo(-100L)); Assert.That(newRow.GetVat(), Is.EqualTo(-20L)); }
public void TestFormatFixedDiscountRows() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddDiscount(Item.FixedDiscount() .SetDiscountId("0") .SetName("Tess") .SetDescription("Tester") .SetUnit("st")); List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetSku(), Is.EqualTo("0")); Assert.That(newRow.GetName(), Is.EqualTo("Tess")); Assert.That(newRow.GetDescription(), Is.EqualTo("Tester")); Assert.That(newRow.GetQuantity(), Is.EqualTo(1)); Assert.That(newRow.GetUnit(), Is.EqualTo("st")); }
public void TestFormatFixedDiscountRowsVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(4) .SetVatPercent(25) .SetQuantity(1)) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(1) .SetDiscountId("0") .SetName("Tess") .SetDescription("Tester")); List<HostedOrderRowBuilder> newRows = new HostedRowFormatter<CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[1]; Assert.That(newRow.GetAmount(), Is.EqualTo(-100L)); Assert.That(newRow.GetVat(), Is.EqualTo(-20L)); }
public void TestAmountFromMultipleItemsWithFixedDiscountIncVatOnly() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(30)) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(10.00M)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(2)); Assert.That(formattedTotalAmount, Is.EqualTo(261462)); // 262462,5 - 1000 discount rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(52292)); // 52492,5 - 200 discount (= 10/2624,62*524,92) rounded half-to-even }
public void TestAmountFromMultipleItemsWithRelativeDiscountWithDifferentVatRatesPresent2() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(1)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(2)); Assert.That(formattedTotalAmount, Is.EqualTo(6562)); // 8748,75 - 2187,18 discount rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(1312)); // 1749,75 - 437,5 discount (1750*.25) rounded half-to-even }
public void TestAmountFromMultipleItemsWithRelativeDiscountWithDifferentVatRatesPresent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(30)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(2)); Assert.That(formattedTotalAmount, Is.EqualTo(196847)); // (262462,5 - 65615,625 discount (25%) rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(39369)); // 52492,5 - 13123,125 discount (25%) rounded half-to-even }
public void TestFormatOrderRows() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetArticleNumber("0") .SetName("Tess") .SetDescription("Tester") .SetAmountExVat(4) .SetVatPercent(25) .SetQuantity(1) .SetUnit("st")); List<HostedOrderRowBuilder> newRows = new HostedRowFormatter<CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetSku(), Is.EqualTo("0")); Assert.That(newRow.GetName(), Is.EqualTo("Tess")); Assert.That(newRow.GetDescription(), Is.EqualTo("Tester")); Assert.That(newRow.GetAmount(), Is.EqualTo(500L)); Assert.That(newRow.GetVat(), Is.EqualTo(100)); Assert.That(newRow.GetQuantity(), Is.EqualTo(1)); Assert.That(newRow.GetUnit(), Is.EqualTo("st")); }
public void TestAmountFromMultipleItemsDefinedWithExVatAndVatPercent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetArticleNumber("0") .SetName("testCalculateRequestValuesCorrectTotalAmountFromMultipleItems") .SetDescription("testCalculateRequestValuesCorrectTotalAmountFromMultipleItems") .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(30) .SetUnit("st")); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter<CreateOrderBuilder>(); List<HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(1)); Assert.That(formattedTotalAmount, Is.EqualTo(262462)); // 262462,5 rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(52492)); // 52492,5 rounded half-to-even }
public void TestAmountFromMultipleItemsDefinedWithExVatAndIncVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetArticleNumber("0") .SetName("testCalculateRequestValuesCorrectTotalAmountFromMultipleItems") .SetDescription("testCalculateRequestValuesCorrectTotalAmountFromMultipleItems") .SetAmountExVat(69.99M) .SetAmountIncVat(87.4875M) // if low precision here, i.e. 87.49, we'll get a cumulative rounding error .SetQuantity(30) .SetUnit("st")); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter <CreateOrderBuilder>(); List <HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(1)); Assert.That(formattedTotalAmount, Is.EqualTo(262462)); // 262462,5 rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(52492)); // 52492,5 rounded half-to-even }
public void TestFormatOrderRows() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetArticleNumber("0") .SetName("Tess") .SetDescription("Tester") .SetAmountExVat(4) .SetVatPercent(25) .SetQuantity(1) .SetUnit("st")); List <HostedOrderRowBuilder> newRows = new HostedRowFormatter <CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetSku(), Is.EqualTo("0")); Assert.That(newRow.GetName(), Is.EqualTo("Tess")); Assert.That(newRow.GetDescription(), Is.EqualTo("Tester")); Assert.That(newRow.GetAmount(), Is.EqualTo(500L)); Assert.That(newRow.GetVat(), Is.EqualTo(100)); Assert.That(newRow.GetQuantity(), Is.EqualTo(1)); Assert.That(newRow.GetUnit(), Is.EqualTo("st")); }
public void TestAmountFromMultipleItemsWithRelativeDiscountWithDifferentVatRatesPresent2() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(1)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter<CreateOrderBuilder>(); List<HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(2)); Assert.That(formattedTotalAmount, Is.EqualTo(6562)); // 8748,75 - 2187,18 discount rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(1312)); // 1749,75 - 437,5 discount (1750*.25) rounded half-to-even }
public void TestAmountWithRelativeDiscountWithDifferentVatRatesPresent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(25) .SetQuantity(2)) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(6) .SetQuantity(1)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter<CreateOrderBuilder>(); List<HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(3)); // 5000*.25 = 1250 // 600*.25 = 150 // matches 1400 discount Assert.That(formattedTotalAmount, Is.EqualTo(26700)); // 35600 - 8900 discount Assert.That(formattedTotalVat, Is.EqualTo(4200)); // 5600 - 1400 discount (= 10000/35600 *5600) discount }
public void TestFormatShippingFeeRowsVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddFee(Item.ShippingFee() .SetAmountExVat(4) .SetVatPercent(25)); List<HostedOrderRowBuilder> newRows = new HostedRowFormatter<CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[0]; Assert.That(newRow.GetAmount(), Is.EqualTo(500L)); Assert.That(newRow.GetVat(), Is.EqualTo(100L)); }
protected void FormatRequestValues() { var errors = ValidateOrder(); if (errors.Length > 0) { throw new SveaWebPayValidationException(errors); } var formatter = new HostedRowFormatter<CreateOrderBuilder>(); HrowBuilder = formatter.FormatRows(CrOrderBuilder); Amount = formatter.GetTotalAmount(); Vat = formatter.GetTotalVat(); }
public void TestAmountFromMultipleItemsWithFixedDiscountIncVatOnly() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(30)) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(10.00M)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter<CreateOrderBuilder>(); List<HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(2)); Assert.That(formattedTotalAmount, Is.EqualTo(261462)); // 262462,5 - 1000 discount rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(52292)); // 52492,5 - 200 discount (= 10/2624,62*524,92) rounded half-to-even }
public void TestAmountWithFixedDiscountIncVatOnlyWithDifferentVatRatesPresent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(25) .SetQuantity(2)) .AddOrderRow(Item.OrderRow() .SetAmountExVat(100.00M) .SetVatPercent(6) .SetQuantity(1)) .AddDiscount(Item.FixedDiscount() .SetAmountIncVat(100.00M)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter<CreateOrderBuilder>(); List<HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(3)); // 100*250/356 = 70.22 incl. 25% vat => 14.04 vat as amount // 100*106/356 = 29.78 incl. 6% vat => 1.69 vat as amount // matches 15,73 discount (= 100/356 *56) discount Assert.That(formattedTotalAmount, Is.EqualTo(25600)); // 35600 - 10000 discount Assert.That(formattedTotalVat, Is.EqualTo(4027)); // 5600 - 1573 discount (= 10000/35600 *5600) discount }
public void TestAmountFromMultipleItemsWithRelativeDiscountWithDifferentVatRatesPresent() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(69.99M) .SetVatPercent(25) .SetQuantity(30)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(25)); // follows HostedPayment calculateRequestValues() outline: var formatter = new HostedRowFormatter<CreateOrderBuilder>(); List<HostedOrderRowBuilder> formatRowsList = formatter.FormatRows(order); long formattedTotalAmount = formatter.GetTotalAmount(); long formattedTotalVat = formatter.GetTotalVat(); Assert.That(formatRowsList.Count, Is.EqualTo(2)); Assert.That(formattedTotalAmount, Is.EqualTo(196847)); // (262462,5 - 65615,625 discount (25%) rounded half-to-even Assert.That(formattedTotalVat, Is.EqualTo(39369)); // 52492,5 - 13123,125 discount (25%) rounded half-to-even }
public void TestFormatRelativeDiscountRowsVat() { CreateOrderBuilder order = WebpayConnection.CreateOrder(SveaConfig.GetDefaultConfig()) .AddOrderRow(Item.OrderRow() .SetAmountExVat(4) .SetVatPercent(25) .SetQuantity(1)) .AddDiscount(Item.RelativeDiscount() .SetDiscountPercent(10)); List<HostedOrderRowBuilder> newRows = new HostedRowFormatter<CreateOrderBuilder>().FormatRows(order); HostedOrderRowBuilder newRow = newRows[1]; Assert.That(newRow.GetAmount(), Is.EqualTo(-50L)); Assert.That(newRow.GetVat(), Is.EqualTo(-10L)); }