コード例 #1
0
        public void CalculateTotals_ClearAllItems_TotalsMustBeZero()
        {
            var item1 = new LineItem {
                Price = 10.99m, DiscountAmount = 1.33m, TaxPercentRate = 0.12m, Fee = 0.33m, Quantity = 2
            };
            var item2 = new LineItem {
                Price = 55.22m, DiscountAmount = 5.89m, TaxPercentRate = 0.12m, Fee = 0.12m, Quantity = 5
            };
            var item3 = new LineItem {
                Price = 88.45m, DiscountAmount = 10.78m, TaxPercentRate = 0.12m, Fee = 0.08m, Quantity = 12
            };
            var payment = new PaymentIn {
                Price = 44.52m, DiscountAmount = 10, TaxPercentRate = 0.12m
            };
            var shipment = new Shipment {
                Price = 22.0m, DiscountAmount = 5m, TaxPercentRate = 0.12m
            };

            var order = new CustomerOrder
            {
                TaxPercentRate = 0.12m,
                Items          = new List <LineItem> {
                    item1, item2, item3
                },
                InPayments = new List <PaymentIn> {
                    payment
                },
                Shipments = new List <Shipment> {
                    shipment
                }
            };
            var totalsCalculator = new DefaultCustomerOrderTotalsCalculator();

            totalsCalculator.CalculateTotals(order);

            Assert.Equal(1400.07m, order.Total);

            order.Items.Clear();
            order.Shipments.Clear();
            order.InPayments.Clear();
            totalsCalculator.CalculateTotals(order);

            Assert.Equal(0m, order.Total);
        }
コード例 #2
0
        public void CalculateTotals_ShouldBe_RightTotals()
        {
            var item1 = new LineItem {
                Price = 10.99m, DiscountAmount = 1.33m, TaxPercentRate = 0.12m, Fee = 0.33m, Quantity = 2
            };
            var item2 = new LineItem {
                Price = 55.22m, DiscountAmount = 5.89m, TaxPercentRate = 0.12m, Fee = 0.12m, Quantity = 5
            };
            var item3 = new LineItem {
                Price = 88.45m, DiscountAmount = 10.78m, TaxPercentRate = 0.12m, Fee = 0.08m, Quantity = 12
            };
            var payment = new PaymentIn {
                Price = 44.52m, DiscountAmount = 10, TaxPercentRate = 0.12m
            };
            var shipment = new Shipment {
                Price = 22.0m, DiscountAmount = 5m, TaxPercentRate = 0.12m
            };

            var order = new CustomerOrder
            {
                TaxPercentRate = 0.12m,
                Fee            = 13.11m,
                Items          = new List <LineItem> {
                    item1, item2, item3
                },
                InPayments = new List <PaymentIn> {
                    payment
                },
                Shipments = new List <Shipment> {
                    shipment
                }
            };
            var totalsCalculator = new DefaultCustomerOrderTotalsCalculator();

            totalsCalculator.CalculateTotals(order);

            Assert.Equal(12.3088m, item1.PriceWithTax);
            Assert.Equal(9.66m, item1.PlacedPrice);
            Assert.Equal(19.32m, item1.ExtendedPrice);
            Assert.Equal(1.4896m, item1.DiscountAmountWithTax);
            Assert.Equal(2.66m, item1.DiscountTotal);
            Assert.Equal(0.3696m, item1.FeeWithTax);
            Assert.Equal(10.8192m, item1.PlacedPriceWithTax);
            Assert.Equal(21.6384m, item1.ExtendedPriceWithTax);
            Assert.Equal(2.9792m, item1.DiscountTotalWithTax);
            Assert.Equal(2.358m, item1.TaxTotal);

            Assert.Equal(5.6m, shipment.DiscountAmountWithTax);
            Assert.Equal(24.64m, shipment.PriceWithTax);
            Assert.Equal(0.0m, shipment.FeeWithTax);
            Assert.Equal(17.0m, shipment.Total);
            Assert.Equal(19.04m, shipment.TotalWithTax);
            Assert.Equal(2.04m, shipment.TaxTotal);

            Assert.Equal(34.52m, payment.Total);
            Assert.Equal(49.8624m, payment.PriceWithTax);
            Assert.Equal(38.6624m, payment.TotalWithTax);
            Assert.Equal(11.2m, payment.DiscountAmountWithTax);
            Assert.Equal(4.1424m, payment.TaxTotal);

            Assert.Equal(1359.48m, order.SubTotal);
            Assert.Equal(161.47m, order.SubTotalDiscount);
            Assert.Equal(180.85m, order.SubTotalDiscountWithTax);
            Assert.Equal(1522.62m, order.SubTotalWithTax);
            Assert.Equal(22.00m, order.ShippingSubTotal);
            Assert.Equal(24.64m, order.ShippingSubTotalWithTax);
            Assert.Equal(44.52m, order.PaymentSubTotal);
            Assert.Equal(49.86m, order.PaymentSubTotalWithTax);
            Assert.Equal(150.01m, order.TaxTotal);
            Assert.Equal(176.47m, order.DiscountTotal);
            Assert.Equal(197.65m, order.DiscountTotalWithTax);
            Assert.Equal(13.64m, order.FeeTotal);
            Assert.Equal(15.28m, order.FeeTotalWithTax);
            Assert.Equal(14.68m, order.FeeWithTax);
            Assert.Equal(1413.18m, order.Total);
        }
