Payroll: Form Versions
Syntax Versions
In Keystone Payroll, there are two syntax versions for forms (paychecks, direct deposit stubs, W-2 and W-3 forms.) The differences occur in how fields are referenced on the form.
To indicate which syntax version to use, put the following line anywhere in the FORM section:
- VERSION 1
- VERSION 2
(Note that version 1 is implied if not specified.)
Version 2
Syntax: [Group] . [Def Type Suffix] . [Period Type Suffix] . [Group Seq]
Examples:
- PAY.HRS.YTD.01
- PAY.LBL.01
- PAY.RATE.01
- DED.DED.CUR.01
- DED.FACT.AMOUNT.01
- PAY.HRS.CUR.* The total of all hours not printed (as a .01, .02 etc)
- PAY.PAY.CUR.*SUM The total of all PAY (as a .01, .02 etc)
Group
The Group represents the Check Group defined in Company Setup (PRTLINKS). Most commonly these groups will be "PAY" for pay and "DED" for deductions etc. Taxes may all be setup as Group "TAX" or may be separated by tax types such as "FIT" for Federal Income tax and "SIT" for state income tax.
Def Type Suffixes
There are three suffixes with special meanings:
- FACT - the value of the category company/employee factor specified in Period Type Suffix
- LBL - the category label
- RATE - calculates the hourly rate for the pay category
Description | Def Type | Suffix |
---|---|---|
Hours | H | HRS |
Pay | P | PAY |
Tax Gross | G | GRS |
Tax | T | TAX |
Check | C | CHK |
Direct Deposit | A | DD |
Deduction | D | DED |
Pre-tax Deduction | X | CALC |
Working | W | WRK |
Net Pay | N | NET |
Gross Pay | Z | GPY |
Reimbursement | R | REM |
Period Type Suffixes
Period | Suffix |
---|---|
Current | CUR |
Month | MTD |
Quarter | QTD |
Year | YTD |
Forever | ATD |
Balance | BAL |
Group Sequence
- 00-99 represent the first though 99th matching items. Applies to values, labels, rates, factor amounts etc.
- * represents the total of all remaining items. Applies to values only.
- *SUM represents the total for all items. (New for 3.1.99.19) Applies to values only.
Version 1 (Deprecated - DO NOT USE)
Syntax: [Group] [Def Type Suffix] _ [Period Type Suffix] _ [Group Seq]
Examples: REGHRS_YTD_01, REGLBL_01, REGRATE_01, DED_01, DEDFACT_AMOUNT_01
Def Type Suffixes
There are three suffixes with special meanings:
- FACT - the value of the category company/employee factor specified in Period Type Suffix
- LBL - the category label
- RATE - calculates the hourly rate for the pay category
Description | Def Type | Suffix |
---|---|---|
Hours | H | HRS |
Pay | P | PAY |
Tax Gross | G | GRS |
Tax | T | TAX |
Check | C | CHK |
Direct Deposit | A | DD |
Deduction* | D | |
Pre-tax Deduction* | X | |
Working* | W | |
Net Pay* | N | |
Gross Pay* | Z | |
Reimbursement* | R |
(*These definitions are lumped together when no suffix is specified.)
Period Type Suffixes
Period | Suffix |
---|---|
Current* | |
Month | MTD |
Quarter | QTD |
Year | YTD |
Forever | ATD |
Balance | BAL |
(*Current is implied when no period suffix is specified.)
Conversion
The first thing to know about paycheck form version 2 is … You do not need to convert existing systems unless there is a problem! It is here to solve problems. But in making this format we didn’t want to either mess with the original format (too easy to make a devastating mistake) or force our support team to change existing systems. Having said that you don’t need to convert an existing form, once a customer has any strange problem such as 2 defs adding together unexpectedly it’s time to convert.
The second thing to know is … Make sure all new systems and newly created forms are version 2. Yes this is a bit of a hassle, but it will result in higher quality installations with fewer surprises down the road.
Attached is a sample of an old form converted to version 2.
A sample section like this:
LINE +1 COLUMN 2 BOLD ON COLUMN 3 Left 10 FIELD PAYLBL_01 BOLD OFF COLUMN 14 FORMAT ###.00 FIELD PAYHRS_01 COLUMN 23 FORMAT ###.00 FIELD PAYRATE_01 COLUMN 30 FORMAT ######.00 FIELD PAYPAY_01 COLUMN 38 FORMAT #######.00 FIELD PAYPAY_YTD_01 BOLD ON COLUMN 51 LEFT 10 FIELD DEDLBL_01 BOLD OFF column 58 FORMAT ######.00;;# FIELD DED_01 column 67 FORMAT #######.00;;# FIELD DED_YTD_01
Becomes:
LINE +1 COLUMN 2 BOLD ON COLUMN 3 Left 10 FIELD PAY.LBL.01 BOLD OFF COLUMN 14 FORMAT ###.00 FIELD PAY.HRS.CUR.01 COLUMN 23 FORMAT ###.00 FIELD PAY.RATE.01 COLUMN 30 FORMAT ######.00 FIELD PAY.PAY.CUR.01 COLUMN 38 FORMAT #######.00 FIELD PAY.PAY.YTD.01 BOLD ON COLUMN 51 LEFT 10 FIELD DED.LBL.01 BOLD OFF column 58 FORMAT ######.00;;# FIELD DED.DED.CUR.01 column 67 FORMAT #######.00;;# FIELD DED.DED.YTD.01
When converting a form, a good place to start is looking at the existing check setup in the links and company defs table. This query shows all of the check groups the form def type, and how the items within the check group are sequenced:
select l.check_group,l.check_group_seq,cd.link_sequence,cd.def_type, case def_type WHEN 'H' THEN CHECK_GROUP||'.'||'HRS'||'.' WHEN 'P' THEN CHECK_GROUP||'.'||'PAY'||'.' WHEN 'G' THEN CHECK_GROUP||'.'||'GRS'||'.' WHEN 'T' THEN CHECK_GROUP||'.'||'TAX'||'.' WHEN 'C' THEN CHECK_GROUP||'.'||'CHK'||'.' WHEN 'A' THEN CHECK_GROUP||'.'||'DD'||'.' WHEN 'D' THEN CHECK_GROUP||'.'||'DED'||'.' WHEN 'X' THEN CHECK_GROUP||'.'||'CALC'||'.' WHEN 'W' THEN CHECK_GROUP||'.'||'WRK'||'.' WHEN 'N' THEN CHECK_GROUP||'.'||'NET'||'.' WHEN 'Z' THEN CHECK_GROUP||'.'||'GPY'||'.' WHEN 'R' THEN CHECK_GROUP||'.'||'REM'||'.' END FORM_REF ,l.link_type,l.link_id,cd.def_id,cd.description,l.CHECK_LABEL from prtcompdef cd inner join prtlinks l on l.link_id=cd.link_id order by check_group,check_group_seq,cd.link_sequence,cd.def_type
Which results in something like this:
I’ve started a search and replace list to help speed up this conversion. This of course would need to be adjusted for specifics of a form. This list covers the case where all Pay types are in the check group “PAY” and deductions are in the check group “DED”. You still need to apply common sense and take care of other check groups like REG and SAL.
Search Replace DEDS_ DEDS.WRK.CUR. TAXES_ TAXES.WRK.CUR. PAY_YTD_ .PAY.YTD. HRS_YTD_ .HRS.YTD. GRS_YTD_ .GRS.YTD. TAX_YTD_ .TAX.YTD. PAY_ .PAY.CUR. HRS_ .HRS.CUR. TAX_ .TAX.CUR. GRS_ .GRS.CUR. LBL_ .LBL. BAL_ .BAL. RATE_ .RATE. GROSS_ GROSS.GPY.CUR. DD_YTD_ .DD.YTD. DD_ .DD.CUR. NETPAY_ NETPAY.NET.CUR. DED_YTD_ DED.DED.YTD. DED_ DED.DED.YTD. REIMBURSE_YTD_ REIMBURSE.REM.YTD. REIMBURSE_ REIMBURSE.REM.CUR. MATCH_YTD_ MATCH.DED.YTD. MATCH_ MATCH.DED.CUR.