payslip-generator
v1.0.0
Published
Generates employee's paylip based on Australia's tax table and super annuation rate
Downloads
4
Readme
#Payslip generator Generates payslip based on Australia's tax rate table and employee's super annuation rate.
##Installation
npm install payslip-generator --save
##Running Tests
git clone git clone [email protected]:mehdivk/payslip-generator.git
cd payslip-generator
npm install
npm test
##Getting Started
payslip-generator
exports a single class, PayslipGenerator.
var PayslipGenerator = require('payslip-generator');
var payslipGenerator = new PayslipGenerator(taxTable);
taxTable is an array of taxTble items. Each item in taxTable must have following fields:
minSalary
: A mandatory number (>= 0)maxSalary
: A mandatory number (>= 0)baseTax
: A mandatory number (>= 0)taxPerDollar
: A mandatory number (>= 0 & < 1)
An example of taxTable
array:
[
{
"minSalary": 0,
"maxSalary": 18200,
"baseTax": 0,
"taxPerDollar": 0
},
{
"minSalary": 18201,
"maxSalary": 37000,
"baseTax": 0,
"taxPerDollar": 0.19
},
{
"minSalary": 37001,
"maxSalary": 80000,
"baseTax": 3572,
"taxPerDollar": 0.325
},
{
"minSalary": 80001,
"maxSalary": 180000,
"baseTax": 17547,
"taxPerDollar": 0.37
},
{
"minSalary": 180001,
"maxSalary": 0,
"baseTax": 54547,
"taxPerDollar": 0.45
}
]
##PayslipGenerator.prototype.generate()
.generate()
function expects following params:
firstName
: mandatory string paramlastName
: mandatory string paramannualSalary
: mandatory positive numbersuperRate
: mandatory positive numberpaymentPeriod
: A calendar month
var PayslipGenerator = require('payslip-generator');
var taxTable = require('./tax-table.json');
var payslip = new PayslipGenerator(taxTable);
var result = payslip.generate('Mehdi', 'Valikhani', 60500, 9, 'March');
.generate()
function is a syncronous method, it may return an error or a payslip generator.
To make life easier we always return an array with maximum of two item.
err
: An instance ofError
classpayslipObject
: Payslip object
###An example of payslip object
{
"firstName" : "David",
"lastName" : "Rudd",
"paymentPeriod" : "March",
"grossIncome" : 5004,
"incomeTax" : 922,
"netIncome" : 4082,
"superAnnuation" : 450
}