1.0.2 • Published 4 years ago

taxjar-calcorado-node v1.0.2

Weekly downloads
2
License
ISC
Repository
github
Last release
4 years ago

TaxJar-Calcorado-Node

Disclaimer: This package has no endorsement, maintenance, or support by TaxJar, 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 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 to install taxjar-calcorado-node.

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 / Open-source.

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago