UNPKG

taxjar-calcorado-node

Version:

Processes Colorado multiple home rule city data for TaxJar API calculations

157 lines (141 loc) 3.58 kB
# TaxJar-Calcorado-Node **Disclaimer: This package has no endorsement, maintenance, or support by [TaxJar](HTTP://www.taxjar.com), its employees, or affiliates.** To support a business that has Colorado multiple Home-Rule city nexus, the TaxJar API for sales tax calculations [/v2/taxes](https://developers.taxjar.com/api/reference/#taxes) requires `"nexus_addresses"` specification of which home-rule city sales tax should apply. In order to simplify the requirement, this package allows sending all home-rule city nexus addresses into your request body. It uses a straight-forward comparison to look at the `"to_city"` to determine which `"nexus_addresses"` should apply. ## Installation Use the package manager [npm](https://www.npmjs.com/) to install taxjar-calcorado-node. ```bash npm install taxjar-calcorado-node ``` Alternatively, the entire code used to make this work is pretty straight-forward: ``` module.exports = (apiReq) => { let toCity = apiReq.to_city.toUpperCase(); let nexusAddresses = apiReq.nexus_addresses; nexusAddresses.forEach((address, idx, array) => { if (toCity.localeCompare(address.city.toUpperCase()) == 0) { apiReq.nexus_addresses = address; return apiReq } if (idx === array.length - 1 && apiReq.nexus_addresses.length > 1) { delete apiReq.nexus_addresses; return apiReq } }); } ``` ## Usage ### Require the package ```const calcorado = require('taxjar-calcorado-node');``` ### Pass all CO nexus_addresses to request Assuming shipping details are available, here's the request body: ``` taxCalc = { to_country: 'US', to_zip: '80217', to_state: 'CO', to_city: 'Centennial', to_street: '7526 E 53rd Pl', amount: 15, shipping: 1.5, nexus_addresses: [], line_items: [ { id: '1', quantity: 1, product_tax_code: '', unit_price: 15, discount: 0 } ] } ``` ..and here's where we conditionally tie in all home-rule city addresses: ``` if (taxCalc.toState == 'CO') { taxCalc.nexus_addresses = [ { id: 'Denver Nexus', country: 'US', zip: '80217', state: 'CO', city: 'Denver', street: '7550 E 53rd Pl' }, { id: 'Boulder Nexus', country: 'US', zip: '80302', state: 'CO', city: 'Boulder', street: '1905 15th St' }, { id: 'Centennial Nexus', country: 'US', zip: '80122', state: 'CO', city: 'Centennial', street: '2221 E Arapahoe Rd' }, { id: 'Centennial Nexus', country: 'US', zip: '80122', state: 'CO', city: 'Centennial', street: '2221 E Arapahoe Rd' }, { id: 'Central City Nexus', country: 'US', zip: '80427', state: 'CO', city: 'Central City', street: '149 Gregory St' } ]; } ``` ### Call the package, send the new calc to TaxJar ``` newTaxCalc = calcorado(taxCalc); ``` The new request: ``` { to_country: 'US', to_zip: '80217', to_state: 'CO', to_city: 'Centennial', to_street: '7526 E 53rd Pl', amount: 15, shipping: 1.5, nexus_addresses: [ { id: 'Centennial Nexus', country: 'US', zip: '80122', state: 'CO', city: 'Centennial', street: '2221 E Arapahoe Rd' } ], line_items: [ { id: '1', quantity: 1, product_tax_code: '', unit_price: 15, discount: 0 } ] } ``` ``` client.taxForOrder(newTaxCalc); ``` ## Contributing Pull requests are welcome. ## License [ISC](https://opensource.org/licenses/ISC) / Open-source.