/// <summary> /// The calculate tax for invoice. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="taxAddress"> /// The tax address. /// </param> /// <param name="quoteOnly"> /// A value indicating whether or not this is a tax quote or a formal tax submission /// </param> /// <returns> /// The <see cref="ITaxCalculationResult"/>. /// </returns> public ITaxCalculationResult CalculateTaxForInvoice(IInvoice invoice, IAddress taxAddress, bool quoteOnly) { var defaultStoreAddress = _settings.DefaultStoreAddress; string prefix = invoice.InvoiceNumberPrefix; if (quoteOnly) { invoice.InvoiceNumberPrefix = string.Format("Quote-{0}", Guid.NewGuid()); } var request = invoice.AsTaxRequest(defaultStoreAddress, quoteOnly); if (quoteOnly) { invoice.InvoiceNumberPrefix = prefix; } request.CompanyCode = _settings.CompanyCode; var avaTaxResult = _avaTaxService.GetTax(request); if (avaTaxResult.ResultCode == SeverityLevel.Success) { var extendedData = new ExtendedDataCollection(); extendedData.SetValue(Core.Constants.ExtendedDataKeys.TaxTransactionResults, JsonConvert.SerializeObject(avaTaxResult)); return(new TaxCalculationResult(TaxMethod.Name, -1, avaTaxResult.TotalTax, extendedData)); } IEnumerable <ApiResponseMessage> messages; try { messages = avaTaxResult.Messages; } catch (Exception) { messages = Enumerable.Empty <ApiResponseMessage>(); } var exception = new AvaTaxApiException(string.Format("AvaTax returned result code: {0}. {1}", avaTaxResult.ResultCode, string.Join(Environment.NewLine, messages.Select(x => x.Details)))); LogHelper.Error <AvaTaxTaxationGatewayMethod>("AvaTax API returned an exception", exception); throw exception; }
/// <summary> /// The calculate tax for invoice. /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="taxAddress"> /// The tax address. /// </param> /// <param name="quoteOnly"> /// A value indicating whether or not this is a tax quote or a formal tax submission /// </param> /// <returns> /// The <see cref="ITaxCalculationResult"/>. /// </returns> public ITaxCalculationResult CalculateTaxForInvoice(IInvoice invoice, IAddress taxAddress, bool quoteOnly) { var defaultStoreAddress = _settings.DefaultStoreAddress; string prefix = invoice.InvoiceNumberPrefix; if (quoteOnly) { invoice.InvoiceNumberPrefix = string.Format("Quote-{0}", Guid.NewGuid()); } var request = invoice.AsTaxRequest(defaultStoreAddress, quoteOnly); if (quoteOnly) invoice.InvoiceNumberPrefix = prefix; request.CompanyCode = _settings.CompanyCode; var avaTaxResult = _avaTaxService.GetTax(request); if (avaTaxResult.ResultCode == SeverityLevel.Success) { var extendedData = new ExtendedDataCollection(); extendedData.SetValue(Core.Constants.ExtendedDataKeys.TaxTransactionResults, JsonConvert.SerializeObject(avaTaxResult)); return new TaxCalculationResult(TaxMethod.Name, -1, avaTaxResult.TotalTax, extendedData); } IEnumerable<ApiResponseMessage> messages; try { messages = avaTaxResult.Messages; } catch (Exception) { messages = Enumerable.Empty<ApiResponseMessage>(); } var exception = new AvaTaxApiException(string.Format("AvaTax returned result code: {0}. {1}", avaTaxResult.ResultCode, string.Join(Environment.NewLine, messages.Select(x => x.Details)))); LogHelper.Error<AvaTaxTaxationGatewayMethod>("AvaTax API returned an exception", exception); throw exception; }