seneca-salestax

0.1.3 • Public • Published

Build Status

seneca-salestax

A sales tax calculation plugin for the Seneca toolkit

This module is a plugin for the Seneca framework. It provides business logic for sales tax calculation, such as:

  • tax rate resolution based on country, region, category or any configurable system
  • tax rate calculation

Quick example

 
    var seneca = require('seneca')()
    seneca.use('salestax', {
       country: {
         FR: 0.196,
         UK: {
           '*': 0.20, // this is a wildcard used if no category is specified
           category: {
             energy: 0.05,
             child: 0.05,
             food: 0
           }
         },
         IE: {
           category: {
             energy: 0.05,
             child: 0.05,
             food: 0,
             children_clothes: 0
           }
         }
       }
     })
 
    seneca.ready(function(){
 
      var salestaxpin = seneca.pin({role:'salestax',cmd:'*'})
 
      // configure your taxes and how they should apply
 
      salestaxpin.salestax({net: 100, country: 'FR'}, function(err, calcResult){
        console.log('total: ', calcResult.total) // 119.6
        console.log('tax: ', calcResult.tax) // 19.6
        console.log('rate: ', calcResult.rate) // 0.196
      })
 
      salestaxpin.salestax({net: 100, country: 'UK'}, function(err, calcResult){
        console.log('total: ', calcResult.total) // 120
        console.log('tax: ', calcResult.tax) // 20
        console.log('rate: ', calcResult.rate) // 0.20
      })
 
      salestaxpin.salestax({net: 100, country: 'UK', category: 'energy'}, function(err, calcResult){
        console.log('total: ', calcResult.total) // 105
        console.log('tax: ', calcResult.tax) // 5
        console.log('rate: ', calcResult.rate) // 0.05
      })
 
      salestaxpin.salestax({net: 100, country: 'UK', category: 'unknown'}, function(err, calcResult){
        console.log('error: ', err) // an error is returned because the category does not match a tax rate
      })
    })

Install

npm install --save seneca
npm install --save seneca-salestax

You'll need the seneca module to use this module - it's just a plugin.

Usage

To load the plugin:

seneca.use('salestax', { ... options ... })

Test

npm test

Readme

Keywords

Package Sidebar

Install

npm i seneca-salestax

Weekly Downloads

3

Version

0.1.3

License

MIT

Last publish

Collaborators

  • nherment
  • rjrodger