Showing posts with label SUTA. Show all posts
Showing posts with label SUTA. Show all posts

Monday, March 21, 2011

More Payroll Troubleshooting Scripts, Enjoy!

More FUTA and SUTA fun to share.  The following scripts can help you track down inconsistencies in your set up to identify potential causes of incorrect FUTA and SUTA wages. Each can be run against your company database to identify records with possible issues.

--identifies employees without a default SUTA state (Cards>>Payroll>>Employee)


select EMPLOYID as EmployeeID from UPR00100 where SUTASTAT=''

--identifies employee pay code records (Cards>>Payroll>>Pay Code) that are not marked for FUTA, SUTA, or do not have a SUTA state although the pay code set up (Setup>>Payroll>>Pay Code) does.

select UPR00400.EMPLOYID as EmployeeID, UPR00400.PAYRCORD as PayCode, UPR00400.SBJTFUTA as SubjectToFUTA, UPR00400.SBJTSUTA as SubjectToSUTA, UPR00400.SUTASTAT as SUTAState from UPR00400 inner join UPR40600 on UPR00400.PAYRCORD=UPR40600.PAYRCORD WHERE (UPR00400.SBJTFUTA=0 AND UPR40600.SBJTFUTA=1) OR (UPR00400.SBJTSUTA=0 AND UPR40600.SBJTSUTA=1) OR (UPR00400.SUTASTAT='' AND UPR40600.SBJTSUTA=1)


Christina Phillips is a Microsoft Certified Trainer and Dynamics GP Certified Professional. She is a supervising consultant with BKD Technologies, providing training, support, and project management services to new and existing Microsoft Dynamics customers.

Tuesday, March 15, 2011

Forgot the FUTA? Slacking on SUTA? Fix it now!

I know, I know, I know...I am on a payroll bender lately.  I promise more diverse topics soon :)  But here is one last payroll fixin' blog post.

Despite our best efforts, pay codes are sometimes set up incorrectly.  Pay codes that should have been marked as FUTA and/or SUTA taxable are not.  Or, even worse, the Pay Code Setup (Tools>>Setup>>Payroll>>Pay Code) is correct but the employee record has been changed (Cards>>Payroll>>Pay Code).  Unlike other taxes, FUTA and SUTA are not calculated and posted on a per payroll basis.  These entries are generated from the Period End Payroll Reports window (Reports>>Payroll>>Period End).  For this reason, discrepancies in FUTA and SUTA wages are often not uncovered until after payroll(s) has been completed.  

So what do you do if you process a payroll (or multiple payrolls) for an employee (or multiple employees) with a pay code that has incorrectly NOT been marked as FUTA and SUTA taxable?  Correcting manually can be a chore, especially if mulitple records are involved.  You would have to back out the wages using a Manual Check/Beginning Balance (Transactions>>Payroll>>Manual Checks), while the pay code FUTA and SUTA boxes are NOT marked.  Post.  And then re-enter the wages in the same manner while the pay code FUTA and SUTA boxes ARE marked.  Ugh.  Time consuming and with a high potential for error.

Thinking that there has to be a better way, I went hunting in the payroll tables and found that the FUTA and SUTA summary reports (Reports>>Payroll>>Period End) rely on the Payroll Transaction History (UPR30300) table for two specific fields:
  • SBJTFUTA - Subject to FUTA: set to 1 if subject to FUTA, 0 if not
  • SUTASTAT- SUTA State: populated with the approprate state if subject to SUTA, blank if not
So, I created two scripts to identify records where the Pay Code Setup (Setup>>Payroll>>Pay Code) is marked as subject to FUTA and/or SUTA but the payroll transaction is not.  These records can then be updated with a script to update the appropriate records with a SUTA state (SUTASTAT) or by setting the Subject to FUTA (SBJTFUTA) field to 1.  As with all database level updates, always always always make a backup before running any update statement and always always always always run against a test company and validate the results (by printing the FUTA and SUTA Summary reports, Reports>>Payroll>>Period End) before completing on your live company.

--Shows employee historical transactions that do not have a SUTA state, but the pay code setup record does have the SUTA tax flag marked
select UPR30300.EMPLOYID as EmployeeID, UPR30300.CHEKNMBR as CheckNumber, UPR30300.YEAR1 as TrxYear, UPR30300.CHEKDATE as CheckDate, UPR30300.PAYROLCD as PayCode, UPR30300.UPRTRXAM as TrxAmount, UPR30300.SUTASTAT as SUTAState, UPR30300.SBJTFUTA as SubjectToFUTA, UPR40600.PAYRCORD AS PayCodeSetup, UPR40600.SBJTFUTA AS SubjectToFUTASetup, UPR40600.SBJTSUTA AS SubjectToSUTASetup FROM UPR30300 INNER JOIN UPR40600 ON UPR30300.PAYROLCD=UPR40600.PAYRCORD WHERE UPR30300.SUTASTAT='' AND UPR40600.SBJTSUTA=1 AND UPRTRXAM>0.00

--Shows employee historical transactions that are not marked as subject to FUTA, but the pay code setup record does have the FUTA tax flag marked
select UPR30300.EMPLOYID as EmployeeID, UPR30300.CHEKNMBR as CheckNumber, UPR30300.YEAR1 as TrxYear, UPR30300.CHEKDATE as CheckDate, UPR30300.PAYROLCD as PayCode, UPR30300.UPRTRXAM as TrxAmount, UPR30300.SUTASTAT as SUTAState, UPR30300.SBJTFUTA as SubjectToFUTA, UPR40600.PAYRCORD AS PayCodeSetup, UPR40600.SBJTFUTA AS SubjectToFUTASetup, UPR40600.SBJTSUTA AS SubjectToSUTASetup FROM UPR30300 INNER JOIN UPR40600 ON UPR30300.PAYROLCD=UPR40600.PAYRCORD WHERE UPR30300.SBJTFUTA=0 AND UPR40600.SBJTFUTA=1 AND UPRTRXAM>0.00