OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ubl-dev message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [ubl-dev] UBL for storing accounting data


You are facing a pretty complex challenge, partly because of business
process complexity and partly because of implementation diversity. 

To do what you describe, my view is that your only feasible method is to
move the data transaction by transaction (which if how UBL is normally
used). Your web-based application would send customer orders to the
accounting system one-by-one as UBL orders, with translation so that an
external order can be imported using the accounting application's batch load
processes.

The challenge comes because your use case generates substantial accounting
system complexities. For example, if a customer uses a credit card, the
receivable that is set up in the accounting system is not a receivable from
the customer, but from the credit card company. Indeed, the actual customer
might or might not be set up as an individual "customer" in the customer
master. Information regarding the physical transaction might need to be
reflected in inventory-related aspects of the accounting system, and there
are various tax implications that may be recorded. The accounting system
also may have some managerial accounting features (customer service
performance, sales person, sales channel performance, etc.) that are
supported by special-purpose tables or special-purpose fields in general
accounting tables. If the customer successfully protests a credit card
charge, a lot of the information regarding the transaction needs to be
rolled back or offset by another transaction or set of transactions within
the accounting system.

For the most part, accounting systems try to mask this complexity from the
individual user, with the accounting system relying on various
package-specific rules, user organization configuration choices, master data
management choices, etc. The package also automates a lot of database
housekeeping functionality - assigning package-specific transaction IDs,
building database keys, indexing them, timestamping, recording user IDs,
etc.

If as I described above, if you deliver specific sales transactions to be
imported via the accounting system's batch import process (presuming one
exists), then the imported transaction automatically invokes all of the
built-in functionality of the accounting package. On the other hand, if you
use some form of direct synchronization (e.g., initiate writes directly to
the accounting package's database) you have to do an enormous amount of
rules replication, data editing, and database housekeeping in a way that is
consistent with the overall accounting system operation as defined by a
given user organization. Given the regulatory significance of accounting,
bypassing the system carries substantial risk.

Note that Business Intelligence offers a different, often attractive option,
which is to export accounting system information regarding a transaction and
use ETL to join the external transaction data (e.g., a UBL sales order) with
an internal system version of that same transaction to create an
all-encompassing view of that transaction. BI opens up more opportunities,
because you can also incorporate web-oriented data (e.g., mouse clicks, what
sort of browser, first-time visitor, etc.).


						Fulton Wilcox
						Colts Neck Solutions LLC






-----Original Message-----
From: Martin Kleppmann [mailto:martin@eptcomputing.com] 
Sent: Wednesday, March 04, 2009 5:19 PM
To: ubl-dev@lists.oasis-open.org
Subject: [ubl-dev] UBL for storing accounting data

Hello all,

Just joined the list :-) I am doing some work with UBL at the moment  
and would like to ask for some opinions from the community.

I am developing an open source library in Ruby for dealing with  
invoicing and payments[1], focussing particularly on small, web-based  
businesses. In developing this library, the question arose of how to  
integrate that data with accounting systems (e.g. use cases like: if  
somebody buys the product on my website, and they pay by card and are  
automatically issued with an invoice, how do those invoices and  
payment records get into the software which I use for bookkeeping).

There are many different accounting/bookkeeping packages out there,  
and as far as I could tell, there was no sensible, open format or  
protocol for interchanging accounting data between different  
applications. Many applications have an API (usually based on some  
barely documented ad hoc XML schema) but each API is different,  
creating an integration nightmare.

Therefore I think that the world needs an open standard for  
representing and interchanging accounting data. I would like to call  
it OAccounts (O for open) and I have written up a vague  
introduction[2]. And I have no interest in re-inventing the wheel,  
which brings me to UBL.

The data stored in an accounting system (for small/medium businesses  
at least, which is all I know) is basically: a list of suppliers, and  
a list of invoices/payments for each supplier; a list of customers,  
and a list of invoices/payments for each customer; a few special-case  
accounts for dealing with tax, payroll etc.; and a balance sheet.

I think it would be possible to store most of the information which an  
accounting system requires in UBL documents of five types: Statement,  
Invoice, CreditNote, SelfBilledInvoice and SelfBilledCreditNote. (If  
you wanted to include stockkeeping, you could probably use the  
Catalogue stuff too, but I'm not using that at the moment.) They may  
need a few minor extension, but I think that a lot of it could be  
vanilla UBL documents. The XML files could then be arranged in a  
fairly straightforward directory structure. As a transfer protocol, I  
envisage a simple, RESTful[4] approach over HTTP, and you could even  
get an audit trail by tracking changes to the XML files with a  
standard version control system such as git[5].

I am planning to sketch out my ideas for a specification, and start  
work on a simple reference implementation, over the next few weeks. Of  
course the whole process and the results will be free and open, and I  
would welcome any contributions and comments.

But those are just my ideas. What I would love to hear from you is:

* Is there already some open standard for accounting data which I have  
missed?

* What is your reaction to using UBL in such a way? Abusing/bending  
the standard, or sensible application?

* Do you think OASIS should be involved in this? I could imagine first  
trying out a few approaches in an informal setting outside OASIS, and  
when we've learnt what works and what doesn't, bring it back inside  
and standardise it properly (as a separate standard based on UBL?).  
But I'm new to OASIS so I don't know your usual way of doing things.

* Can you contribute? There are many ways you could help, from  
proofreading/commenting and helping spread the word to actively  
contributing by writing.

I look forward to hearing your comments. Thanks!

Martin

[1] http://ept.github.com/invoicing/
[2] http://is.gd/lJL5
[3] http://ept.github.com/oaccounts/
[4] http://en.wikipedia.org/wiki/Representational_State_Transfer
[5] http://git-scm.com/


---------------------------------------------------------------------
To unsubscribe, e-mail: ubl-dev-unsubscribe@lists.oasis-open.org
For additional commands, e-mail: ubl-dev-help@lists.oasis-open.org




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]