1.0.3 • Published 4 years ago

@edgarpan/monthly-payslip-generator v1.0.3

Weekly downloads
-
License
UNLICENSED
Repository
github
Last release
4 years ago

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 output
  • annualSalary: 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 from Payslip. 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 incomeTax on this income
$0 - $2 0,000$0
$2 0,001 - $4 0,00010c for each $1 over $20,000
$4 0,001 - $8 0,00020c for each $1 over $40,000
$8 0,001 - $1 80,00030c for each $1 over $80,000
$1 80,001 and over40c 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>