New Invoice Dialog Box

Geert Janssens janssens-geert at telenet.be
Wed Jan 20 09:25:48 EST 2010


On Saturday 16 January 2010, Derek Atkins wrote:
> Hi,
> 
> Geert Janssens <janssens-geert at telenet.be> writes:
> > I certainly agree on the concept: protect the invoice metadata while
> > entering the invoice content.
> >
> > I do believe on the other hand this can also be achieved within one
> > single window:
> > * New invoice could immediately open the invoice, with the metadata
> > fields enabled for input.
> > * Add a "Done" or "Proceed" or whatever button to the metadata fields.
> > * Once clicked, disable the metadata fields (with visual feedback) and
> > shift focus to the ledger to enter invoice content.
> > * Keep the "Edit Invoice" button to allow changing the metadata later on.
> > * When clicked, re-enable the metadata fields (also with visual feedback)
> > and lock the ledger, until done is clicked again.
> 
> I honestly think this would be more confusing to the average user than
> the current interface design.  If you still need to have an 'edit'
> button then what have you saved?  If all it does is change which section
> of the invoice window is editable, the next question would be "why not
> make it all editable all the time"?
> 
> Also, what does the HIG say about this?  If you have required
> information necessary before you can effectively enter data then I think
> the HIG does require it to be on separate pages, so you cannot get to
> stage 2 before you finish stage 1.  You NEED to select the customer for
> the invoice before you can create the register because you need to know
> what default currency to use.
> 
I agree I should probably first read up on the HIG before I can propose any 
serious decisions (and I will for sure). On the other hand it's called 
"Guidelines", which mean they are to be followed when they make sense in the 
given context.

So the customer is the only information that is REQUIRED before you can create 
the register. I'll keep that in mind for the future. It could be interesting 
to try a design where only the customer is asked beforehand in a dialog.

> > With visual feedback I imagine changing the background color of either
> > the fields or the complete metadata block.
> 
> EWWWWW!!!   As a colorblind person I object to using color to signal
> information.  There are too many people who cannot differentiate colors,
> and any colors you chose would potentially conflict with someone's ideal
> theme colors.
> 
I seem to have hit a sensitive spot here. If so, I apologize.

But let me clarify. When I said changing the color, my first idea was to "dim" 
the background of the fields from whatever it is now to grey. Isn't this a 
common way to show a field is not active ?

There are other forms of visual feedback. I didn't elaborate as I only wanted 
to present a concept, not a full detailed solution. For example, all text 
fields could be changed into label fields when they're not editable.

Just to say that changing the color was just a (bad) example of indicating the 
difference between an active field and and inactive field in some visual form.

> > The above is only a rough sketch of the idea. It obviously still needs
> > refining. And I'm aware it requires several often user-invisible changes
> > to the widgets used on the invoice window.
> >
> > This approach essentially integrates the dialog box into the invoice
> > window.
> >
> > Why would I want this ?
> > Mainly because my usage of GnuCash often involves repetitive invoice
> > creation (enter x invoices in a row). Every popup window that can be
> > avoided in such a workflow increases the efficiency.
> >
> > I don't think the use case where invoices are only occasionally entered
> > are negatively affected with such a change.
> 
> I think the negative impact is more on confusing users and conflating
> invoice contents and invoice metadata into a single screen.
> 
It all depends indeed on how strongly the invoice metadata should be 
protected. I started questioning this during the discussion we have now, 
though I don't have a conclusive answer yet. In a sense, I can perfectly live 
with the idea that metadata is only protected as soon as the invoice is 
posted. The invoice metadata is not fixed anyway before the invoice is posted. 
Such a scenario would only ask for the Customer/Vendor/Employee in a dialog 
box and have all other metadata freely editable in the main invoice window. 
Until the invoice is posted, that is. And obviously, you wouldn't be allowed 
to post the invoice unless the required metadata is there.

I know I'm risking the Wrath of Warlord with this suggestion ;). I'm not even 
saying this is a good idea. I do believe though it's sometimes 
useful/interesting to challenge the obvious. It leads to interesting new ideas 
and concepts from time to time. So here I go, testing the traditional models 
:)

Coming back on the level of confusion. I agree my original idea would cause 
some confusion. This lead me to realize that that current invoice window ALSO 
causes a lot of confusion: only the notes field and the Active field are 
editable (which I just learned from you), yet all the fields display as if 
they are as well. Only you can't. For me this meta data block gives in 
inconsistent impression as it is now.

So whatever way it will evolve, I think the invoice window could use some 
improvement. If it will be "No metadata editing in the main window", then all 
the text fields should change into simple labels. At least then it's clear 
beyond any doubt these fields are not supposed to be edited.

> Honestly, I think there are many other ways to make repetative invoice
> creation easier.  I think the #1 task should be a "Duplicate Invoice"
> feature that let's you take an existing invoice (posted or not) and
> duplicate it.   When you click the "Duplicate" button it would pop up
> the Edit Invoice window with the Customer/Job/Terms already filled in,
> and then it would copy the invoice line items to the new invoice once
> you accept that.
> 
> Obviously you could change the target customer in this process if you
> want to duplicate an invoice to another customer.
> 
> I think adding this feature would go a LONG way towards easing your task
> without making the entry more confusing.
> 
Agreed this would be useful as well, especially for customer invoices and 
employee voucher. It does less for vendor bills, at least in my businesses.

> Other things that would improve invoice entry:
> 
> * Real Autocompletion.  So it remembers other line-item entries from
>   some other invoices and lets you autocomplete on them
> * Employee hourly rate lookups for 'Hours' entries
> * Actually implementing Invoice Templates / Scheduled Invoices.  Having
>   Invoice duplication would be a good start to this.
> 
> I think all of these are features that would be extremely worthwhile,
> useful, and fit in the current design without adding to the confusion of
> data entry.
> 
Agreed.

On the other hand, I'm not up to adding these features (yet). I'm still 
learning the GC internals. Things that touch the interfaces only with some 
higher level engine or query stuff, I can manage already. Going deeper is 
quite a challenge and takes me considerably more time to learn... 

> I'm glad you're interested in improving the business features..  It's
> been in long need of some love.
> 
Heh, I've got the impression you and I are the only dev's using the business 
features...

It itches enough though to scratch what I can. :)

Geert


More information about the gnucash-devel mailing list