QSF Import of gncCustomer and gncInvoice

Georgi Mirchev manager at mirchevideas.com
Wed May 31 22:04:21 EDT 2006


Derek Atkins wrote:

>Georgi Mirchev <manager at mirchevideas.com> 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
>  
>


-------------- next part --------------
A non-text attachment was scrubbed...
Name: manager.vcf
Type: text/x-vcard
Size: 527 bytes
Desc: not available
Url : http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20060531/0e3e0dc5/manager.vcf


More information about the gnucash-devel mailing list