standing purchase orders (or work orders)

Nik gnucash at babel.homelinux.net
Fri May 6 00:03:20 EDT 2011


Hi All,

I am using GnuCash to help manage my consulting business, and find a 
particular issue is currently quite difficult to manage, but could be 
dramatically simplified if I could automate it using GnuCash.

At least one of my customers gives me a standing PO (purchase order) 
which 'contains' a total amount of available funds which should cover 6 
or 12 months of work.

As I perform work, I invoice against this one standing PO, and the total 
'available' funds in the PO is decremented.
At some point, the PO has so little funds remaining on it that I cannot 
invoice against it.

So I need to be able to track the decreasing funds in the PO;
firstly, so that I never present an invoice against a PO which has 
insufficient funds;
and secondly so that I can see when the available funds are getting low 
and remind my customer that we need to top up the existing PO, or 
generate a new one.

Essentially, I need some entity in GnuCash represents the PO, which I 
can create and where I store the appropriate value for available funds. 
Then, as I /post/ invoices, I need the available funds in the PO to be 
decremented (and incremented again if I unpost).
In addition, I need to be able to view the details of all such POs:
- customer;
- job (optional)
- creation date
- expiry date
- initial funds
- available funds

As an accountant, I am an excellent computer programmer - which is to 
say I am pretty lost when it comes to accounting theory, so I have no 
idea how such a feature should be modelled.

Personally, I would prefer /not/ to represent a standing PO as an 
account, as the POs tend to come and go over time, and I don't really 
want a long list of inactive accounts in my system.
I would prefer them to be either a new entity, or possibly an 
enhancement to the Job entity.

However, I am posting here to get advice on how best this feature should 
be modelled, so feel free to disagree :o)

As far as I can tell, regardless of how a standing PO is represented, 
new code will need to be added to gncInvoicePostToAccount(...) to 
correctly decrement from the standing PO; and to gncInvoiceUnpost(...) 
to increment it on unpost.

There should also be code that would warn me as I enter invoice data 
that the standing PO associated with an invoice has insufficient funds 
to cover the current total of the invoice. This obviously changes as 
each change is made to the invoice.
However, the funds should only actually be decremented from the PO when 
the invoice is posted.

With guidance on how to model the concept, I am happy to write the 
actual code and provide it as a patch.
However, I do need input on the various ways this could and should be 
modelled.

Thanks in advance for all input.

Cheers!
Nik


More information about the gnucash-user mailing list