Как использовать модуль python mt940 для анализа transaction_details транзакции SWIFT?
Вероятно, это "как сделать что-нибудь базовое в python
"вопрос, но python
помимо элементарного, отказывается иметь для меня смысл. У меня есть RTFM, но я не могу понять, что мне на самом деле нужно делать.
Мне нужно иметь возможность конвертировать материалы MT940 в CSV, чтобы импортировать операторы в GnuCash
. Я знаюGnuCash
использует aqbanking
для импорта файлов MT940, но он не выполняет то, что я хочу. Один и тот же банк предоставляет как STA-файлы MT940, так и CSV-файлы с выписками, но в CSV-файлах есть только одно текстовое поле, а GnuCash требует как минимум два текстовых поля для импорта CSV-файла. Остается MT940.
Ниже я пытаюсь узнать, как получить mt940
для обработки данной транзакции 'transaction_details
', вернуть результат как dict
, и получить доступ к полученному dict
.
Кто-нибудь может помочь? Вы можете быть настолько покровительственными, насколько это необходимо, чтобы указать на то, что мне не хватает документации mt940.
Заранее спасибо...
Из документации (источник):
mt940.processors.transaction_details_post_processor(transactions, tag, tag_dict, result, space=False)[source]
Parse the extra details in some transaction formats such as the 60-65 keys.
Parameters: transactions (mt940.models.Transactions) – list of transactions tag (mt940.tags.Tag) – tag tag_dict (dict) – dict with the raw tag details result (dict) – the resulting tag dict space (bool) – include spaces between lines in the mt940 details
Этот код
import mt940
import pprint
stafile = 'single-message.STA'
# https://github.com/WoLpH/mt940/issues/85
transactions = mt940.parse(stafile, processors=dict(
post_transaction_details=[
mt940.processors.transaction_details_post_processor
],
))
for transaction in transactions:
pprint.pprint(transaction)
print ("\n______________________________________\n")
pprint.pprint(transaction.data)
print ("\n______________________________________\n")
pprint.pprint(transaction.data['transaction_details'])
с этим входным файлом
$ cat single-message.STA
{1:F01CRESCHZZ080L0000000000}{2:I940X N2}{3:{108:XBS/200703}}{4:
:20:XBS/200703/0001
:25:4879/284404-81
:28C:56/1
:60F:C200703CHF21709,3
:61:2007030703D25,00NTRF.1e4i76cbf7jxrng//LSVE-0702-CS-592
:86:1006?05LSVE200702CS15592?21.1e4i76cbf7jxrng SHW1W.1e4i76cbf7jxrng
?33Solidar Suisse Quellenstrasse 31 8031 Zuerich?23Bank Cler AG P
ostfach 4002 Basel CH
:62F:C200703CHF21684,3
:64:C200703CHF21684,3
-}
производит этот вывод
<Transaction[2020-07-03] -25.00 CHF>
______________________________________
{'amount': <-25.00 CHF>,
'bank_reference': 'LSVE-0702-CS-592',
'currency': 'CHF',
'customer_reference': '.1e4i76cbf7jxrng',
'date': Date(2020, 7, 3),
'entry_date': Date(2020, 7, 3),
'extra_details': '',
'funds_code': None,
'guessed_entry_date': Date(2020, 7, 3),
'id': 'NTRF',
'status': 'D',
'transaction_details': '1006?05LSVE200702CS15592?21.1e4i76cbf7jxrng '
'SHW1W.1e4i76cbf7jxrng\n'
'?33Solidar Suisse Quellenstrasse 31 8031 '
'Zuerich?23Bank Cler AG P\n'
'ostfach 4002 Basel CH'}
______________________________________
('1006?05LSVE200702CS15592?21.1e4i76cbf7jxrng SHW1W.1e4i76cbf7jxrng\n'
'?33Solidar Suisse Quellenstrasse 31 8031 Zuerich?23Bank Cler AG P\n'
'ostfach 4002 Basel CH')