Projects/KMyMoney/Features/Tags
Introduction
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.
General
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.
Maintaining tags
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.
Ledger
- When legder item is selected, there should be added list of tags that belong to transaction:
- If there is transaction with only one category with multiple tags, it should list them all.
- If there is transaction with splitted categories with one tag for all of them, it should list it.
- If there is transaction with splitted categories with multiple different tags or some splits without any, it should say only “Splitted transaction with different tags” or something like that.
- If category or any splits has tag, list should be empty.
- When making deposit, transfer or withrawal, there should be possibility to add zero or more tags to the transaction.
- Maybe this might be done by adding new field after category widget, that lists tags with same way as in ledger, and where is new little button to tag the transaction.
- This would open little drop down list where all the tags are listed and that can be selected by ticking them with x (in similar way as currently categories can be selected when searching).
Maintain
List of tags displayed with same rules as in ledger
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.
This new list widget should be also used in split-editor, so that splitted items can be tagged too:
Searching the transactions & report configuration
- Between Category and Payee tabs.
- Contains similar kind of list as the Category-tab currently, where multiple tags could be selected, and similar shortcut buttons for all and none.
- When searching, this selection limits the results only for those transactions that contains the selected tag.
- When configuring the report, this selection limits the reported transactions to those that contains the selected tag. The way of limiting should be consistent with each report type.