Tax Table Tracking
Rich Johnson
rjohnson at dogstar-interactive.com
Wed Dec 15 20:37:13 EST 2004
On Wednesday, December 15, 2004, at 06:47 PM, Derek Atkins wrote:
> Hi,
>
> Sounds about right.
>
> The only comment I have is that I wouldn't call them invariants, or,
> at least, not everything you've labeled is an invariant. As you
> noticed, unposting an invoice does not maintain them all. This is not
> a bug. In HEAD the user has a choice to keep the taxtables or revert
> them (this change has not been back-ported to 1.8).
>
> Here's why this is not a bug: Assume you post an invoice on December
> 30th and the tax rate is 5%. Then on January 2nd you realize you've
> made a mistake and need to unpost and repost the invoice. Howver on
> January 1st the taxrate changed to 6%. Your invoice still needs to
> use the 5% rates when you re-post it, so you want to continue using
> the immutable children.
Thanks, I think I'm _finally_ beginning to grok the state machine of
the business objects.
But that bit of unposting/reposting invoices bothers me. I understand
the argument--especially when you unpost an invoice when a tax rate
disappears altogether (e.g. a sales tax on Labor, or retail sales tax
holidays). What bothers me is that for this example the sale is made
and income accrued upon posting (Jan 2nd) but the tax rate is
back-dated to Dec 30th. In effect you're modifying and reposting an
invoice _as of Dec 30th_ and you want to use the tax in effect as of
Dec 30th (although the record keeping is performed on Jan 2nd). IOW
this is tacitly handling tax _periods_.
Clearly explicit handling of tax periods would be an enhancement. Can
we get it put on the list? I envision it being supported with with
optional 'effective/expiration' fields added to the tax table entries.
I would argue that in lieu of explicit support for the tax periods, the
'pedanticly correct' process to change an invoice posted with an error
would be
- back out changes to the parent tax table (if any),
- unpost the invoice, reverting to the parent tax table,
- modify the invoice.
- repost the invoice,
- and finally restore the changes to the tax table (if any).
Admittedly this is awfully fussy.
The question is really one of how to balance this (hopefully rare)
hassle against semantic clarity.
Have you a suggestion for a term of art other than 'invariant' to
describe the usual situation?
--rich
More information about the gnucash-devel
mailing list