Merge lp:~therp-nl/banking-addons/6.1-lp1066826-matching_wizard_on_manual_statements into lp:banking-addons/6.1

Proposed by Stefan Rijnhart (Opener)
Status: Merged
Merged at revision: 145
Proposed branch: lp:~therp-nl/banking-addons/6.1-lp1066826-matching_wizard_on_manual_statements
Merge into: lp:banking-addons/6.1
Diff against target: 113 lines (+65/-4)
2 files modified
account_banking/banking_import_transaction.py (+53/-4)
account_banking/wizard/banking_transaction_wizard.py (+12/-0)
To merge this branch: bzr merge lp:~therp-nl/banking-addons/6.1-lp1066826-matching_wizard_on_manual_statements
Reviewer Review Type Date Requested Status
Guewen Baconnier @ Camptocamp Approve
Review via email: mp+137400@code.launchpad.net
To post a comment you must log in.
142. By Stefan Rijnhart (Opener)

[FIX] Check for context is None

Revision history for this message
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote :

Hi,

One error here:
70 + if context = None:
Should be: if context is None

The rest seems fine to me.

143. By Stefan Rijnhart (Opener)

[FIX] Fix context comparison with None

Revision history for this message
Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote :

Looks good to me

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'account_banking/banking_import_transaction.py'
2--- account_banking/banking_import_transaction.py 2012-05-07 11:38:26 +0000
3+++ account_banking/banking_import_transaction.py 2012-12-10 09:35:23 +0000
4@@ -606,7 +606,7 @@
5 payment_line_obj.write(
6 cr, uid, transaction.payment_line_id.id, {
7 'export_state': 'done',
8- 'date_done': transaction.effective_date,
9+ 'date_done': transaction.statement_line_id.date,
10 }
11 )
12 self._confirm_move(cr, uid, transaction_id, context=context)
13@@ -961,9 +961,14 @@
14 ]
15
16 def create(self, cr, uid, vals, context=None):
17+ """
18+ Search for duplicates of the newly created transaction
19+ and mark them as such unless a context key
20+ 'transaction_no_duplicate_search' is defined and true.
21+ """
22 res = super(banking_import_transaction, self).create(
23 cr, uid, vals, context)
24- if res:
25+ if res and not context.get('transaction_no_duplicate_search'):
26 me = self.browse(cr, uid, res, context)
27 search_vals = [(key, '=', me[key])
28 for key in self.signal_duplicate_keys]
29@@ -1556,8 +1561,16 @@
30
31 if transaction.move_line_id:
32 move_line_amount = transaction.move_line_id.amount_residual_currency
33- to_curr_id = transaction.statement_id.journal_id.currency and transaction.statement_id.journal_id.currency.id or transaction.statement_line_id.statement_id.company_id.currency_id.id
34- from_curr_id = transaction.move_line_id.currency_id and transaction.move_line_id.currency_id.id or transaction.statement_id.company_id.currency_id.id
35+ to_curr_id = (
36+ transaction.statement_line_id.statement_id.journal_id.currency
37+ and transaction.statement_line_id.statement_id.journal_id.currency.id
38+ or transaction.statement_line_id.statement_id.company_id.currency_id.id
39+ )
40+ from_curr_id = (
41+ transaction.move_line_id.currency_id
42+ and transaction.move_line_id.currency_id.id
43+ or transaction.statement_line_id.statement_id.company_id.currency_id.id
44+ )
45 if from_curr_id != to_curr_id:
46 amount_currency = stline_pool._convert_currency(cr, uid, from_curr_id, to_curr_id, move_line_amount, round=True,
47 date=time.strftime('%Y-%m-%d'), context=context)
48@@ -1871,6 +1884,42 @@
49 return super(account_bank_statement_line, self).unlink(
50 cr, uid, ids, context=context)
51
52+ def create_instant_transaction(
53+ self, cr, uid, ids, context=None):
54+ """
55+ Check for existance of import transaction on the
56+ bank statement lines. Create instant items if appropriate.
57+
58+ This way, the matching wizard works on manually
59+ encoded statements.
60+
61+ The transaction is only filled with the most basic
62+ information. The use of the transaction at this point
63+ is rather to store matching data rather than to
64+ provide data about the transaction which have all been
65+ transferred to the bank statement line.
66+ """
67+ import_transaction_pool = self.pool.get('banking.import.transaction')
68+ if ids and isinstance(ids, (int, long)):
69+ ids = [ids]
70+ if context is None:
71+ context = {}
72+ localcontext = context.copy()
73+ localcontext['transaction_no_duplicate_search'] = True
74+ for line in self.browse(
75+ cr, uid, ids, context=context):
76+ if line.state != 'confirmed' and not line.import_transaction_id:
77+ res = import_transaction_pool.create(
78+ cr, uid, {
79+ 'company_id': line.statement_id.company_id.id,
80+ 'statement_line_id': line.id,
81+ },
82+ context=localcontext)
83+ self.write(
84+ cr, uid, line.id, {
85+ 'import_transaction_id': res},
86+ context=context)
87+
88 account_bank_statement_line()
89
90 class account_bank_statement(osv.osv):
91
92=== modified file 'account_banking/wizard/banking_transaction_wizard.py'
93--- account_banking/wizard/banking_transaction_wizard.py 2012-05-02 09:29:06 +0000
94+++ account_banking/wizard/banking_transaction_wizard.py 2012-12-10 09:35:23 +0000
95@@ -35,6 +35,18 @@
96 _name = 'banking.transaction.wizard'
97 _description = 'Match transaction'
98
99+ def create(self, cr, uid, vals, context=None):
100+ """
101+ Make sure that the statement line has an import transaction
102+ """
103+ res = super(banking_transaction_wizard, self).create(
104+ cr, uid, vals, context=context)
105+ if res and vals.get('statement_line_id'):
106+ line_pool = self.pool.get('account.bank.statement.line')
107+ line_pool.create_instant_transaction(
108+ cr, uid, vals['statement_line_id'], context=context)
109+ return res
110+
111 def create_act_window(self, cr, uid, ids, nodestroy=True, context=None):
112 """
113 Return a popup window for this model

Subscribers

People subscribed via source and target branches