コード例 #1
0
        public async Task GetTaxes_NoToState_CA()
        {
            // arrage
            var taxesRequest = new TaxesRequest()
            {
                FromCountry = "CA",
                FromZip     = "V6G 3E",
                FromState   = "BC",
                ToCountry   = "CA",
                ToZip       = "M5V 2T6",
                Amount      = 16.95,
                Shipping    = 10,
                LineItems   = new List <GetTaxesRequestLineItem>()
                {
                    new GetTaxesRequestLineItem
                    {
                        Quantity  = 1,
                        UnitPrice = 16.95
                    }
                }
            };

            var expectedAmountToCollect = 3.5;
            var expectedTaxableAmount   = 26.95;

            // act
            var taxesResponse = await taxCalculator.GetTaxesForOrder(taxesRequest);

            // assert
            Assert.AreEqual(expectedAmountToCollect, taxesResponse.AmountToCollect);
            Assert.AreEqual(expectedTaxableAmount, taxesResponse.TaxableAmount);
        }
コード例 #2
0
        public async Task GetTaxes_NoToZip_US()
        {
            // arrage
            var taxesRequest = new TaxesRequest()
            {
                FromCountry = "US",
                FromZip     = "07001",
                FromState   = "NJ",
                ToCountry   = "US",
                ToZip       = "",
                ToState     = "NJ",
                Amount      = 16.50,
                Shipping    = 1.5,
                LineItems   = new List <GetTaxesRequestLineItem>()
                {
                    new GetTaxesRequestLineItem
                    {
                        Quantity       = 1,
                        UnitPrice      = 15.0,
                        ProductTaxCode = "31000"
                    }
                }
            };

            var expectedAmountToCollect = 1.09;
            var expectedTaxableAmount   = 16.5;

            // act
            var taxesResponse = await taxCalculator.GetTaxesForOrder(taxesRequest);

            // assert
            Assert.AreEqual(expectedAmountToCollect, taxesResponse.AmountToCollect);
            Assert.AreEqual(expectedTaxableAmount, taxesResponse.TaxableAmount);
        }
コード例 #3
0
        public async Task <IActionResult> GetTaxesAsync([FromBody] TaxesRequest model)
        {
            try
            {
                var rates = await _TaxCalculator.GetTaxsForOrderAsync(model);

                return(Ok(rates));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #4
0
        public static void GetCalculateTa(ITaxJarService service, HttpClient httpClient)
        {
            string Uri          = "v2/taxes";
            var    taxesRequest = new TaxesRequest()
            {
                from_country    = "US",
                from_zip        = "92093",
                from_state      = "CA",
                from_city       = "La Jolla",
                from_street     = "9500 Gilman Drive",
                to_country      = "US",
                to_zip          = "90002",
                to_state        = "CA",
                to_city         = "Los Angeles",
                to_street       = "1335 E 103rd St",
                amount          = 15,
                shipping        = 1.5,
                nexus_addresses = new List <nexusAddresses>()
                {
                    new nexusAddresses()
                    {
                        id      = "Main Location",
                        country = "US",
                        zip     = "92093",
                        state   = "CA",
                        city    = "La Jolla",
                        street  = "9500 Gilman Drive",
                    }
                },
                line_items = new List <lineItems>()
                {
                    new lineItems()
                    {
                        id               = "1",
                        quantity         = 1,
                        product_tax_code = "20010",
                        unit_price       = 15,
                        discount         = 0
                    }
                }
            };

            var model = service.Calculate_the_taxes_for_an_order(httpClient, taxesRequest, Uri);

            Console.WriteLine("order_total_amount: {0} \t shipping: {1} \t taxable_amount: {2}", model.Result.tax.order_total_amount, model.Result.tax.shipping, model.Result.tax.taxable_amount);
        }
コード例 #5
0
        public static void GettotalTax(ITaxJarService service, HttpClient httpClient)
        {
            string Uri          = "v2/taxes";
            var    taxesRequest = new TaxesRequest()
            {
                from_country    = "US",
                from_zip        = "92093",
                from_state      = "CA",
                from_city       = "La Jolla",
                from_street     = "9500 Gilman Drive",
                to_country      = "US",
                to_zip          = "90002",
                to_state        = "CA",
                to_city         = "Los Angeles",
                to_street       = "1335 E 103rd St",
                amount          = 15,
                shipping        = 1.5,
                nexus_addresses = new List <nexusAddresses>()
                {
                    new nexusAddresses()
                    {
                        id      = "Main Location",
                        country = "US",
                        zip     = "92093",
                        state   = "CA",
                        city    = "La Jolla",
                        street  = "9500 Gilman Drive",
                    }
                },
                line_items = new List <lineItems>()
                {
                    new lineItems()
                    {
                        id               = "1",
                        quantity         = 1,
                        product_tax_code = "20010",
                        unit_price       = 15,
                        discount         = 0
                    }
                }
            };

            var model = service.TotalTaxTobecollected(httpClient, taxesRequest, Uri);

            Console.WriteLine("the total tax that needs to be collectedt: {0} ", model);
        }
コード例 #6
0
        async public Task <TaxesResponse> GetTaxesForOrder(TaxesRequest taxesRequest)
        {
            if (taxesRequest == null)
            {
                throw new ArgumentNullException("taxesRequest");
            }

            if (string.IsNullOrWhiteSpace(taxesRequest.ToCountry))
            {
                throw new ArgumentException("Param ToCountry is required.", nameof(taxesRequest));
            }

            if (string.IsNullOrWhiteSpace(taxesRequest.ToZip))
            {
                if (taxesRequest.ToCountry == Constants.COUNTRY_CODE_US)
                {
                    throw new ArgumentException("Param ToZip is required for US.", nameof(taxesRequest));
                }
            }

            if (string.IsNullOrWhiteSpace(taxesRequest.ToState))
            {
                if (taxesRequest.ToCountry == Constants.COUNTRY_CODE_US ||
                    taxesRequest.ToCountry == Constants.COUNTRY_CODE_CANADA)
                {
                    throw new ArgumentException("Param ToState is required for US and CA.", nameof(taxesRequest));
                }
            }

            // TODO: Finish all other possible validations as per api doc: https://developers.taxjar.com/api/reference/#post-calculate-sales-tax-for-an-order

            try
            {
                var taxesResponse = await TaxJarHttpClientProvider.PostAsync <TaxesJarResponse, TaxesRequest>("taxes", taxesRequest, Constants.API_KEY);

                return(taxesResponse.Tax);
            }
            catch (Exception ex)
            {
                throw new TaxCalculatorException(ex.Message);
            }
        }
コード例 #7
0
        public void TestGetOrderTaxes()
        {
            var service = new TaxJarCalculator();
            var request = new TaxesRequest
            {
                from_country = "US",
                from_state   = "NJ",
                from_zip     = "07001",
                to_country   = "US",
                to_zip       = "07446",
                to_state     = "NJ",
                shipping     = 1.5,
                amount       = 16.50
            };


            var actual = service.GetTaxsForOrderAsync(request).GetAwaiter().GetResult();


            Assert.AreEqual(1.19, actual.tax.amount_to_collect);
        }
コード例 #8
0
 async public Task <TaxesResponse> GetTaxesForOrder(TaxesRequest taxesRequest)
 {
     throw new NotImplementedException();
 }
コード例 #9
0
ファイル: TaxService.cs プロジェクト: jordenys/tax-calculator
 async public Task <TaxesResponse> GetTaxesForOrder(TaxesRequest taxesRequest)
 {
     // Do some businees logic here
     return(await this._taxCalculator.GetTaxesForOrder(taxesRequest));
 }