Although the KMyMoney is simply great application to maintain personal finances, there is always room for improvement. Currently transactions can be grouped together by using categories, e.g. it's easy to find all the expenses concerning fuel.
But what if user has two, or even three vehicles, and wants to know how much each of them costs money? User can create new fuel, insurance etc. categories for each vehicle, but in the long term this isn't very practical because there would be a lot of categories while some of them are used only for reporting purposes (for example, because of cars sold and new ones are bought).
On the other hand, the situation can be handled by using memos: “tagging” the transaction with license number. Then new report is created where one search criterion is text which must be same as vehicle license number. This way user can track expenses from different categories for one specific vehicle.
In short, tagging is meant to group different categories together in case when some of the transactions in the category doesn't logically belong together.
Even if memos can be used to accomplish this same goal, they aren't designed for this kind of functionality and since they aren't very convenient to use. Technically they do work, but in real life it's not handy to offer write long tag names when they could be simply selected from the drop down list. And on the other hand, it's not handy that those words that are reserved for tagging purposes, are forbidden to be used anymore for any other way in memos.
The rest of this document describes from user point of view, how this kind of tags functionality could be done, and where they should be taken into account. The document doesn't contain anything about code sections that need to be changed, because writer lacks of knowledge of KMyMoney at that level.
If the user interface is wanted to be as similar as it is currently, the tags could work so that there is only Tools / Tags menu, where tags can be maintained. If there is defined at least one tag, only then following dialogs should be active (or visible, if user interface is wanted to be kept as simply as possible).
All the basic functionality should apply to the tags, e.g. when the document is saved or, also tags are saved, or if there is created new loan / scheduled transaction, it should be able to use tags in there in similar way as memos can be used, etc.
The basic principle is to add way to enable using of configurable tags exactly in same places where memos can be inserted for the transaction.
Probably the nicest way to maintain the tags could be to add new view after the categories:
But if it feels that it would clutter the user interface too much, the new menu item into Tools -menu should suffice. If new view is desired, it could look pretty much as the Payee view currently (e.g. listing tags on the left side, and after selecting one or more of them, the right side shows the transactions that include the tag).
In any case, the maintain dialog should make it possible to add, edit and remove any number of tags as the user desires. The “nice to have” feature could be possibility to import user selectable words from memo fields to tags. In this way those who have used the memo fields to tag transactions, could easily create tags from those keywords.
At the top of the list widget should be maintain-button, which opens the same maintaining dialog that can be opened through Tools / Tags menu.