Пример #1
0
        public async Task GetTaxOnOrderTest()
        {
            var taxCalculatorMock = new TaxCalculatorMock();
            var taxService        = new TaxServiceWorker(taxCalculatorMock);

            var order = new Order()
            {
                from_country = "US",
                from_zip     = "07001",
                from_state   = "NJ",
                to_country   = "US",
                to_zip       = "07446",
                to_state     = "NJ",
                amount       = 16.50,
                shipping     = 1.5,
                line_items   = new List <LineItem>
                {
                    new LineItem()
                    {
                        quantity         = 1,
                        unit_price       = 15.0,
                        product_tax_code = "31000"
                    }
                }
            };

            var serviceTax = await taxService.GetTaxOnOrder(order);

            var calculatorTax = await taxCalculatorMock.GetTaxOnOrderAsync(order);

            Assert.IsTrue(serviceTax.IsDeepEqual(calculatorTax));
        }
Пример #2
0
        public async Task <Tax> TaxOnOrder([FromBody] Order order)
        {
            var serviceOrder = new TaxService.Models.Order.Order()
            {
                to_city      = order.ToCity,
                to_country   = order.ToCountry,
                to_state     = order.ToState,
                to_street    = order.ToStreet,
                to_zip       = order.ToZip,
                from_city    = order.FromCity,
                from_country = order.FromCountry,
                from_state   = order.FromState,
                from_street  = order.FromStreet,
                from_zip     = order.FromZip,
                amount       = order.Amount,
                shipping     = order.Shipping,
                line_items   = order.LineItems.Select(line => new TaxService.Models.Order.LineItem
                {
                    id               = line.ID,
                    quantity         = line.Quantity,
                    unit_price       = line.UnitPrice,
                    product_tax_code = line.ProductTaxCode
                }).ToList(),
                nexus_addresses = order.NexusAddresses == null ? null : order.NexusAddresses.Select(address => new TaxService.Models.Order.NexusAddress
                {
                    country = address.Country,
                    state   = address.State,
                    zip     = address.Zip
                }).ToList()
            };

            var serviceTax = await _taxService.GetTaxOnOrder(serviceOrder);

            var tax = new Tax
            {
                AmountToCollect  = serviceTax.amount_to_collect,
                FreightTaxable   = serviceTax.freight_taxable,
                HasNexus         = serviceTax.has_nexus,
                OrderTotalAmount = serviceTax.order_total_amount,
                Rate             = serviceTax.rate,
                Shipping         = serviceTax.shipping,
                TaxSource        = serviceTax.tax_source,
                TaxableAmount    = serviceTax.taxable_amount
            };

            return(tax);
        }