Пример #1
0
            /// <summary>
            /// Calculates the tax for the last item.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The response.</returns>
            private static CalculateTaxServiceResponse CalculateTax(CalculateTaxServiceRequest request)
            {
                ThrowIf.Null(request, "request");

                TaxHelpers.SetSalesTaxGroup(request.RequestContext, request.Transaction);
                SalesTaxOverrideHelper.CalculateTaxOverrides(request.RequestContext, request.Transaction);

                // Consider active (non-void) lines for tax.
                // Need to recalculate tax on return-by-receipt lines because we cannot reconstruct tax lines from return transaction lines alone.
                // A few key information like IsExempt, IsTaxInclusive, TaxCode are not available on return transaction line.
                foreach (var saleItem in request.Transaction.ActiveSalesLines)
                {
                    saleItem.TaxRatePercent = 0;
                    saleItem.TaxLines.Clear();
                }

                var totaler = new SalesTransactionTotaler(request.Transaction);

                totaler.CalculateTotals(request.RequestContext);

                ClearChargeTaxLines(request.Transaction);

                TaxContext taxContext = new TaxContext(request.RequestContext);

                TaxCodeProvider defaultProvider = GetTaxProvider(request.RequestContext, taxContext);

                defaultProvider.CalculateTax(request.RequestContext, request.Transaction);

                return(new CalculateTaxServiceResponse(request.Transaction));
            }
 private static void OnCalculateTaxExecuting(CalculateTaxServiceRequest request)
 {
     if (!string.IsNullOrWhiteSpace(request.Transaction.TaxOverrideCode))
     {
         request.RequestContext.Execute <NullResponse>(new CheckAccessServiceRequest(RetailOperation.OverrideTaxTransactionList));
     }
 }
Пример #3
0
        async Task <CalculateTaxServiceResponse> CalculateTax(CalculateTaxServiceRequest cartItem)
        {
            try
            {
                var taxJarToken = await SecureStorage.GetAsync("taxjar_token");

                var service = new CalculateTaxService(new Uri("https://api.taxjar.com/v2"), taxJarToken);
                return(_cartItemResponse = await service.GetTaxCalculation(cartItem));
            }
            catch (Exception ex)
            {
                await _dialogService.DisplayAlertAsync("Service Error", ex.Message, "OK");
            }
            return(null);
        }
        public CalculateTaxServiceRequest GetTaxRequestByZip(string zip)
        {
            CalculateTaxServiceRequest tax = null;

            if (zip == "92093")
            {
                tax = new CalculateTaxServiceRequest()
                {
                    FromCountry    = "US",
                    FromZip        = "92093",
                    FromState      = "CA",
                    FromCity       = "La Jolla",
                    FromStreet     = "9500 Gilman Drive",
                    ToCountry      = "US",
                    ToZip          = "90002",
                    ToState        = "CA",
                    ToCity         = "Los Angeles",
                    ToStreet       = "1335 E 103rd St",
                    Amount         = 15,
                    Shipping       = 2,
                    NexusAddresses = new[] {
                        new NexusAddress {
                            Id      = "Main Location",
                            Country = "US",
                            Zip     = "92093",
                            State   = "CA",
                            City    = "La Jolla",
                            Street  = "9500 Gilman Drive"
                        }
                    },
                    LineItems = new[] {
                        new LineItem {
                            Id             = "1",
                            Quantity       = "1",
                            ProductTaxCode = "20010",
                            UnitPrice      = 15,
                            Discount       = 0
                        }
                    }
                };
            }
            else if (zip == "32561")
            {
                tax = new CalculateTaxServiceRequest()
                {
                    FromCountry    = "US",
                    FromZip        = "32561",
                    FromState      = "FL",
                    FromCity       = "Pensacola",
                    FromStreet     = "9500 Gilman Drive",
                    ToCountry      = "US",
                    ToZip          = "32561",
                    ToState        = "FL",
                    ToCity         = "Pensacola",
                    ToStreet       = "1335 E 103rd St",
                    Amount         = 15,
                    Shipping       = 2,
                    NexusAddresses = new[] {
                        new NexusAddress {
                            Id      = "Main Location",
                            Country = "US",
                            Zip     = "32561",
                            State   = "FL",
                            City    = "Pensacola",
                            Street  = "9500 Gilman Drive"
                        }
                    },
                    LineItems = new[] {
                        new LineItem {
                            Id             = "1",
                            Quantity       = "1",
                            ProductTaxCode = "20010",
                            UnitPrice      = 15,
                            Discount       = 0
                        }
                    }
                };
            }
            else
            {
                //default
            }
            return(tax);
        }
 private void Prepare()
 {
     _cartItem = PopulateCart();
     Amount    = _cartItem.Amount;
 }
Пример #6
0
 public async Task <CalculateTaxServiceResponse> GetTaxCalculation(CalculateTaxServiceRequest req)
 {
     return(await _calculateTaxService.CalculateTax(req).ConfigureAwait(false));
 }