I'm thinking something where I enter a transaction with the employee's
gross pay and that gets converted into net pay due accounts and taxes-
not-yet-due accounts. As monthly and quarterly deadlines come up an
automated transaction would move the taxes-not-yet-due amounts to a
taxes-due account.
I got this going, and I'm entering payroll hours as commodities - example:
---
; Process with: ledger3 -f payroll.ledger -V bal
; display money in this format
D $1,000.00
; payroll taxes as given by http://www.ssa.gov/pubs/10003.html
; codes from: http://en.wikipedia.org/wiki/Payroll_tax#United_States
= /Employees:.*:Payroll$/
EFTPS:FICA:$account:Employee 0.042
EFTPS:FICA:$account:Company 0.062
EFTPS:MED:$account:Employee 0.0145
EFTPS:MED:$account:Company 0.0145
$account:Taxes:FICA -0.042
$account:Taxes:MED -0.0145
Company:Taxes:EFTPS -0.0765
AZDOR:Withholding:$account 0.051 ; Withholding of 5.1%, per AZ Form A-4
$account:Taxes:AZDOR -0.051
; Hourly rates
P 2010/01/01 ZL $50
; Payroll for 2011-12-10
2011-12-10 Zack Payroll ending 12/10
Company:Labor:Zack 80 ZL
Employees:Zack:Payroll
---
You'll have to figure out your own tax code - the above is in my state
(Arizona) and circumstances.
I haven't done any of the graduated payroll withholdings yet, as there
was a bug (which John fixed - Thanks John!) where certain value
expressions wouldn't apply. I manually calculated these from IRS
notice 1036. You'd want something like:
= /Company:Labor/ and (expr amount > $10)
Employee:Witholding -0.1
EFTPS:Withholding 0.1
(obviously that would need to be more complex)
- Zack