На данный момент я работаю над сценарием импорта, который импортирует данные банковского счета в базу данных MySQL, используя php. Я нашел некоторый mt940 pharser, но они не делали то, что я хотел сделать, или не соответствовали текущему стандарту MT940. Поэтому я написал свой собственный простой класс, который анализирует данные, которые мне нужны.Как найти двойные транзакции в MT940
Проблема не есть, и это может даже не быть проблемой MT940, заключается в том, что я должен фильтровать двойную транзакцию. И в основном это очень просто, если точно такая же транзакция уже существует в базе данных, не импортируйте снова. Вот что я сделал.
Но теперь забавная часть: Некоторые транзакции могут происходить дважды в тот же день. Например, кто-то делает одну и ту же транзакцию дважды в тот же день [кому-то может понравиться и просто отправить мне деньги дважды;)]. При импорте этого в первый раз нет проблем. В одном файле каждая транзакция является транзакцией.
Но теперь проблема: Поскольку транзакция не являются уникальными (MT940 не посылает никаких уникальных для сделки), то трудно отфильтровать двойную сделку с уникальной транзакции. Поэтому, если я загрузил два файла MT940 со своего банковского счета. И одна из двух транзакций находится в первом файле, а вторая - во втором файле. При импорте второго файла он теперь мне скажет, что транзакция является двойной транзакцией.
Итак, я борюсь с этим, и, вероятно, я не единственный. Кроме того, большая программа бухгалтерского учета использует структуры MT940 и должна иметь дело с одной и той же проблемой.
Кто знает, как справиться с этим?
Дополнительная информация
В самой сделки (: 61 :), то доступна следующая информация:
- Дата
- Сумма
- Номер банковского счета
- Банковский счет наименование
- банковский счет адрес
- Описание сделки
Это может случиться так, что если кто-то делает транзакцию дважды, вся эта информация является то же самое.
Пример двух двойных транзакций (конечно, я изменил имя и банковский счет транзакции): (этот файл был двойным в одном файле MT940, но на самом деле это две транзакции).
:61:130311C000000000029,95N122NONREF
:86:/ORDP//NAME/JANSEN W H/ADDR/SOMEROAD 1 9569 GS THECITY/REMI/N
OKIA 3310/ISDT/2013-03-11
Если каждое отдельное поле совпадает, я думаю, что ни один алгоритм не может решить, является ли это двойной или просто новой идентичной транзакцией. –
PS: Является ли дата транзакции меткой времени или просто DD/MM/YYYY? –
Нет метки времени, просто YYMMDD. – Timo002