My personal repository of PeopleSoft related findings. They cover various modules in CRM/HR/PeopleTools and whatever reusable useful information I can find to make my job easy.
An employee enrolled into a savings plan where there is some
percentage match from employer, TWO rows would be created in PS_PAY_DEDUCTION
table with different DED_CLASS values, one as ‘Before-Tax’ and other as ‘Nontaxable
Btax Benefit’
How to setup a general deduction:
Define general deduction in deduction table.
Add it to a Company
Override the value for individual employee under Employee Pay data in NA payroll menu
With PeopleSoft Data Mover, you can also use the following nonstandard SQL
commands created by PeopleSoft: STORE and ERASE. Use the commands to change
COBOL SQL statements in PS_SQLSTMT_TBL.
Example:if you see 'ZZZZZZ_S_PYDATA' in any cobol program, look for a dms script with name ZZZZZZ
and inside that you would see a 'SELECT (S) ' statement.
SELECT * FROM PS_CAN_DED_BALANCE; SELECT * FROM PS_CAN_ERN_BALANCE;
SELECT * FROM PS_CAN_TAX_BALANCE;
--warning/
information messages
SELECT * FROM PS_BAS_MESSAGE; SELECT * FROM PS_BEN_BI_MESSAGE; SELECT * FROM PS_COBRA_MESSAGE; SELECT * FROM PS_CALC_MESSAGE;
SELECT * FROM PS_DED_MESSAGE; SELECT * FROM PS_PI_MESSAGE; SELECT * FROM PS_RETRODED_MSG; SELECT * FROM PS_RETROPAY_MSG; SELECT * FROM PS_SV403_MESSAGE; SELECT * FROM PS_PAY_MESSAGE;
--for
current payroll
SELECT * FROM PS_BOND_LOG; SELECT * FROM PS_DED_ARREARS; SELECT * FROM PS_DED_PREPAY; SELECT * FROM PS_FLSA_ADDL_DATA;
SELECT * FROM PS_GARN_EMPL_DED; SELECT * FROM PS_GVT_CONFIRM_TBL; SELECT * FROM PS_GVT_PAY_LIMITS; SELECT * FROM PS_GVT_SF113G_DATA; SELECT * FROM PS_HP_CONTPAY_DTL; SELECT * FROM PS_INS_EARNS_BAL; SELECT * FROM PS_LEAVE_ACCRUAL; SELECT * FROM PS_PAY_CAL_BAL_ID; SELECT * FROM PS_PAY_CHECK; SELECT * FROM PS_PAY_CNTRACT_DTL; SELECT * FROM PS_PAY_DEDUCTION; SELECT * FROM PS_PAY_DISTRIBUTN; SELECT * FROM PS_PAY_EARNINGS; SELECT * FROM PS_PAY_GARNISH; SELECT * FROM PS_PAY_GARN_OVRD; SELECT * FROM PS_PAY_INS_EARNS; SELECT * FROM PS_PAY_LINE; SELECT * FROM PS_PAY_ONE_TIME; SELECT * FROM PS_PAY_OTH_EARNS; SELECT * FROM PS_PAY_PAGE; SELECT * FROM PS_PAY_SPCL_EARNS;
--for general
balances
SELECT * FROM PS_DEDUCTION_BAL; SELECT * FROM PS_EARNINGS_BAL;
SELECT * FROM PS_CHECK_YTD;
SELECT * FROM PS_GARN_BALANCE;
SELECT * FROM PS_TAX1042_BALANCE; SELECT * FROM PS_TAX_BALANCE;
--Time and Labor tables
SELECT * FROM PS_PY_LDTLEMP_RC; SELECT * FROM PS_PY_LDTLEMP_TBL; SELECT * FROM PS_PY_LDTLEMP_WRK1; SELECT * FROM PS_PY_LDTLEMP_WRK2; SELECT * FROM PS_PY_LDTLPMSG_TBL; SELECT * FROM PS_PY_LDTL_RC; SELECT * FROM PS_PY_LDTL_TBL; SELECT * FROM PS_PY_LDTL_WRK; SELECT * FROM PS_PY_XREF_WRK; SELECT * FROM PS_TL_XREFSQ_TAO; SELECT * FROM PS_TL_XREF_TBL;
--Retro
process
SELECT * FROM PS_RETRO_PAYCHECK;
--temp/staging
tables with pay_line data used in pay calc process. Some of them are for future
use SELECT * FROM PS_WRK_EARNINGS; SELECT * FROM PS_WRK_LINE; SELECT * FROM PS_WRK_PSHUP_TXN; SELECT * FROM PS_WRK_SEQ_CHECK;
--Tax
tables
SELECT * FROM PS_PAY_TAX; SELECT * FROM PS_PAY_TAX_1042; SELECT * FROM PS_PAY_TAX_CAN; SELECT * FROM PS_PAY_TAX_OVRD; SELECT * FROM PS_PAY_CTX_OVRD;
SELECT * FROM PS_PAY_CAL_BAL_ID WHERE PAY_END_DT='30-JUN-2011';
SELECT * FROM PS_PAY_CTX_OVRD -- CAN payroll SELECT * FROM PS_PAY_EARNINGS WHERE PAY_END_DT='30-APR-2011' ; SELECT * FROM PS_PAY_DEDUCTION WHERE PAY_END_DT='31-JaN-2011'; SELECT * FROM PS_PAY_PAGE WHERE PAY_END_DT='30-JUN-2011'; SELECT * FROM PS_PAY_LINE WHERE PAY_END_DT='31-JaN-2011'; SELECT * FROM PS_PAY_OTH_EARNS WHERE PAY_END_DT='30-JUN-2011'; SELECT * FROM PS_PAY_ONE_TIME WHERE PAY_END_DT='30-JUN-2011'; SELECT * FROM PS_PAY_GARN_OVRD; SELECT * FROM PS_PAY_TAX_OVRD;
--error/ info messages SELECT * FROM PS_CALC_MESSAGE SELECT * FROM PS_COBRA_MESSAGE SELECT * FROM PS_BAS_MESSAGE; SELECT * FROM PS_BEN_BI_MESSAGE; SELECT * FROM PS_DED_MESSAGE WHERE EMPLID='AV19'; -- no rows SELECT * FROM PS_PAY_MESSAGE; SELECT * FROM PS_PI_MESSAGE; -- Payroll Interface SELECT * FROM PS_RETRODED_MSG; SELECT * FROM PS_RETROPAY_MSG;
--Time and Labor tables SELECT * FROM PS_PY_LDTLEMP_RC; SELECT * FROM PS_PY_LDTLEMP_TBL; SELECT * FROM PS_PY_LDTLEMP_WRK1; SELECT * FROM PS_PY_LDTLEMP_WRK2; SELECT * FROM PS_PY_LDTLPMSG_TBL; SELECT * FROM PS_PY_LDTL_RC; SELECT * FROM PS_PY_LDTL_TBL; SELECT * FROM PS_PY_LDTL_WRK; SELECT * FROM PS_PY_PYBL_TM_WRK; SELECT * FROM PS_PY_XREF_WRK --Work Record for T&L Update
Requirement:
Enroll employees into Savings plans where they want to contribute upto the maximum limit set by IRS, but at the same time, distribute the deduction amount over the remaining pay periods of the calendar year.
Here are some of the actual SQLs which I wrote for my requirement, but can easily be tweaked for any specific case.
/*Get IRS defined limit for 402g = A */
SQLExec("SELECT DED_YTD_MAX FROM PS_LIMIT_TBL A WHERE A.LIMIT_TYPE='402' AND A.EFFDT=(SELECT MAX(B.EFFDT) FROM PS_LIMIT_TBL B WHERE A.LIMIT_TYPE=B.LIMIT_TYPE)", &l_MaxIRSLimit);
/*Get Prev Employer contribution to 401k if any = B */
SQLExec("SELECT DED_ADJ FROM PS_SAVINGS_MGT_EE WHERE EMPLID=:1 AND COMPANY=:2 AND CALENDAR_YEAR=:3 AND LIMIT_TYPE='402' AND LIMIT_EXT_TYPE='A'", xxx_AET.EMPLID, xxx_AET.COMPANY, &CurrCalYear, &l_401k_AdjAmtPrevEmployer);
/*Get current year YTD balance = C */
SQLExec("SELECT DED_YTD FROM PS_DEDUCTION_BAL WHERE EMPLID=:1 AND PLAN_TYPE IN (40,46) AND DED_CLASS='B' AND COMPANY=:2 AND BALANCE_ID='CY' AND BALANCE_YEAR=:3 AND BENEFIT_RCD_NBR=:4 ", xxx_AET.EMPLID, xxx_AET.COMPANY, &CurrCalYear, xxx_AET.BENEFIT_RCD_NBR, &l_401K_CurrYrYTDBal);
/*Calculate remaining pay periods for this year = D */
&l_RemainingPayPeriodsThisYr = 8;
/*Perform (A - B - C)/D */
&l_401kDedAmount = (&l_MaxIRSLimit + &l_401k_AdjAmtPrevEmployer + &l_401K_CurrYrYTDBal) / &l_RemainingPayPeriodsThisYr;
/*Call the Savings Plan Component Interface to insert a new row Name of the component - SAVINGS_PLANS*/
Some useful navigations related to this requirement:
Main > Benefits > Enroll in Benefits > Savings Plans (Employee deductions for enrolled plans)
Main > Benefits > Enroll in Benefits >
(Employee deductions that have already happened e.g. 401k contribution at previous employer)
Main > Set Up HRMS > Product Related > Base Benefits > Rates and Rules > Limit Table
(define IRS limit for 402g deductions)
pay "final calc" is run - on PAY_LINE table, LOCKED_FOR_CONF flag is set to 'Y'
any subsequent "initial calc" runs would reset the LOCKED_FOR_CONF to 'N' and if the pay group 'Automatic Paysheet Update' flag is 'Y', it would pick up
the job data changes
SCENARIO 2
paysheet process is run + pay group 'Automatic Paysheet Update' flag is 'Y' + only "initial calc" process is run
when employee job data changes, PAY_LINE table field 'JOB_CHANGE' would be updated to 'R'
payroll would pick up the changes in next run of pay "initial calc" until or "final calc"
PAY_LINE table field 'JOB_CHANGE' would be updated to 'Y'
SCENARIO 3
paysheet process is run + pay group 'Automatic Paysheet Update' flag is 'Y' + final calc process is run
when employee job data changes, PAY_LINE table field 'JOB_CHANGE' would not be updated to 'R'
payroll would not pick up the changes in next run of pay "initial calc" or "final calc"