コード例 #3
0
        public void CanZeroPrices()
        {
            var order = GetResetedOrder();

            var calc        = new DefaultCustomerOrderTotalsCalculator();
            var domainOrder = (CustomerOrder)order.ToModel(AbstractTypeFactory <CustomerOrder> .TryCreateInstance());

            calc.CalculateTotals(domainOrder);

            Assert.Equal(0, domainOrder.DiscountAmount);
            Assert.Equal(0, domainOrder.DiscountTotal);
            Assert.Equal(0, domainOrder.DiscountTotalWithTax);
            Assert.Equal(0, domainOrder.Fee);
            Assert.Equal(0, domainOrder.FeeTotal);
            Assert.Equal(0, domainOrder.FeeTotalWithTax);
            Assert.Equal(0, domainOrder.FeeWithTax);
            Assert.Equal(0, domainOrder.PaymentDiscountTotal);
            Assert.Equal(0, domainOrder.PaymentDiscountTotalWithTax);
            Assert.Equal(0, domainOrder.PaymentSubTotal);
            Assert.Equal(0, domainOrder.PaymentSubTotalWithTax);
            Assert.Equal(0, domainOrder.PaymentTaxTotal);
            Assert.Equal(0, domainOrder.PaymentTotal);
            Assert.Equal(0, domainOrder.PaymentTotalWithTax);
            Assert.Equal(0, domainOrder.ShippingDiscountTotal);
            Assert.Equal(0, domainOrder.ShippingDiscountTotalWithTax);
            Assert.Equal(0, domainOrder.ShippingSubTotal);
            Assert.Equal(0, domainOrder.ShippingSubTotalWithTax);
            Assert.Equal(0, domainOrder.ShippingTotal);
            Assert.Equal(0, domainOrder.ShippingTotalWithTax);
            Assert.Equal(0, domainOrder.SubTotal);
            Assert.Equal(0, domainOrder.SubTotalDiscount);
            Assert.Equal(0, domainOrder.SubTotalDiscountWithTax);
            Assert.Equal(0, domainOrder.SubTotalTaxTotal);
            Assert.Equal(0, domainOrder.SubTotalWithTax);
            Assert.Equal(0, domainOrder.Sum);
            Assert.Equal(0, domainOrder.TaxPercentRate);
            Assert.Equal(0, domainOrder.TaxTotal);

            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().DiscountAmount);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().DiscountAmountWithTax);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().Price);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().PriceWithTax);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().Sum);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().TaxPercentRate);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().TaxTotal);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().Total);
            Assert.Equal(0, domainOrder.InPayments.FirstOrDefault().TotalWithTax);

            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().DiscountAmount);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().DiscountAmountWithTax);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().Fee);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().FeeWithTax);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().Price);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().PriceWithTax);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().Sum);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().TaxPercentRate);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().TaxTotal);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().Total);
            Assert.Equal(0, domainOrder.Shipments.FirstOrDefault().TotalWithTax);

            Assert.Equal(0, domainOrder.Items.FirstOrDefault().DiscountAmount);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().DiscountAmountWithTax);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().DiscountTotal);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().DiscountTotalWithTax);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().ExtendedPrice);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().ExtendedPriceWithTax);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().Fee);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().FeeWithTax);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().PlacedPrice);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().PlacedPriceWithTax);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().Price);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().PriceWithTax);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().TaxPercentRate);
            Assert.Equal(0, domainOrder.Items.FirstOrDefault().TaxTotal);
        }
