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

Reply via email to