Changing code to load bank data from SQLite DB

Thomas Baumgart thb at net-bembel.de
Sun Jun 14 10:13:35 BST 2020


On Sonntag, 14. Juni 2020 10:13:22 CEST Prasun Kumar wrote:

> Thanks for the guidance.
> Another question, how is AccountNumberCheck::Record::method supposed to be
> used?
> In the current implementation the method AccountNumberCheck::readFile()
> reads it from the data file
> but the data file doesn't contain any such field afaik.

Looking at the code in AccountNumberCheck::readFile(const string &filename) and
the current data file at the same time, I see some problems. Maybe, the data
file format changed in the meantime, I have not checked.

Anyway, the format in the text file (obtained from
https://www.bundesbank.de/resource/blob/602632/31fec41357f012d537ce62045395929a/mL/blz-aktuell-txt-data.txt
today) I see the following record structure:

Nr Length Description
1  8      BLZ (Bankleitzahl)
2  1      Specification whether the institution is the bank sort code-carrying payment service provider ("1") or not ("2")
3  58     Name of institution
4  5      Zip Code
5  35     Location/City
6  27     Shortname of Institution
7  5      PAN (I don't know what that is used for)
8  11     BIC (SWIFT Bank Identifier Code - I think we should have that in the DB somehow)
9  2      Check-Method
10 6      Record number
11 1      Change Operation
          I see 'A', 'D', 'M' and 'U' and can think that they mean
          'Add', 'Delete', 'Modified', 'Unchanged' but that is my interpretation which needs to be verified
12 1      BLZ deletion if "1"
13 8      Indicator of successor bank sort code (new BLZ)

I simply copied the description of fields 2 and 13 from
https://www.bundesbank.de/en/tasks/payment-systems/services/bank-sort-codes/download-bank-sort-codes-626218
so that you can read up on it.

The field you are looking for is contained as field #9.  To me it looks like the parser in 
AccountNumberCheck::readFile(const string &filename) needs to be changed/adopted to the
current format.

> How should I handle
> this field with the database?

I'd say extract it from field #9. The values map to the functions located in src/lib/methods.cc.

> Inserting an empty string works but then should I also make a place for a
> possible method field in the
> user-supplied DB?

It may work but can yield false results. I don't know the details, but looking at the code
there is some heuristic going on to find a method if none is supplied. Again, I have not
looked into that in detail and I am not aware of the detailed procedure.

All I can say is that if you stick an account number into the check algorithm you must get a positive
result, otherwise the account number is not valid for the BLZ (method_09 being the easiest one ;) ).

Hope that helps. If you still have questions feel free to ask.

-- 

Regards

Thomas Baumgart

https://www.signal.org/       Signal, the better WhatsApp
-------------------------------------------------------------
Testing can only prove the presence of bugs, not their absence.
 -- Edsger W. Dijkstra, 1969
-------------------------------------------------------------
-------------- 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/kde-finance-apps/attachments/20200614/6c9d5fa6/attachment.sig>


More information about the Kde-finance-apps mailing list