1.0.3 • Published 4 years ago
@edgarpan/monthly-payslip-generator v1.0.3
Monthly Payslip Generator
This is CLI tool that generates monthly payslip by given annual salary.
Install globally
$ npm i -g @edgarpan/monthly-payslip-generator
Usage
$ mpg "Jon Snow" 80000
__ __ ____ ____
| \/ | | _ \ / ___|
| |\/| | | |_) | | | _
| | | | | __/ | |_| |
|_| |_| |_| \____|
Monthly Payslip for: Jon Snow
Gross Monthly Income: 6667
Monthly Income Tax: 833
Net Monthly Income: 5833
Implementation
Payslip
Entry point of payslip generator.
Arguments
employeeName: string
: Employee name for the outputannualSalary: number
: The calculator is default with annual salary. At the end of the calculation, monthly output is available.
IncomeTax
IncomeTax
does not have the knowledge of tax formula for each brackets. It only has the following responsibilities:
- Summing the taxable income for each tax brackets
- Provides the net income after the calculation
Arguments
income: IPeriodic
: Income received fromPayslip
. We named it as "income" because we have default it.brackets: BracketData[]
: This array of brackets allow the IncomeTax to sum the taxable income.
Bracket
Bracket
holds the taxable income calculation and the knowledge of if the bracket is taxable.
Arguments
income: IPeriodic
: This allows the bracket to identify if the bracket is taxable.bracket: BracketData
: An initial bracket data. This is currently hardcoded but can extended with API.
Periodic
A uniform object for annual salary. It also has the ability to transform to monthly.
Arguments
annualValue: number
:Periodic
accepts annual salary only as default.
Fixed tax rates
Taxable income | Tax on this income |
---|---|
$0 - $2 0,000 | $0 |
$2 0,001 - $4 0,000 | 10c for each $1 over $20,000 |
$4 0,001 - $8 0,000 | 20c for each $1 over $40,000 |
$8 0,001 - $1 80,000 | 30c for each $1 over $80,000 |
$1 80,001 and over | 40c for each $1 over $180,000 |
Rounding
The result of calculation will be rounded to the nearest one.
example: 838.274 will be 838
Local development
- Install dependencies
$ npm install
- Start the development in watch mode
$ npm run start -- <employee-name> <annual -salary>