Adding Payroll
Neil Williams
linux at codehelp.co.uk
Wed Nov 9 15:37:31 EST 2005
On Tuesday 08 November 2005 9:38 pm, Derek Atkins wrote:
> We already depend on libxml2, so it wouldn't add a new dependency
> to use it yourself. OTOH I do like Neil's approach of creating a
> generalized XML output and then an XSL translator from the general
> output to the specific IRS XML schema. This way it doesn't require
> C coding to add new output formats; it just requires a new XSL template.
There's no inherent reason why gnucash has to do this XSL work directly - it
could be handed over to a perl or bash script. OK it might be nice to do it
ourselves but that just means gnucash has to have some way of controlling or
predicting / finding the stylesheets to use and further encourages the user
to believe that it is *our* collective role as gnucash developers to keep
those stylesheets updated with each budget cycle - across all financial and
geographic boundaries. IMHO, that is a task to which we are currently not
well suited.
Unlike translations, these stylesheets (and associated schema) will have to
change at unpredictable and often inconvenient times quite separate from any
gnucash development timeline. We may be better to make a clear dividing line
that gnucash supports the method but not the individual stylesheets. Each
would then be submitted to the relevant authority by a citizen under the
remit of that authority for independent assessment. (Authorities might not
accept a submission from a non-citizen.)
Tax and government policy cannot be relied upon to change within the design
parameters of any format, no matter how generic. There will be times when the
stylesheets will need radical overhauls at little or no notice. After all, we
would be trying to keep up with forces over which we have no direct control.
It could make organising the work of a team like Samba look trivial!
It takes time for a citizen to understand how government budget changes affect
payroll and personal/business taxation - it is much more difficult for a
developer living in a different system to change an internal structure to
conform to such arbitrary changes. To expect to retain any compatibility with
other systems that are absolutely unrelated is more than ambitious. All we
can hope to do is provide a core format and let others do the specifics.
It is a *very* similar issue to the current US-centric tax code support - the
dream of supporting the tax codes for each population for whom we currently
have translations is just that - a dream.
Not to put too fine a point on it, we could end up needing official advice
from an accountant in each region! (Which is one reason why Intuit QuickTax
costs money every single year.)
e.g. in the UK recently, the government added a tax credit system for working
families and the disabled. In each of the subsequent budgets, it was
reviewed, changed, transformed or just tweaked. Highly paid accountants spent
months deciphering the law for their corporate HR departments and *still* got
it wrong. The Inland Revenue designed the system and THEY got it wrong -
overpaying some individuals by thousands of pounds. The entire tax credit
system is administered via payroll deductions done by the employer upon
notification by the Inland Revenue of the results of means tests. The entire
system was reworked again this financial year and is now a single tax credit
but it's still not clear, unambiguous or easy to implement. Then there are
student loan deductions, child support agency deductions, the list goes on.
> The downside of this approach is that it DOES add a new dependency
> on libxstl, which we currently do not depend on.
Not necessarily. Much like OFX and cashutil, payroll will not be needed by
every single gnucash user so it's an optional add-on. Any dependencies are
therefore optional too.
FYI, cashutil has a build-time dependency on xsltproc (which then depends on
libxslt).
What gnucash has done so far is largely region-neutral at it's core with
optional modules (like OFX) that are region-specific. It is a model that has
served us well.
If we stick with the core functionality, we may not need an xsltproc
dependency at all.
--
Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20051109/2fe47b31/attachment.bin
More information about the gnucash-devel
mailing list