public static async Task CalculateSingleAvalaraTaxAsync(ParametersHeader parameters) { const string licenseKey = "3C154FC03B81D3D5"; const int accountId = 2000160773; const string companyCode = "DEFAULT"; AvaTaxClient client = new AvaTaxClient("MyConsoleApp", "1.0", Environment.MachineName, AvaTaxEnvironment.Production) .WithSecurity(accountId, licenseKey); TransactionBuilder t1 = new TransactionBuilder(client, companyCode, DocumentType.SalesOrder, parameters.customer_code_string) .WithAddress(TransactionAddressType.SingleLocation, parameters.to_street, null, null, parameters.to_city, parameters.to_state.ToString(), parameters.to_zip, parameters.to_country) .WithDate(parameters.InvoiceDate) .WithReportingLocationCode("DEFAULT") .WithPurchaseOrderNumber(parameters.PoNumber); int i = 1; foreach (ParameterLine lineItem in parameters.line_items) { decimal qty = decimal.Zero; decimal.TryParse(lineItem.quantity, out qty); decimal unit_price = decimal.Zero; decimal.TryParse(lineItem.unit_price, out unit_price); string avaTaxCode = lineItem.avaTaxCode; string id = lineItem.id; t1.WithLine(unit_price, qty, avaTaxCode, lineItem.description, id, null, i.ToString()); i++; } try { TransactionModel tm = await t1.CreateAsync(); if (tm.lines != null) { foreach (TransactionLineModel line in tm.lines) { Guid.TryParse(line.itemCode, out Guid Id); var a = parameters.line_items.Find(l => l.id == Id.ToString()); a.taxAmount = line.taxCalculated ?? 0; Console.WriteLine(a.taxAmount); } } } catch (AvaTaxError ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ex.error); Console.ResetColor(); } }
private static async Task InvoiceById(Guid invoiceId) { Invoice invoice = new Invoice() { Id = invoiceId }; await invoice.ExpandValuesAsync(); await invoice.ExpandNavAsync(false, nameof(invoice.CustomerBillingInfo), nameof(invoice.SupplierBillingInfo)); AccountBillingInfo customerBillingInfo = invoice.CustomerBillingInfo; await customerBillingInfo.ExpandNavAsync(false, nameof(customerBillingInfo.Country), nameof(customerBillingInfo.Region), nameof(customerBillingInfo.City)); string ZipCode = await ValidateZipCodeAsync(invoice.CustomerBillingInfo.Name, "", invoice.CustomerBillingInfo.Street, invoice.CustomerBillingInfo.City.Name, invoice.CustomerBillingInfo.Region.Name, invoice.CustomerBillingInfo.ZipCode); string cAddress = $"Customer: {invoice.CustomerBillingInfo.Name}" + $"{Environment.NewLine}\tCustomer Billing Info Id: {invoice.CustomerBillingInfoId.ToString()}" + $"{Environment.NewLine}\t{invoice.CustomerBillingInfo.Street}" + $"{Environment.NewLine}\t{invoice.CustomerBillingInfo.City.Name}, {invoice.CustomerBillingInfo.Region.Name}" + $"{Environment.NewLine}\t{invoice.CustomerBillingInfo.Country.Name}, {ZipCode}"; Console.WriteLine(cAddress); Console.WriteLine(Environment.NewLine); AccountBillingInfo supplierBillingInfo = invoice.SupplierBillingInfo; await supplierBillingInfo.ExpandNavAsync(false, nameof(supplierBillingInfo.Country), nameof(supplierBillingInfo.Region), nameof(supplierBillingInfo.City)); string sAddress = $"Supplier: {invoice.SupplierBillingInfo.Name}" + $"{Environment.NewLine}\tSupplier Billing Info Id: {invoice.SupplierBillingInfoId.ToString()}" + $"{Environment.NewLine}\t{invoice.SupplierBillingInfo.Street}" + $"{Environment.NewLine}\t{invoice.SupplierBillingInfo.City.Name}, {invoice.SupplierBillingInfo.Region.Name}" + $"{Environment.NewLine}\t{invoice.SupplierBillingInfo.Country.Name}, {invoice.SupplierBillingInfo.ZipCode}"; Console.WriteLine(sAddress); ParametersHeader parameters = new ParametersHeader() { to_street = invoice.CustomerBillingInfo.Street.Trim(), to_city = invoice.CustomerBillingInfo.City.Name.Trim(), to_state = invoice.CustomerBillingInfo.Region.Name.Trim(), to_zip = ZipCode.Trim(), to_country = "US", shipping = "0", customer_code_string = invoice.CustomerBillingInfo.Name.Trim(), PoNumber = invoice.Number.Trim(), InvoiceDate = invoice.StartDate, currencyCode = "USD" }; await invoice.ExpandAssociationsAsync(false, nameof(invoice.InvoiceProductByInvoice)); ICollection <InvoiceProduct> invoiceProducts = invoice.InvoiceProductByInvoice; Console.WriteLine(Environment.NewLine); Console.WriteLine("--- INVOICE LINES ---"); int i = 1; foreach (InvoiceProduct invoiceProduct in invoiceProducts) { await invoiceProduct.ExpandNavAsync(false, nameof(invoiceProduct.Product)); Product product = invoiceProduct.Product; await product.ExpandNavAsync(false, nameof(product.Type), nameof(product.Category), nameof(product.DeliveryType), nameof(product.Kind), nameof(product.DeploymentType)); string line = $"{Environment.NewLine}Line #:{i.ToString("#")}" + $"{Environment.NewLine}{invoiceProduct.Product.NameENU}\tQty: {invoiceProduct.Quantity.ToString()}, Price: {invoiceProduct.Price.ToString("C2")}, Total: {invoiceProduct.PrimaryAmount.ToString("C2")}" + $"{Environment.NewLine}\tCategory:\t{invoiceProduct.Product.Category.Name} " + $"{Environment.NewLine}\tDeployment:\t{invoiceProduct.Product.Type.Name}" + $"{Environment.NewLine}\tKind:\t\t{invoiceProduct.Product.Kind.Name}" + $"{Environment.NewLine}\tDeployment:\t{invoiceProduct.Product.DeploymentType.Name}" + $"{Environment.NewLine}\tDelivery:\t{invoiceProduct.Product.DeliveryType.Name} "; Console.WriteLine(line); Console.ForegroundColor = ConsoleColor.Green; string avaCode = GetAvalaraTaxCode(invoiceProduct.Product.Category.Name, invoiceProduct.Product.DeploymentType.Name, invoiceProduct.Product.Kind.Name, invoiceProduct.Product.Type.Name, invoiceProduct.Product.Name); string taxCodes = $"\tTaxJar:\t{invoiceProduct.Product.TaxCode.ToString().Trim()}" + $"{Environment.NewLine}\tAvaTax:\t{avaCode.Trim()}"; ParameterLine parameterLine = new ParameterLine { quantity = "1", unit_price = invoiceProduct.PrimaryAmount.ToString(), avaTaxCode = avaCode, id = invoiceProduct.Product.Id.ToString(), description = invoiceProduct.Product.NameENU }; parameters.line_items.Add(parameterLine); Console.WriteLine(taxCodes); Console.ResetColor(); i++; } await CalculateSingleAvalaraTaxAsync(parameters); }