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)

Reply via email to