Skip to content

Commit

Permalink
Merge branch 'release/v4.5'
Browse files Browse the repository at this point in the history
  • Loading branch information
wolph committed Feb 25, 2017
2 parents fa122f8 + 1eebcb9 commit ccb9f91
Show file tree
Hide file tree
Showing 27 changed files with 286 additions and 85 deletions.
6 changes: 3 additions & 3 deletions mt940/__about__.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
__title__ = 'MT940'
__package_name__ = 'mt-940'
__author__ = 'Rick van Hattem (wolph)'
__description__ = '''
__description__ = ' '.join('''
A library to parse MT940 files and returns smart Python collections for
statistics and manipulation.
'''.strip()
'''.strip().split())
__email__ = 'wolph@wol.ph'
__version__ = '4.4'
__version__ = '4.5'
__license__ = 'BSD'
__copyright__ = 'Copyright 2015 Rick van Hattem (wolph)'
__url__ = 'https://github.com/WoLpH/mt940'
9 changes: 5 additions & 4 deletions mt940/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -334,9 +334,6 @@ def parse(self, data):
re.MULTILINE)
matches = list(tag_re.finditer(data))

transaction = Transaction(self)
self.transactions.append(transaction)

for i, match in enumerate(matches):
tag_id = match.group('tag')
# Since non-digit tags exist, make the conversion optional
Expand Down Expand Up @@ -375,12 +372,16 @@ def parse(self, data):
# Transactions only get a Transaction Reference Code ID from a
# :61: tag which is why a new transaction is created if the
# 'id' has a value.
if not self.transactions:
transaction = Transaction(self)
self.transactions.append(transaction)

if transaction.data.get('id'):
transaction = Transaction(self, result)
self.transactions.append(transaction)
else:
transaction.data.update(result)
elif tag.scope is Transaction:
elif tag.scope is Transaction and self.transactions:
# Combine multiple results together as one string, Rabobank has
# multiple :86: tags for a single transaction
for k, v in _compat.iteritems(result):
Expand Down
2 changes: 1 addition & 1 deletion mt940/processors.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def mBank_set_iph_id(transactions, tag, tag_dict, *args):
return tag_dict


tnr_re = re.compile('^TNR: (?P<tnr>\d+\.\d+)', flags=re.MULTILINE)
tnr_re = re.compile('TNR:[ \n](?P<tnr>\d+\.\d+)', flags=re.MULTILINE)


