Module:GS pay

-- -- This module implements -- 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] = 26975 stepOnePay[4] = 30280 stepOnePay[5] = 33878 stepOnePay[6] = 37765 stepOnePay[7] = 41966 stepOnePay[8] = 46475 stepOnePay[9] = 51332 stepOnePay[10] = 56528 stepOnePay[11] = 62107 stepOnePay[12] = 74441 stepOnePay[13] = 88520 stepOnePay[14] = 104604 stepOnePay[15] = 123041 -- Within Grade increase for GS [Grade] WIGIncrease[3] = 899 WIGIncrease[4] = 1009 WIGIncrease[5] = 1129 WIGIncrease[6] = 1259 WIGIncrease[7] = 1399 WIGIncrease[8] = 1549 WIGIncrease[9] = 1711 WIGIncrease[10] = 1884 WIGIncrease[11] = 2070 WIGIncrease[12] = 2481 WIGIncrease[13] = 2951 WIGIncrease[14] = 3487 WIGIncrease[15] = 4101 -- GS1 Pay Table (because it has inconsistent WIG) GSOnePay[1] = 21986 GSOnePay[2] = 22724 GSOnePay[3] = 23454 GSOnePay[4] = 24183 GSOnePay[5] = 24912 GSOnePay[6] = 25339 GSOnePay[7] = 26063 GSOnePay[8] = 26792 GSOnePay[9] = 26821 GSOnePay[10] = 27502 -- GS2 Pay Table (because it has inconsistent WIG}	GSTwoPay[1] = 24722	GSTwoPay[2] = 25310	GSTwoPay[3] = 26129	GSTwoPay[4] = 26821	GSTwoPay[5] = 27124	GSTwoPay[6] = 27922	GSTwoPay[7] = 28720	GSTwoPay[8] = 29518	GSTwoPay[9] = 303164	GSTwoPay[10] = 31114

-- 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