0.1.1 • Published 11 months ago

formula-payroll v0.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Formula Payroll Calculator

A comprehensive formula payroll calculator library to support Hihono projects.

Getting Started

npm install formula-payroll

How to use

const payrollFormula = [
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} > 0",
		amount: null,
		ranking: "1",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "job_position",
		value: "{job_position:154}",
		amount: "0",
		ranking: "1.1",
		formula: {
			value: "job_position",
			label: "Job Title",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "join_status",
		value: "{join_status:6}",
		amount: "50000 * {function:late_in}",
		ranking: "1.2",
		formula: {
			value: "join_status",
			label: "Join Status",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "job_level",
		value: "{job_level:6} {job_level:5}",
		amount: null,
		ranking: "1.3",
		formula: {
			value: "job_level",
			label: "Job Level",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 1",
		amount: "100000",
		ranking: "1.3.1",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 2",
		amount: "200000",
		ranking: "1.3.2",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 3",
		amount: "300000",
		ranking: "1.3.3",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 4",
		amount: "800000",
		ranking: "1.3.4",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} >= 5",
		amount: "800000 + ( ( {function:late_in} - 4 ) * 100000 )",
		ranking: "1.3.5",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "else",
		value: "else",
		amount: null,
		ranking: "1.4",
		formula: {
			value: "else",
			label: "Else",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 1",
		amount: "200000",
		ranking: "1.4.1",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 2",
		amount: "400000",
		ranking: "1.4.2",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 3",
		amount: "600000",
		ranking: "1.4.3",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} == 4",
		amount: "1200000",
		ranking: "1.4.4",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
	{
		payroll_component_id: 39,
		formula_component_value: "function",
		value: "{function:late_in} >= 5",
		amount: "1200000 + ( ( {function:late_in} - 4 ) * 200000 )",
		ranking: "1.4.5",
		formula: {
			value: "function",
			label: "Function",
			show: 1,
			alias: null,
		},
	},
];

// Init formula calculator
const formula = new FormulaCalculator();
// formula.set('employee', employee)
formula.set("formulas", payrollFormula);
formula.set("time_off_type", { "1": 0, "2": 0, "3": 0, "4": 1, "6": 0 });
formula.set("work_group", { "12": 26 });
formula.set("work_shift", { "26": 22, "27": 4 });
formula.variables.set("department", 4);
formula.variables.set("job_level", 4);
formula.variables.set("job_position", 40);
formula.variables.set("join_status", 6); // jika join status 6 maka result = 50000
// formula.variables.function.set('unpaid_timeoff', 3)
formula.variables.function.set("los", 2168);
formula.variables.function.set("los_payroll", 1608);
formula.variables.function.set("join_date", "2018-08-01");
formula.variables.function.set("resign_date", null);
formula.variables.function.set("payroll_start_date", "2022-12-26");
formula.variables.function.set("payroll_end_date", "2023-01-25");
formula.variables.function.set("current_cutoff_week", 0);
formula.variables.function.set("is_last_week_of_this_month", false);
formula.variables.function.set("attendance_type", "Weekly Regular");
formula.variables.function.set("total_alpha", 0);
formula.variables.function.set("early_out", 0);
formula.variables.function.set("early_in", 0);
formula.variables.function.set("unpaid_timeoff", 0);
formula.variables.function.set("paid_timeoff", 1);
formula.variables.function.set("late_in", 2);
formula.variables.function.set("break_in", 0);
formula.variables.function.set("break_off", 0);
formula.variables.function.set("work_time", "50h 23m");
formula.variables.function.set("break_time", "0h 0m");
formula.variables.function.set("avg_work_time", "1h 56m");
formula.variables.function.set("avg_break_time", "0h 0m");
formula.variables.function.set("total_clock_in_from_all_shift_location", 26);

const calculate = formula.calculate();
0.1.1

11 months ago

0.1.0

11 months ago

0.0.1

11 months ago