New XML file format for QOF?
Neil Williams
linux at codehelp.co.uk
Sat Oct 30 08:49:39 EDT 2004
On Friday 29 October 2004 6:15 pm, you wrote:
> Neil Williams <linux at codehelp.co.uk> writes:
> > It's more of a format for QOF that any QOF compatible program can use for
> > their own data.
>
> In other words it's a "QOF Object Serialization Format"?
Yes. QOFOSF? Or just QSF?
> No, it's not for parsing reasons, it's for communicating between
> machines that have a difference concept of the epoch. Also, XML
> already has a standard DateTime format (ISO8601); we should continue
> to use it.
OK.
> >> What if the enumeration changes? IMHO it's much
> >> better to say "expense_type PAYMENT" or some other string value that's
> >> more "human readable" and doesn't tie into a specific enumeration
> >> implementation.
> >
> > OK, can do. However, this will be a specific implementation - the
> > pilot-link one. Each implementation would use the same tags with
> > different type attributes and content. Which is where the name collisions
> > come in.
>
> Of course.. But the pilot-link QOF Implementation will define the
> pilot-link QOF objects, the Gnucash implementation will define the
> gnucash QOF objects. Then you can map across them in a way that if
> the enumeration changes in one implementation you don't have to fix
> the map.
OK. Rather than simply writing out the objects and their parameters in a blind
and rigorous way - which might be appealing initially but does have problems
when the objects are modified - I'll do some basic translation of the core
data before writing out readable versions that are less affected by small
changes in the code. I should have thought of that. Thanks.
> > You mean as:
> > <obj:gnc_numeric>XXX/YYY</obj:gnc_numeric>
>
> Yes, that's what I mean.
> > While I'm not against this, I'm concerned that it will add more code
> > to gnucash that may not be used much. Perhaps it will. I don't know.
I'm hoping it will be used for all kinds of imports, especially those like the
ones on the user list at the moment where people have data in unusable
formats and out of sheer frustration have written their own scripts to create
an XML format of their own. If this serialization or QSF format can be
documented clearly, it should divert attention from the more fraught
tampering with the main GnuCash XML data file and the future SQL backend
(which, in a MySQL form, is possibly even more appealing to those who would
fiddle and hack their own import data). By having a format that is easier to
write than the current gnucash XML (and which will take care of the
relationships between objects itself) it should make life easier for
everyone.
I did think of having two forms, one that takes the pilot-link code and uses a
hard-coded map to do the conversion (as the mapping code for a generic map is
nowhere near as accessible as I'd like) and one that is suitable for
hand-editing or basic Perl script formation which uses familiar objects from
GnuCash and which simply needs the book merge code but no particular mapping.
I prefer the idea of keeping just one format, just let people hack their own
files into the QSF format for pilot-link - that could be much easier but
potentially could limit users to business type objects - I'll have to look at
whether the one format could support transactions as well as entries, no
particular reason why not. There are finance applets for the Palm that could
be queried by QOF to provide normal transactions and some users may well want
to import their Expenses as transactions rather than invoice entries. Keeping
one format and one mapping should keep the door open for more generic
mechanisms in the future too.
Whichever way, this whole approach will be limited to data outside the remit
of gncCommodity until that is altered to work with QOF. Stocks, shares and
accounts that use a different currency wouldn't be supported. Even the code
to merge the QofBook from an existing GnuCash XML data file will not be able
to support gncCommodity in that way.
> > But I'd like to make as few changes to the "gnucash xml data file
> > format" as possible.
With the above changes, are you happy for me to use this format for QOF as a
serialization format? I can adapt the existing GnuCash file:// backend to be
part of QOF and QOF will write out the pilot-link objects using
qof_object_foreach rather than by strictly following a hierarchical tree like
the one based on AccountGroup. GnuCash doesn't have to write QSF format but
perhaps it could use it to export just the customer list or a batch of
invoices and as exporting is always easier than importing, there might not be
a reason to avoid it. I really can't see how else I can create an XML data
interchange if we stick to only the current hierarchical structure - this
should be a small amount of new code with large benefits.
--
Neil Williams
=============
http://www.codehelp.co.uk/
http://www.dclug.org.uk/
http://www.isbn.org.uk/
http://sourceforge.net/projects/isbnsearch/
http://www.biglumber.com/x/web?qs=0x8801094A28BCB3E3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20041030/cf09d5e1/attachment.bin
More information about the gnucash-devel
mailing list