This is the SQL script that AdamH shared with me. I haven't tried it so I can't verify its accuracy. I had no experience with SQL at that time so I turned to our partner for assistance.
/*
Disclaimer: This script is for comparing payroll details to the year end wage summary tables. Use at your own risk.
This query will pull together the details from the payroll history for a given year and compare with
the summary tables from the payroll year end wage file.
There are a couple items that need to be manipulated:
1) Verify that the @MedicareTaxRate and @SSTaxRate values are correct
2) Verify that the @PayrollYear variable is being assinged the correct value.
3) Find and change the list of any 401K deduction codes that are specific to your company
You will need to add a UNION for
4) The @ReturnDetailOnly option defaults to 0 (No) which will return the summary table.
If you want to return all the details at the check date level set this option to 1.
Assumptions/Notes:
1) Each employee only has one state payroll tax state.
2) Employees that dod not have any wages/tips/compensation will be excluded
3) Voids are excluded
*/
--Declare and populate local variables
DECLARE
@MedicareTaxRate NUMERIC(18,5),
@SSTaxRate NUMERIC(18,5),
@PayrollYear INT,
@ReturnDetailOnly BIT
SELECT
@MedicareTaxRate = '1.45',
@SSTaxRate = '4.2',
@PayrollYear = '2012',
@ReturnDetailOnly = '0'
--Declare and populate table for 401K deduction codes
DECLARE @401K TABLE (Code VARCHAR(7))
INSERT @401K (Code)
SELECT DEDUCTON FROM UPR40900 WHERE DEDUCTON IN('My','401K','List','Here')
IF @ReturnDetailOnly = 0
BEGIN
SELECT
x.EMPLCLAS AS EmployeeClass,
z.EmployID,
RTRIM(x.LASTNAME) + ', ' + RTRIM(x.FRSTNAME) + ' ' + RTRIM(x.MIDLNAME) AS EmployName,
x.BRTHDATE AS BirthDate,
x.STRTDATE AS OriginalHireDate,
x.BENADJDATE AS AdjustedHireDate,
x.DEMPINAC AS DateInactivated,
y.CITY,
y.STATE,
SUM(z.GrossWages) AS GrossWages,
z.W2WagTipComp,
SUM(z.FedGrossWages) AS FedGrossWages,
SUM(z.FedWH) AS FedWH,
z.W2FedWH,
ISNULL(SUM(z.[401KDed]),0) AS [401KDed],
SUM(z.FICAMedGrossWages) AS FicaMedGrossWages,
z.W2FICAMedGrossWages,
SUM(z.FICAMedWH) AS FicaMedWH,
z.W2FICAMedWH,
SUM(z.FICASSGrossWages) AS FicaSSGrossWages,
z.W2FICASSGrossWages,
SUM(z.FICASSWH) as FicaSSWH,
z.W2FICASSWH,
z.W2StateWages,
z.W2StateWH,
CASE WHEN CONVERT(NUMERIC(18,2),(SUM(z.FICAMedWH) / CASE WHEN SUM(z.FICAMedGrossWages) = 0 THEN NULL ELSE SUM(z.FICAMedGrossWages) END) * 100) = @MedicareTaxRate THEN 'Yes' ELSE 'No' END AS DoesFicaWHBalance,
CASE WHEN CONVERT(NUMERIC(18,2),(SUM(z.FICASSWH) / CASE WHEN SUM(z.FICASSGrossWages) = 0 THEN NULL ELSE SUM(z.FICASSGrossWages) END) * 100) = @SSTaxRate THEN 'Yes' ELSE 'No' END AS DoesFicaSSBalance,
CASE WHEN SUM(z.FICAMedGrossWages) = z.W2FICAMedGrossWages THEN 'Yes' ELSE 'No' END AS DoMedWagesEqual,
CASE WHEN SUM(z.FICASSGrossWages) = z.W2FICASSGrossWages THEN 'Yes' ELSE 'No' END AS DoSSWagesEqual,
CASE WHEN SUM(z.FICAMedWH) = z.W2FICAMedWH THEN 'Yes' ELSE 'No' END AS DoMedWHWagesEqual,
CASE WHEN SUM(z.FICASSWH) = z.W2FICASSWH THEN 'Yes' ELSE 'No' END AS DoSSWHWagesEqual
FROM (
SELECT
a.AUCTRLCD AS AuditTrail,
a.CHEKDATE AS CheckDate,
a.employid AS EmployID,
a.GRWGPRN AS GrossWages,
a.FDWDGPRN AS FedWH,
a.FICAMWPR AS FICAMedWH,
a.FCASWPR as FICASSWH,
a.FDWGPYRN AS FedGrossWages,
a.FICASSWP AS FICASSGrossWages,
a.FICAMWGP AS FICAMedGrossWages,
(SELECT SUM(UPRTRXAM) FROM UPR30300 z WHERE z.PYRLRTYP = '2' AND z.PAYROLCD IN(SELECT Code FROM @401K) AND z.EMPLOYID = a.EMPLOYID and z.AUCTRLCD = a.AUCTRLCD) AS [401KDed],
bb.WGTPCOMP AS W2WagTipComp,
bb.FEDITXWH AS W2FedWH,
bb.SSECWAGS AS W2FICASSGrossWages,
bb.SSTXWHLD AS W2FICASSWH,
bb.MCRWGTPS AS W2FICAMedGrossWages,
bb.MDCRTXWH AS W2FICAMedWH,
cc.STATEWGS AS W2StateWages,
cc.STATINTX AS W2StateWH
FROM
UPR30100 a
LEFT OUTER JOIN UPR10101 bb on bb.EMPLOYID = a.EMPLOYID AND bb.RPTNGYR = a.Year1
LEFT OUTER JOIN (SELECT EMPLOYID, SUM(STATEWGS) AS STATEWGS, SUM(STATINTX) AS STATINTX FROM UPR10105 WHERE RPTNGYR = @PayrollYear GROUP BY EMPLOYID) cc on cc.EMPLOYID = a.EMPLOYID
WHERE
a.VOIDED = '0'
AND bb.rptngyr = @PayrollYear
AND bb.wgtpcomp <> 0
) z
INNER JOIN UPR00100 x on x.EMPLOYID = z.EmployID
LEFT OUTER JOIN UPR00102 y on y.ADRSCODE = x.ADRSCODE and y.EMPLOYID = x.EMPLOYID
GROUP BY
z.W2WagTipComp,
z.W2FedWH,
z.W2FICASSGrossWages,
z.W2FICASSWH,
z.W2FICAMedGrossWages,
z.W2FICAMedWH,
z.W2StateWages,
z.W2StateWH,
z.EmployID,
x.LASTNAME,
x.FRSTNAME,
x.MIDLNAME,
x.EMPLCLAS,
y.CITY,
y.STATE,
x.BRTHDATE,
x.STRTDATE,
x.BENADJDATE,
x.DEMPINAC
END
IF @ReturnDetailOnly = 1
BEGIN
SELECT
a.AUCTRLCD AS AuditTrail,
a.CHEKDATE AS CheckDate,
a.employid AS EmployID,
RTRIM(x.LASTNAME) + ', ' + RTRIM(x.FRSTNAME) + ' ' + RTRIM(x.MIDLNAME) AS EmployName,
a.GRWGPRN AS GrossWages,
a.FDWDGPRN AS FedWH,
a.FICAMWPR AS FICAMedWH,
a.FCASWPR as FICASSWH,
a.FDWGPYRN AS FedGrossWages,
a.FICASSWP AS FICASSGrossWages,
a.FICAMWGP AS FICAMedGrossWages,
(SELECT SUM(UPRTRXAM) FROM UPR30300 z WHERE z.PYRLRTYP = '2' AND z.PAYROLCD IN(SELECT Code FROM @401K) AND z.EMPLOYID = a.EMPLOYID and z.AUCTRLCD = a.AUCTRLCD) AS [401KDed],
bb.WGTPCOMP AS W2WagTipComp,
bb.FEDITXWH AS W2FedWH,
bb.SSECWAGS AS W2FICASSGrossWages,
bb.SSTXWHLD AS W2FICASSWH,
bb.MCRWGTPS AS W2FICAMedGrossWages,
bb.MDCRTXWH AS W2FICAMedWH,
cc.STATEWGS AS W2StateWages,
cc.STATINTX AS W2StateWH
FROM
UPR30100 a
LEFT OUTER JOIN UPR10101 bb on bb.EMPLOYID = a.EMPLOYID AND bb.RPTNGYR = a.Year1
LEFT OUTER JOIN (SELECT EMPLOYID, SUM(STATEWGS) AS STATEWGS, SUM(STATINTX) AS STATINTX FROM UPR10105 WHERE RPTNGYR = @PayrollYear GROUP BY EMPLOYID) cc on cc.EMPLOYID = a.EMPLOYID
INNER JOIN UPR00100 x on x.EMPLOYID = a.EmployID
WHERE
a.VOIDED = '0'
AND bb.rptngyr = @PayrollYear
AND bb.wgtpcomp <> 0
END