Invoice & payment import script

Derek Atkins warlord at MIT.EDU
Fri Feb 17 09:01:36 EST 2012


Hi,

Reuben Cummings <reubano at gmail.com> writes:

> On Feb 17, 2012, at 1:32 PM, Geert Janssens wrote:
>
>> Op vrijdag 17 februari 2012 12:52:15 schreef Reuben Cummings:
>> 
>> It is for example not clear to me what you are trying to achieve exactly. I 
>> read that you want to import invoices and payments. But are you only 
>> interested in creating transactions for it, or do you also want these imported 
>> invoices to be fully integrated in the business functions of GnuCash ? The 
>> latter certainly requires more than only adding transactions.
>
> I'm looking for full integration

Then you should definitely use the GnuCash APIs and not manipulate the
data in the database by hand!

>> How does your script work ? Do you use the gnucash (scheme or python) api to 
>> enter invoices and payments into your gnucash database or are you adding those 
>> directly ?
>
> Direct database editing. I studied the existing database to see which
> tables were involved with invoices and payments and then tried to
> duplicate what I saw. So far, I enter rows into the following tables:
> entries, invoices, lots, splits, and transactions. I create my own
> guids using an md5 hash. I have so far successfully imported posted
> invoices but they display '?' instead of 'I' in the register.

You're missing all the ancillary metadata in the KVPs.  This means your
invoices are malformed.

> I wasn't aware of an api. Where would I find out how to convert my
> scripts to use the api? I found
> http://svn.gnucash.org/docs/HEAD/python_bindings_page.html is that the
> best source?

Right now the best source is probably the source code.  The URL you
quote might be a starting point, but none of the bindings docs are
"complete", because the bindings are automated.  There are no
e.g. Scheme or Python binding API docs.

>> The latter is not a good idea, since you will be bypassing all the 
>> business logic and sanity checks that are run when using the gnucash api.
>> 
>> And apart from that, to me the bi-importer plugin seems to do a similar thing. 
>> It's not built by default though, so you will have to build gnucash yourself. 
>> Have you considered using this plugin or is it doing something totally 
>> different ?
>
> I've tried with little success. Using the example from
> http://svn.gnucash.org/docs/guide/python-import-invoices.html I was
> only able to import about half of the entries. Also, the resulting
> invoice is un-posted and you still have to manually enter the
> payments. I want to import posted invoices as well as the associated
> payments.

Well, I still recommend you start from here and work with that base
rather than writing into the DB.  Fix the code to import the rest of
your data.  As for posting; there is a lot more to posting than just
creating the transaction.

Why are you trying to import a posted invoice, anyways?  At best you
would do it once.  But you could still automated the process by calling
the Post API directly.

>> I hope I'm not discouraging you with all these questions and warnings... I 
>> would just like you to end up with a script that is safe and future proof to 
>> use.
>
> I understand. I am happy to use the official channels of writing data
> since I don't want to mess up my .gnucash file.

And the official channel is the GnuCash API.

>> Geert

-derek

-- 
       Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
       Member, MIT Student Information Processing Board  (SIPB)
       URL: http://web.mit.edu/warlord/    PP-ASEL-IA     N1NWH
       warlord at MIT.EDU                        PGP key available


More information about the gnucash-devel mailing list