def mBank_set_tnr(transactions, tag, tag_dict, *args):
Expand Down
4 changes: 3 additions & 1 deletion mt940/tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,9 @@ class TransactionDetails(Tag):
'''
id = 86
scope = models.Transaction
pattern = r'(?P<transaction_details>[\s\S]{0,330})'
pattern = r'''
(?P<transaction_details>(([\s\S]{0,65}\r?\n?){0,5}[\s\S]{0,65}))
'''


class SumEntries(Tag):
Expand Down
7 changes: 2 additions & 5 deletions tests/betterplace/currency_in_25.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {account_identification: 51210600/9223382012EUR}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/betterplace/empty_86.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {transaction_details: 091}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/betterplace/empty_line.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {transaction_reference: TELEREPORTING}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/betterplace/missing_crlf_at_end.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data:
final_closing_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
Expand Down Expand Up @@ -47,7 +47,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
20 changes: 10 additions & 10 deletions tests/betterplace/sepa_mt9401.yml
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ transactions:
ftraggeber: Richter R?30PBNKDEFF100?31DE42100100100043921105?32Ri
c'
chter Renate 70 Zeichen B?33eginn Fuellzeichen xxxxxxxx?60enat?70'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -682,7 +682,7 @@ transactions:
FR1420041010050500013M02606?32Empfaenger 1 mit 70 Zeichen?33 Empf
ae'
aenger 1 mit 70 Zeiche'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -736,7 +736,7 @@ transactions:
FR1420041010050500013M02606?32Empfaenger 2 mit 70 Zeichen?33 Empf
ae'
aenger 2 mit 70 Zeiche'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -767,7 +767,7 @@ transactions:
FR1420041010050500013M02606?32Empfaenger 4 mit 70 Zeichen?33 Empf
ae'
aenger 4 mit 70 Zeiche'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -798,7 +798,7 @@ transactions:
FR1420041010050500013M02606?32Empfaenger 3 mit 70 Zeichen?33 Empf
ae'
aenger 3 mit 70 Zeiche'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -829,7 +829,7 @@ transactions:
FR1420041010050500013M02606?32Empfaenger 5 mit 70 Zeichen?33 Empf
ae'
aenger 5 mit 70 Zeiche'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -860,7 +860,7 @@ transactions:
vorschriften ?30SOGEFRPPXXX?31FR1420041010050500013M02606?32Empfa
en'
enger 7 mit 70 Zeichen?33 Empfaenger 7 mit 70 Zeiche?60beachten'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -1985,7 +1985,7 @@ transactions:
/0001?30SOGEFRPPXXX?31FR1420041010050500013M02606?32Empfaenger 1?
'
60MTLG:SBI-SEPA-UEB.FR1420041?6101005 Referenz: 1930467117G?62gf.'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -2283,7 +2283,7 @@ transactions:
?32Richter Renate 70 Zeichen B?33eginn Fuellzeichen xxxxxxxx?70Qu
'
entin Quast 70 Zeichen Be?71ginn Fuellzeichen xxxxxxxxx'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down Expand Up @@ -2497,5 +2497,5 @@ transactions:
?32Richter Renate 70 Zeichen B?33eginn Fuellzeichen xxxxxxxx?70Ge
'
rhard Geloscht 70 Zeichen?71 Beginn Fuellzeichen xxxxxx'
transactions: *id001
2 changes: 1 addition & 1 deletion tests/betterplace/sepa_snippet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ transactions:
?32Richter Renate 70 Zeichen B?33eginn Fuellzeichen xxxxxxxx?70Qu
'
entin Quast 70 Zeichen Be?71ginn Fuellzeichen xxxxxxxxx'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down
7 changes: 2 additions & 5 deletions tests/cmxl/account_balance_credit.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data:
final_opening_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
Expand Down Expand Up @@ -47,7 +47,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/cmxl/account_balance_debit.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data:
final_opening_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
Expand Down Expand Up @@ -47,7 +47,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/cmxl/account_identification_iban.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {account_identification: PL25106000760000888888888888}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/cmxl/account_identification_legacy.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {account_identification: 70011110/4005287001EUR}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/cmxl/available_balance.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data:
available_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
Expand Down Expand Up @@ -47,7 +47,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
7 changes: 2 additions & 5 deletions tests/cmxl/closing_balance.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data:
final_closing_balance: !!python/object:mt940.models.Balance
amount: !!python/object:mt940.models.Amount
Expand Down Expand Up @@ -47,7 +47,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
4 changes: 3 additions & 1 deletion tests/cmxl/mt940.yml
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,9 @@ transactions:
2?28003.?3010600076?310000777777777777?32HUTA SZKLA TOPIC UL
PRZEMY?33'
PRZEMY?33SLOWA 67 32-669 WROCLAW?38PL081060007600007777777
77777'
transactions: *id001
- !!python/object:mt940.models.Transaction
data:
Expand Down
7 changes: 2 additions & 5 deletions tests/cmxl/reference.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {transaction_reference: D140902049}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []
1 change: 1 addition & 0 deletions tests/cmxl/statement_details.sta
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
:61:1409010902DR000000000001,62NTRF0000549855700010//025498557/000001
:86:171?00SEPA LASTSCHRIFT KUNDE?10281?20EREF+TRX-0A4A47C3-F846-4729?21-8A1B-5DF620F?22MREF+CAC97D2144174318AC18D9?23BF815BD4FB?24CRED+DE98ZZZ09999999999?25SVWZ+FOO TRX-0A4A47C3-F84?266-4729-8A1B-5DF620F?30HYVEDEMMXXX?31HUkkbbbsssskcccccccccccccccx?32Peter Pan?34171
21 changes: 19 additions & 2 deletions tests/cmxl/statement_details.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,24 @@ processors:
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {transaction_details: '171?00SEPA LASTSCHRIFT KUNDE?10281?20EREF+TRX-0A4A47C3-F846-4729?21-8A1B-5DF620F?22MREF+CAC97D2144174318AC18D9?23BF815BD4FB?24CRED+DE98ZZZ09999999999?25SVWZ+FOO
data:
amount: !!python/object:mt940.models.Amount
amount: !!python/object/apply:decimal.Decimal ['-1.62']
currency: null
bank_reference: 025498557/000001
currency: null
customer_reference: 0000549855700010
date: !!python/object/apply:mt940.models.Date
- !!binary |
B94JAQ==
entry_date: !!python/object/apply:mt940.models.Date
- !!binary |
B94JAg==
extra_details: ''
funds_code: R
id: NTRF
status: D
transaction_details: 171?00SEPA LASTSCHRIFT KUNDE?10281?20EREF+TRX-0A4A47C3-F846-4729?21-8A1B-5DF620F?22MREF+CAC97D2144174318AC18D9?23BF815BD4FB?24CRED+DE98ZZZ09999999999?25SVWZ+FOO
TRX-0A4A47C3-F84?266-4729-8A1B-5DF620F?30HYVEDEMMXXX?31HUkkbbbsssskcccccccccccccccx?32Peter
Pan?34171'}
Pan?34171
transactions: *id001
7 changes: 2 additions & 5 deletions tests/cmxl/statement_number.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
&id001 !!python/object:mt940.models.Transactions
!!python/object:mt940.models.Transactions
data: {sequence_number: '001', statement_number: '00035'}
processors:
post_account_identification: []
Expand Down Expand Up @@ -39,7 +39,4 @@ processors:
pre_sum_debit_entries: []
pre_transaction_details: []
pre_transaction_reference_number: []
transactions:
- !!python/object:mt940.models.Transaction
data: {}
transactions: *id001
transactions: []

0 comments on commit ccb9f91

Please sign in to comment.