r20616-20630 (GncOwner)

Geert Janssens janssens-geert at telenet.be
Thu May 12 09:44:17 EDT 2011


On donderdag 12 mei 2011, John Ralls wrote:
> On May 12, 2011, at 6:22 AM, Geert Janssens wrote:
> > On donderdag 12 mei 2011, John Ralls wrote:
> >> Geert,
> >> 
> >> Where are you trying to get to with these changes?
> >> 
> >> Regards,
> >> John Ralls
> > 
> > My larger goal is to get better integration of the business functions in
> > the GnuCash UI and logic. In my experience it just takes way too many
> > clicks and context switches to efficiently work with the business
> > objects. So I'm looking for ways to improve this.
> > 
> > These recent commits are a first step in that direction. They add
> > overview pages for business objects such as vendors or customers, just
> > like there is an overview page for accounts. The idea is that each of
> > these overview pages get their own toolbar buttons tailored to the type
> > of object that is listed. For now there's only add/edit
> > vendor/customer/employee when such a page is open, but I plan to add
> > buttons for at least new invoice/bill/job. In my opinion that would be a
> > first important improvement to a business workflow where invoices/bills
> > are entered in batch. For bills, you could open the Vendor's overview
> > page, and start entering invoices with the click of a (toolbar) button.
> > Another useful future enhancement I'm thinking of is adding some kind of
> > a balance column, which shows the amount each customer is still due or
> > you still owe each vendor, similar to the account's balance columns.
> > 
> > The whole concept still needs additional polish and refinement obviously.
> > For example, I'm still evaluating which columns would make sense to be
> > visible by default, which filter options to provide,...
> > 
> > There is an enhancement request I wrote last year that is mostly related
> > to this:
> > https://bugzilla.gnome.org/show_bug.cgi?id=635003
> 
> OK, sounds reasonable.
> 
> My concern is that the data model for business is a bit of a mess, with
> separate objects for the different flavors of "owner". (I don't even like
> using "owner" here, but "counterparty", which is technically correct,
> sounds rather ponderous.)
Perhaps "businesspartner" or simply "partner" would be a useful alternative. 

> There's no real difference between customers and
> vendors except the direction of the cash flow.
I suppose you are talking from an accounting point of view here. In GnuCash 
implementation terms there is only one small difference: a customer can have a 
shipping address in addition to the customer address.

Other than that I agree that there is so much in common that it could share 
much of the code. In fact, some accounting applications don't make that 
difference at all, like OpenERP for example. They only have business partners, 
and one business partner can be a supplier, a customer or both. It's just a 
flag.

> The same is true of bills
> and invoices.
Again I have noticed some differences at the implementation level, though 
invoices and bills already share a lot of code. Invoices have discounts in the 
invoice register and there's also something with jobs that plays a part there. 
I'm sure Derek can give a much more detailed explanation than I can though.

> Employees and payroll are quite different, and I rather
> doubt that Gnucash's handling of payroll is really adequate.
As I came to understand, GnuCash doesn't handle payroll at all. The 
functionality tied to employees is only for expense vouchers (what an employee 
files when he paid business expences from his personal accounts) trip. So you 
are quite right here.

> I'd intended
> to rework the design as part of the transactional refactoring after
> getting unit test coverage in place, but ISTM you should consider it as
> part of this effort as it will make a big difference in how your overview
> pages work.
> 
I'm very interested in the improvements you suggest here. I agree this could 
result in a much needed cleanup. Just like you, I would prefer to see this 
happen after the unit test coverage though.

The unit test coverage is also the subject of the GSoC project you mentor 
currently, right ? So I think it would be best to wait for that project to be 
integrated in trunk. When unit test coverage is there, I think we may work 
together on the transaction based refactoring for the business parts.

When creating the "owner" overview page, I deliberately tried to use the 
existing engine objects as they are, partly so because I'm currently mainly 
GUI focussed. I had to make some changes and additions, but I didn't want to 
touch the structure. I understand that this means I'll have to update this 
code once we start refactoring the business objects, but I think that's ok. I 
gained some better insight again in some of the business parts and in the way 
the gtk gui code is structured. That will surely be useful in the future 
refactoring.

Geert


More information about the gnucash-devel mailing list