目前我正在研究一个使用 php 将银行账户数据导入 MySQL 数据库的导入脚本。我找到了一些 mt940 解析器,但那些没有做我想做的事或不符合当前的 MT940 标准。所以我编写了自己的简单类来解析我需要的数据。
问题不是,这甚至可能不是 MT940 问题,是我必须过滤双重交易。基本上,这很简单,如果数据库中已经存在完全相同的事务,则不要再次导入。这就是我所做的。
但现在有趣的部分是: 一些交易可能在同一天发生两次。例如,有人在同一天进行两次相同的交易[有人可能喜欢我,只是两次给我汇款;)]。第一次导入时,没有问题。在一个文件中,每个事务都是一个事务。
但是现在的问题是: 因为交易不是唯一的(MT940 不会为交易发送任何唯一的),所以很难从唯一的交易中过滤掉双重交易。所以如果我从我的银行账户下载了两个 MT940 文件。两个事务中的一个在第一个文件中,另一个在第二个文件中。导入第二个文件时,它现在会告诉我该交易是双重交易。
所以..我正在为此苦苦挣扎,而且可能我不是唯一一个。大会计程序的使用MT940结构也必须处理同样的问题。
谁知道处理这个问题的方法?
附加信息
在交易本身 (:61:) 中,可以获得以下信息:
- 日期
- 数量
- 银行帐号
- 银行账户名称
- 银行账户地址
- 交易说明
如果某人进行两次交易,则可能会发生所有这些信息都相同的情况。
两次双重交易的例子(当然我修改了交易的名称和银行账户):(这个在一个MT940文件中是双重的,但实际上是两次交易)。
:61:130311C000000000029,95N122NONREF
0123456789
:86:/ORDP//NAME/JANSEN W H/ADDR/SOMEROAD 1 9569 GS THECITY/REMI/N
OKIA 3310/ISDT/2013-03-11