コード例 #4
0
        public void CalculateTotals_ShouldBe_RightTotals()
        {
            var item1 = new LineItem {
                Price = 10.99m, DiscountAmount = 1.33m, TaxPercentRate = 0.12m, Fee = 0.33m, Quantity = 2
            };
            var item2 = new LineItem {
                Price = 55.22m, DiscountAmount = 5.89m, TaxPercentRate = 0.12m, Fee = 0.12m, Quantity = 5
            };
            var item3 = new LineItem {
                Price = 88.45m, DiscountAmount = 10.78m, TaxPercentRate = 0.12m, Fee = 0.08m, Quantity = 12
            };
            var payment = new PaymentIn {
                Price = 44.52m, DiscountAmount = 10, TaxPercentRate = 0.12m
            };
            var shipment = new Shipment {
                Price = 22.0m, DiscountAmount = 5m, TaxPercentRate = 0.12m
            };

            var order = new CustomerOrder
            {
                TaxPercentRate = 0.12m,
                Fee            = 13.11m,
                Items          = new List <LineItem> {
                    item1, item2, item3
                },
                InPayments = new List <PaymentIn> {
                    payment
                },
                Shipments = new List <Shipment> {
                    shipment
                }
            };
            var totalsCalculator = new DefaultCustomerOrderTotalsCalculator();

            totalsCalculator.CalculateTotals(order);

            Assert.Equal(item1.PriceWithTax, 12.3088m);
            Assert.Equal(item1.PlacedPrice, 9.66m);
            Assert.Equal(item1.ExtendedPrice, 19.32m);
            Assert.Equal(item1.DiscountAmountWithTax, 1.4896m);
            Assert.Equal(item1.DiscountTotal, 2.66m);
            Assert.Equal(item1.FeeWithTax, 0.3696m);
            Assert.Equal(item1.PlacedPriceWithTax, 10.8192m);
            Assert.Equal(item1.ExtendedPriceWithTax, 21.6384m);
            Assert.Equal(item1.DiscountTotalWithTax, 2.9792m);
            Assert.Equal(item1.TaxTotal, 2.358m);

            Assert.Equal(shipment.DiscountAmountWithTax, 5.6m);
            Assert.Equal(shipment.PriceWithTax, 24.64m);
            Assert.Equal(shipment.FeeWithTax, 0.0m);
            Assert.Equal(shipment.Total, 17.0m);
            Assert.Equal(shipment.TotalWithTax, 19.04m);
            Assert.Equal(shipment.TaxTotal, 2.04m);

            Assert.Equal(payment.Total, 34.52m);
            Assert.Equal(payment.PriceWithTax, 49.8624m);
            Assert.Equal(payment.TotalWithTax, 38.6624m);
            Assert.Equal(payment.DiscountAmountWithTax, 11.2m);
            Assert.Equal(payment.TaxTotal, 4.1424m);

            Assert.Equal(order.SubTotal, 1359.48m);
            Assert.Equal(order.SubTotalDiscount, 161.47m);
            Assert.Equal(order.SubTotalDiscountWithTax, 180.8464m);
            Assert.Equal(order.SubTotalTaxTotal, 143.8248m);
            Assert.Equal(order.SubTotalWithTax, 1522.6176m);
            Assert.Equal(order.ShippingSubTotal, 22.00m);
            Assert.Equal(order.ShippingSubTotalWithTax, 24.64m);
            Assert.Equal(order.PaymentSubTotal, 44.52m);
            Assert.Equal(order.PaymentSubTotalWithTax, 49.8624m);
            Assert.Equal(order.TaxTotal, 150.0072m);
            Assert.Equal(order.DiscountTotal, 176.47m);
            Assert.Equal(order.DiscountTotalWithTax, 197.6464m);
            Assert.Equal(order.FeeTotal, 13.64m);
            Assert.Equal(order.FeeTotalWithTax, 15.2768m);
            Assert.Equal(order.FeeWithTax, 14.6832m);
            Assert.Equal(order.Total, 1413.1772m);
        }