Module:GS pay

--
-- This module implements {{GS pay}}
-- There are 150 cells in the GS Pay table. This LUA reduces the amount of
--   manual input needed to 46
--

local p = {}
local stepOnePay = {}
local GSOnePay = {}
local GSTwoPay = {}
local WIGIncrease = {}

-- UPDATE THESE. Last Update: 2024
-- https://www.opm.gov/policy-data-oversight/pay-leave/salaries-wages/salary-tables/pdf/2024/GS.pdf
	--For GS [Grade] Step 1 pay
	stepOnePay[3] = 27434
	stepOnePay[4] = 30795
	stepOnePay[5] = 34454
	stepOnePay[6] = 38407
	stepOnePay[7] = 42679
	stepOnePay[8] = 47265
	stepOnePay[9] = 52205
	stepOnePay[10] = 57489
	stepOnePay[11] = 63163
	stepOnePay[12] = 75706
	stepOnePay[13] = 90025
	stepOnePay[14] = 106382
	stepOnePay[15] = 125133
	-- Within Grade increase for GS [Grade]
	WIGIncrease[3] = 914
	WIGIncrease[4] = 1027
	WIGIncrease[5] = 1148
	WIGIncrease[6] = 1280
	WIGIncrease[7] = 1423
	WIGIncrease[8] = 1576
	WIGIncrease[9] = 1740
	WIGIncrease[10] = 1916
	WIGIncrease[11] = 2105
	WIGIncrease[12] = 2524
	WIGIncrease[13] = 3001
	WIGIncrease[14] = 3546
	WIGIncrease[15] = 4171
	-- GS1 Pay Table (because it has inconsistent WIG)
	GSOnePay[1] = 22360
	GSOnePay[2] = 23110
	GSOnePay[3] = 23853
	GSOnePay[4] = 24594
	GSOnePay[5] = 25336
	GSOnePay[6] = 25770
	GSOnePay[7] = 26506
	GSOnePay[8] = 27247
	GSOnePay[9] = 27277
	GSOnePay[10] = 27970
	-- GS2 Pay Table (because it has inconsistent WIG}
	GSTwoPay[1] = 25142
	GSTwoPay[2] = 25740
	GSTwoPay[3] = 26573
	GSTwoPay[4] = 27277
	GSTwoPay[5] = 27583
	GSTwoPay[6] = 28394
	GSTwoPay[7] = 29205
	GSTwoPay[8] = 30016
	GSTwoPay[9] = 30827
	GSTwoPay[10] = 31638

-- Base pay calculation
function p.basePay(grade, step)
	-- For Step 1 pay for all grades
	if step == nil then
		if grade > 2 then
			-- Returns the Step 1 Pay for [grade]
			return stepOnePay[grade]
		elseif grade == 1 then
			-- Returns GS1 Step 1
			return GSOnePay[1]
		else
			-- Returns GS2 Step 1
			return GSTwoPay[1]
		end
	-- For grades where step is specified
	else
		if grade > 2 then
			-- Calculate GS [grade #], Step [step #] pay
			local pay = stepOnePay[grade] + (WIGIncrease[grade] * (step - 1))
			return pay
		elseif grade == 1 then
			return GSOnePay[step]
		else
			return GSTwoPay[step]
		end
	end
end
	
-- 'Main' function
function p.get(frame)
	-- Error checking
	if frame.args[1] == nil then
		if frame.args[2] == nil then
			return
		end
	else
		-- Grab the basic pay number based on inputs
		return p.basePay(tonumber(frame.args[1]), tonumber(frame.args[2]))
	end
end
	
return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.