Derek Atkins wrote:
Georgi Mirchev <[EMAIL PROTECTED]> writes:
Yes and no.. The idea is that QofChoice is a template type.. So
a GNC_ID_OWNER would be QofChoice<Customer,Vendor,Employee,Job>. You
really can't say that it returns a QOF_TYPE_CHOICE because you need to
know what QofChoice template instance is returned.
Actually it is just a declaration of the param type. I do understand
that the getter doesn't return a QOF_TYPE_CHOICE, nor the setter get a
QOF_TYPE_CHOICE object. They get/set the real entities from the "allowed
choice" types.
Yes, I realize that, but QofChoice<type1, type2, type3> is effectively
a different parameter type than QofChoice<typeA, typeB, typeC>. So
the parameter type should reflect that difference.
It turned out that I just can't use the same parameter for the invoices.
The "owner" param returns gncOwner object, and is used by the rest of
GnuCash, so nothing can be changed here.
Instead I added "owner-qof" that is of type QOF_TYPE_CHOICE, and works
with entities. It works fine with customers, and will work fine with the
other 3 objects that can be owners of an invoice. The import of
customers/addresses works fine now.
I'm working on the collections now, so that I can import the invoice
entries. In order to get any entries in, I had to add a kludge. The QOF
iterates over all parameters of the imported object, calling their
getters and trying to determine the time. Guess what happens when the
getter doesn't actually return an entity, like in the case of parameter
that is of type gncOwner. So the QOF book merger code now checks
specifically for "gncOwner". Kludge, but works. Unless we add additional
param flag "has QofInstance", so that it is compatible with QOF, or we
add dummy QofInstance to gncOwner, I can't see how to resolve that.
There is an issue that seems to be a little more complex. During the
merge of two books the entries from the first are "copied" into the
second, then the first book and it's entries are destroyed. The problem
is that the "copy" often is just pointer copy. The reason is that
although we have clone functions in the gnc objects, the QofObject
doesn't specify a 'clone' callback, so QOF cannot clone any objects. I
think this needs to be added, so that QOF can safely clone an object
whenever needed.
What do you think?
Hopefully my patches won't crash the heck out of GnuCash :-)
They wont get applied if they do. ;)
-derek
begin:vcard
fn:Georgi Mirchev
n:Mirchev;Georgi
org:Mirchev Ideas Ltd.
adr:;;Golash 18;Sofia;;1111;Bulgaria
email;internet:[EMAIL PROTECTED]
title:Manager
tel;work:+359-2-8705566
tel;cell:+359-888-518932
note;quoted-printable:Services:=0D=0A=
=0D=0A=
Software development=0D=0A=
Web development=0D=0A=
Web design=0D=0A=
Intranet solutions=0D=0A=
Consulting services=0D=0A=
Application security=0D=0A=
Hosting solutions=0D=0A=
Software outsourcing=0D=0A=
url:http://www.mirchevideas.com/
version:2.1
end:vcard
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel