~therp-nl/banking-addons/6.1-dev-fixes_from_testing_iteration_1

« back to all changes in this revision

Viewing changes to account_banking_uk_hsbc/hsbc_mt940.py

  • Committer: James Jesudason
  • Date: 2012-03-07 23:02:52 UTC
  • Revision ID: james.jesudason@canonical.com-20120307230252-lr51g7f5yduvbpta
[FIX] Reset the account on the statement line when the reconciliation is disabled.
[ADD] Set the transaction type for HSBC statement import.

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#
23
23
 
24
24
from account_banking.parsers import models
25
 
from account_banking.parsers.convert import str2date
26
25
from tools.translate import _
27
26
from mt940_parser import HSBCParser
28
27
import re
 
28
import osv
 
29
import logging
29
30
 
30
31
bt = models.mem_bank_transaction
 
32
logger = logging.getLogger('hsbc_mt940')
31
33
 
32
34
def record2float(record, value):
33
35
    if record['creditmarker'][-1] == 'C':
46
48
    }
47
49
 
48
50
    type_map = {
49
 
        'TRF': bt.ORDER,
 
51
        'NTRF': bt.ORDER,
 
52
        'NMSC': bt.ORDER,
 
53
        'NPAY': bt.PAYMENT_BATCH,
 
54
        'NCHK': bt.CHECK,
50
55
    }
51
56
 
52
57
    def __init__(self, record, *args, **kwargs):
60
65
 
61
66
        self.transferred_amount = record2float(record, 'amount')
62
67
 
63
 
        #print record.get('bookingcode')
 
68
        # Set the transfer type based on the bookingcode
 
69
        if record.get('bookingcode','ignore') in self.type_map:
 
70
            self.transfer_type = self.type_map[record['bookingcode']]
 
71
        else:
 
72
            # Default to the generic order, so it will be eligible for matching
 
73
            self.transfer_type = bt.ORDER
 
74
 
64
75
        if not self.is_valid():
65
 
            print "Invalid: %s" % record
 
76
            logger.info("Invalid: %s", record)
66
77
    def is_valid(self):
67
78
        '''
68
79
        We don't have remote_account so override base
94
105
        def _transaction_info():
95
106
            self.transaction_info(record)
96
107
        def _not_used():
97
 
            print "Didn't use record: %s" % (record,)
 
108
            logger.info("Didn't use record: %s", record)
98
109
 
99
110
        rectypes = {
100
111
            '20' : _transmission_number,
121
132
 
122
133
        transaction = self.transactions[-1]
123
134
 
124
 
        transaction.reference = ','.join([record[k] for k in ['infoline{0}'.format(i) for i in range(1,5)] if record.has_key(k)])
 
135
        transaction.id = ','.join([record[k] for k in ['infoline{0}'.format(i) for i in range(2,5)] if record.has_key(k)])
125
136
 
126
137
def raise_error(message, line):
127
138
    raise osv.except_osv(_('Import error'),
153
164
            if stmnt.is_valid():
154
165
                result.append(stmnt)
155
166
            else:
156
 
                print "Invalid Statement:"
157
 
                print records[0]
158
 
 
 
167
                logger.info("Invalid Statement:")
 
168
                logger.info(records[0])
159
169
 
160
170
        return result
161
171