details: https://code.tryton.org/mt940/commit/4709b866f8dc
branch: default
user: Cédric Krier <[email protected]>
date: Mon Feb 23 13:03:22 2026 +0100
description:
Add fund code to transaction
Closes #40
diffstat:
CHANGELOG | 2 ++
mt940/__init__.py | 8 +++++---
mt940/test.py | 11 +++++++++--
3 files changed, 16 insertions(+), 5 deletions(-)
diffs (86 lines):
diff -r 9583bd228982 -r 4709b866f8dc CHANGELOG
--- a/CHANGELOG Mon Nov 24 14:10:13 2025 +0100
+++ b/CHANGELOG Mon Feb 23 13:03:22 2026 +0100
@@ -1,3 +1,5 @@
+* Add fund code to transaction
+
Version 0.7.0 - 2025-11-24
* Add support to Python 3.14
* Support negative amount
diff -r 9583bd228982 -r 4709b866f8dc mt940/__init__.py
--- a/mt940/__init__.py Mon Nov 24 14:10:13 2025 +0100
+++ b/mt940/__init__.py Mon Feb 23 13:03:22 2026 +0100
@@ -39,7 +39,7 @@
(?P<date>\d{6})
(?P<booking>\d{4})?
(?P<sign>D|C|RC|RD)
- (?P<code>\w)?? # ING skips this mandatory field
+ (?P<fund_code>\w)?? # ING skips this mandatory field
(?P<amount>(-|\d)(\d|,){0,14})
(?P<id>\w{4})
(?P<reference>.{0,34})""", re.VERBOSE)
@@ -123,10 +123,11 @@
booking = None
amount = _parse_amount(transaction.group('amount'),
transaction.group('sign'))
+ fund_code = transaction.group('fund_code')
id_ = transaction.group('id')
reference = transaction.group('reference')
reference, _, institution_reference = reference.partition('//')
- return (date, booking, amount, id_, reference,
+ return (date, booking, amount, fund_code, id_, reference,
institution_reference, additional_data, '')
def _set_statement(self, values, transactions):
@@ -145,7 +146,8 @@
Statement = namedtuple('Statement', ['statement', 'account', 'information',
'start_balance', 'transactions', 'end_balance', 'description'])
Balance = namedtuple('Balance', ['date', 'amount', 'currency'])
-Transaction = namedtuple('Transaction', ['date', 'booking', 'amount', 'id',
+Transaction = namedtuple(
+ 'Transaction', ['date', 'booking', 'amount', 'fund_code', 'id',
'reference', 'institution_reference', 'additional_data',
'description'])
diff -r 9583bd228982 -r 4709b866f8dc mt940/test.py
--- a/mt940/test.py Mon Nov 24 14:10:13 2025 +0100
+++ b/mt940/test.py Mon Feb 23 13:03:22 2026 +0100
@@ -55,6 +55,7 @@
self.assertEqual(transaction.date, datetime.date(2012, 5, 12))
self.assertEqual(transaction.booking, datetime.date(2012, 5, 14))
self.assertEqual(transaction.amount, Decimal('500.01'))
+ self.assertEqual(transaction.fund_code, None)
self.assertEqual(transaction.id, 'N654')
self.assertEqual(transaction.reference, 'NONREF')
self.assertEqual(transaction.additional_data, '987654321')
@@ -67,6 +68,7 @@
self.assertEqual(transaction.date, datetime.date(2014, 12, 5))
self.assertEqual(transaction.booking, datetime.date(2014, 12, 5))
self.assertEqual(transaction.amount, Decimal('-15.67'))
+ self.assertEqual(transaction.fund_code, None)
self.assertEqual(transaction.id, 'IDXX')
self.assertEqual(transaction.reference, 'REF'),
self.assertEqual(transaction.institution_reference, '')
@@ -77,6 +79,7 @@
self.assertEqual(transaction.date, datetime.date(2017, 12, 14))
self.assertEqual(transaction.booking, None)
self.assertEqual(transaction.amount, Decimal('15.67'))
+ self.assertEqual(transaction.fund_code, None)
self.assertEqual(transaction.id, 'TIDX')
self.assertEqual(transaction.reference, 'TEST'),
self.assertEqual(transaction.institution_reference, 'REFERENCE')
@@ -118,8 +121,12 @@
for transaction, result in [
('240325C-50000,00NMSCREV20240325AAAAAAA010O9902538776',
(datetime.date(2024, 3, 25), None, Decimal('-50000.00'),
- 'NMSC', 'REV20240325AAAAAAA010O9902538776', '', None,
- '')),
+ None, 'NMSC', 'REV20240325AAAAAAA010O9902538776', '',
+ None, '')),
+ ('240325CS-50000,00NMSCREV20240325AAAAAAA010O9902538776',
+ (datetime.date(2024, 3, 25), None, Decimal('-50000.00'),
+ 'S', 'NMSC', 'REV20240325AAAAAAA010O9902538776', '',
+ None, '')),
]:
with self.subTest(transaction=transaction):
self.assertEqual(MT940._get_transaction(transaction), result)