Review Request 126875: Combined the questions from TransactionMatcher::match and MyMoneyStatementReader::askUserToEnterScheduleForMatching

Christian David christian-david at web.de
Wed Feb 24 09:17:52 UTC 2016



> On Jan. 24, 2016, 10:02 p.m., Christian David wrote:
> > kmymoney/converter/mymoneystatementreader.cpp, line 1458
> > <https://git.reviewboard.kde.org/r/126875/diff/1/?file=439594#file439594line1458>
> >
> >     Translated strings should not be combined, as it confuses the translators. It is better to create two long strings using i18np() although this duplicates the text (which is usually bad).
> 
> Artur Puzio wrote:
>     But the i18np() is for plurals. What we can do is change the previous string only slitly to add the variable that will contain `"The transaction dates are one day apart.<br/>"` or `""`.
> 
> Christian David wrote:
>     You could use something like
>     
>         i18n("<html>KMyMoney has found a scheduled transaction which matches an imported transaction.<br/>"
>                                  "Schedule name: <b>%1</b><br/>"
>                                  "Transaction: <i>%2 %3</i><br/>"
>                                  "Do you want KMyMoney to enter this schedule now so that the transaction can be matched?</html>",
>                                  scheduleName, splitValue, payeeName);
>       
>     and
>         i18np("<html>KMyMoney has found a scheduled transaction which matches an imported transaction.<br/>"
>                                  "Schedule name: <b>%2</b><br/>"
>                                  "Transaction: <i>%3 %4</i><br/>"
>                                  "The transaction dates are one day apart.<br/>"
>                                  "Do you want KMyMoney to enter this schedule now so that the transaction can be matched?</html>",
>                                  "<html>KMyMoney has found a scheduled transaction which matches an imported transaction.<br/>"
>                                  "Schedule name: <b>%2</b><br/>"
>                                  "Transaction: <i>%3 %4</i><br/>"
>                                  "The transaction dates are %1 days apart.<br/>"
>                                  "Do you want KMyMoney to enter this schedule now so that the transaction can be matched?</html>",
>                                  gap ,scheduleName, splitValue, payeeName);
> 
> Allan Anderson wrote:
>     I think this code was transferred from kmymoney/dialogs/transactionmatcher.cpp lines 79-88, and now, here, I think it deals with matching a schedule.  It's a while since I was in this area, so this could be totally wrong, but I think that in the original position, it also handled matched non-scheduled and non-imported transactions.  Have you tested this capability?  If so, great and I'm wrong.
> 
> Artur Puzio wrote:
>     Allan, you are correct, I will check if the `match` function is invoked elsewhere.
> 
> Christian David wrote:
>     Actually, I think you are right Allan. But which non-imported transactions are matched? Do you mean user entered transactions in the register?
> 
> Allan Anderson wrote:
>     See https://bugs.kde.org/show_bug.cgi?id=333949.
>     This added the ability to match two imported transactions, and also two manually entered ones.  Originally, only a combination of one of each could be matched.  No scheduled transactions were changed, although I did add allowing the user to accept a match outside the default date scope.
> 
> Christian David wrote:
>     I rechecked this. According to KDevelop’s code parser ```TransactionMatcher::match(...)``` is used three times, namely in:
>     
>         MyMoneyStatementReader::handleMatchingOfExistingTransaction(...)
>         MyMoneyStatementReader::handleMatchingOfScheduledTransaction(...)
>         KMyMoneyApp::transactionMatch()
>         
>     The second one is using ```MyMoneyStatementReader::askUserToEnterScheduleForMatching``` where the question was moved to. So the question which is left: do we need the time check in the other two functions (I do not know when they are used, yet).
>     
>     However, the question must be moved out of ```TransactionMatcher::match()```. Otherwise the user is asked multiple times if he wants to match a single transaction – a usability sin.
>     
>     Btw: ```TransactionMatcher::match()``` should not contain any user interaction by design to keep our codebase readable. It is a backend function.

I did some research how the other functions use ```TransactionMatcher::match()```.

```KMyMoneyApp::transactionMatch()``` is only called if the user manually starts a match using a button. So the check is reasonable but not necessary – the user probably knows what he is doing.

```MyMoneyStatementReader::handleMatchingOfExistingTransaction()``` is a bit more tricky. It is call by ```MyMoneyStatementReader::processTransaction()``` which is used by ```MyMoneyStatementReader::import()``` which is finaly called by ```KMyMoneyApp::slotStatementImport()```. So I assume the call to ```handleMatchingOfExistingTransaction()``` is in the end caused by an import of a file with many entries. Therefore the question is a really good idea. However in it's current way (before this review request) absolutly useless. The user has no information which transaction he is asked about – remember this is a mass import. So removing this question is actually mandatory in my opinion.

So I recommend to ship this request.


- Christian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/126875/#review91536
-----------------------------------------------------------


On Jan. 24, 2016, 11:07 p.m., Artur Puzio wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/126875/
> -----------------------------------------------------------
> 
> (Updated Jan. 24, 2016, 11:07 p.m.)
> 
> 
> Review request for KMymoney and Christian David.
> 
> 
> Repository: kmymoney
> 
> 
> Description
> -------
> 
> Moved the question from `TransactionMatcher::match` to `MyMoneyStatementReader::askUserToEnterScheduleForMatching`.
> Added `MyMoneyTransaction & importedTransaction` parmeter to `MyMoneyStatementReader::askUserToEnterScheduleForMatching`, as `importedTransation` is required to calculate if the question from `TransactionMatcher::match` should be shown.
> 
> 
> Diffs
> -----
> 
>   kmymoney/converter/mymoneystatementreader.h 80da202 
>   kmymoney/converter/mymoneystatementreader.cpp 1634bbb 
>   kmymoney/dialogs/transactionmatcher.cpp 7d97404 
> 
> Diff: https://git.reviewboard.kde.org/r/126875/diff/
> 
> 
> Testing
> -------
> 
> Automated tests still pass, but they don't check the subject of work.
> Screenshot: [link](https://imgur.com/3Veh70N)
> 
> 
> Thanks,
> 
> Artur Puzio
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20160224/ed2c2c0f/attachment.html>


More information about the KMyMoney-devel mailing list