/// <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)); } }
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; }
public async Task <CalculateTaxServiceResponse> GetTaxCalculation(CalculateTaxServiceRequest req) { return(await _calculateTaxService.CalculateTax(req).ConfigureAwait(false)); }