OFX importer should not ignore non-empty Name field if Payee or Memo are empty (patch provided)

Thomas Baumgart thb at net-bembel.de
Fri Jan 24 15:13:38 GMT 2020


Dawid,

thanks for taking the time to improve KMyMoney by providing a patch. The 'messy' code is probably due to historic growth ;)

In fact, the OFX part is not my area of expertise because none of the banks here uses/supports it. But the code looks like we could use it to improve the functionality.

@Jack: can you check if the patch works with your OFX downloads?

Regards

Thomas

On Freitag, 24. Januar 2020 05:57:25 CET Dawid Wrobel wrote:

> Hello,
> 
> 
> The US Citibank's OFX account statement uses NAME and MEMO fields only.
> Even worse, Payee is saved in MEMO. When importing using OFX plugin, one
> has an option to choose preferred field for Payee. However, choosing MEMO
> there solves the problem only partially, since the NAME field gets
> discarded despite carrying useful transaction description information that
> could be otherwise used as Memo.
> 
> 
> I looked into the code and noticed that it is quite messy and indeed does
> not consider non-empty NAME field at all, so I rewrote that section of the
> code.
> 
> 
> I am building a "matrix" of preference for each of the Payee, Memo and
> Name, based on the user's choice for Payee. The importing logic then
> evaluates each transaction by:
> 
> - finding the first valid (non-empty) OFX field from the preferred list for
> Payee;
> 
> - looking up the corresponding OFX field for Memo preference. If the OFX
> field is not valid, the corresponding field of the Name preference list is
> used instead.
> 
> 
> This opportunistic approach guarantees that no information gets ignored
> whenever it can be assigned to either Payee or Memo fields. It also handles
> the investment transactions more cleanly.
> 
> 
> STEPS TO REPRODUCE
> 
> 1. Prepare an OFX file with the following transaction:
> 
> 
> <STMTTRN>
> 
> <TRNTYPE>CREDIT
> 
> <DTPOSTED>20200115120000
> 
> <TRNAMT>1366.31
> 
> <FITID>202001110001
> 
> <NAME>ACH Electronic Credit
> 
> <MEMO>EMPLOYER
> 
> </STMTTRN>
> 
> 
> 2. Attempt to import, set the preferred Payee field to MEMO
> 
> 
> OBSERVED RESULT
> 
> NAME gets ignored and the MEMO gets used twice instead
> 
> 
> EXPECTED RESULT
> 
> Since MEMO is already used for Payee and PAYEEID is not provided by the
> OFX, NAME field should be used to populate Memo information.
> 
> 
> ADDITIONAL INFORMATION
> 
> I haven't coded in C++/QT for over 6 years, so my apologies if the code is
> not up to modern standards.
> 
> 
> Patch attached and also checked-in to my forked repo here:
> https://github.com/wrobelda/kmymoney/commit/8064ced6da1c4acea582618dbc7777b915124f16
> 
> 
> If required, I can try and push it through Phabricator instead.
> 

-- 

Regards

Thomas Baumgart

https://www.signal.org/       Signal, the better WhatsApp
-------------------------------------------------------------
Embedded Linux: because you can't do control-alt-delete on a pacemaker.
-------------------------------------------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 868 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kmymoney-devel/attachments/20200124/35e39212/attachment.sig>


More information about the KMyMoney-devel mailing list