Как использовать модуль 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')

0 ответов

Другие вопросы по тегам