python binding: getting invoice entry data
Brian St. Pierre
brian at bstpierre.org
Tue Jan 18 23:16:29 EST 2011
I'm trying to use the python bindings to fetch entry (line-item) data
from an invoice.
See http://pastebin.com/fy06CPup for the test GnuCash XML file I'm using.
I expect the script below to print the three line items from the
invoice in that file, but instead it dies with:
% gnucash-env python invoice_read.py test2.gnucash
* 15:07:39 WARN <gnc.backend.dbi> [gnc_module_init_backend_dbi()] No
DBD drivers found
Traceback (most recent call last):
File "invoice_read.py", line 16, in <module>
print entry.GetDescription()
File "/usr/lib/python2.6/dist-packages/gnucash/function_class.py",
line 92, in method_function
*process_list_convert_to_instance(meth_func_args) )
File "/usr/lib/python2.6/dist-packages/gnucash/gnucash_core_c.py",
line 3825, in gncEntryGetDescription
return _gnucash_core_c.gncEntryGetDescription(*args)
TypeError: in method 'gncEntryGetDescription', argument 1 of type
'GncEntry const *'
Other methods on the Entry objects yield similar results. (A similar
approach to the code below with Invoice and Customer objects works
ok.)
Running on Ubuntu Lucid. Tested with 2.4.0-1~getdeb1~lucid from
getdeb.net and from svn with the same results.
Can someone point out what I'm doing wrong?
Thanks.
--
Brian St. Pierre
#!/usr/bin/env python
import os
import sys
from gnucash import Session
from gnucash.gnucash_business import Entry
uri = "xml://{0}".format(os.path.abspath(sys.argv[1]))
ses = Session(uri, is_new=False)
try:
book = ses.get_book()
invoice = book.InvoiceLookupByID('0001')
assert(len(invoice.GetEntries()) == 3)
for e in invoice.GetEntries():
entry = Entry(instance=e)
print entry.GetDescription()
finally:
ses.end()
More information about the gnucash-devel
mailing list