From 80a2bc963544955687f24b0be8a234ee0144abbd Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 10 Oct 2014 16:31:51 +0200 Subject: [PATCH] Allow the new bank statement reconciliation to search in transaction_ref Require https://github.com/odoo/odoo/pull/3025 to be merged to work! --- base_transaction_id/__init__.py | 1 + base_transaction_id/__openerp__.py | 2 + base_transaction_id/account_bank_statement.py | 61 +++++++++++++++++++ base_transaction_id/account_move.py | 19 ++++++ .../static/src/js/account_widgets.js | 11 ++++ .../views/base_transaction_id.xml | 11 ++++ 6 files changed, 105 insertions(+) create mode 100644 base_transaction_id/account_bank_statement.py create mode 100644 base_transaction_id/static/src/js/account_widgets.js create mode 100644 base_transaction_id/views/base_transaction_id.xml diff --git a/base_transaction_id/__init__.py b/base_transaction_id/__init__.py index ef5622e1..7241064a 100644 --- a/base_transaction_id/__init__.py +++ b/base_transaction_id/__init__.py @@ -23,3 +23,4 @@ from . import invoice from . import sale from . import stock from . import account_move +from . import account_bank_statement diff --git a/base_transaction_id/__openerp__.py b/base_transaction_id/__openerp__.py index a4656d43..0d091fd6 100644 --- a/base_transaction_id/__openerp__.py +++ b/base_transaction_id/__openerp__.py @@ -26,6 +26,7 @@ 'category': 'Hidden/Dependency', 'complexity': 'easy', 'depends': [ + 'account', 'stock_account', 'sale_stock', ], @@ -46,6 +47,7 @@ 'invoice_view.xml', 'sale_view.xml', 'account_move_line_view.xml', + 'views/base_transaction_id.xml', ], 'test': [], 'installable': True, diff --git a/base_transaction_id/account_bank_statement.py b/base_transaction_id/account_bank_statement.py new file mode 100644 index 00000000..e9d6346b --- /dev/null +++ b/base_transaction_id/account_bank_statement.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Author: Guewen Baconnier +# Copyright 2014 Camptocamp SA +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +from openerp.osv import orm + + +class account_bank_statement_line(orm.Model): + + _inherit = 'account.bank.statement.line' + + def _domain_move_lines_for_reconciliation(self, cr, uid, st_line, + excluded_ids=None, str=False, + additional_domain=None, + context=None): + _super = super(account_bank_statement_line, self) + _get_domain = _super._domain_move_lines_for_reconciliation + domain = _get_domain(cr, uid, st_line, excluded_ids=excluded_ids, + str=str, additional_domain=additional_domain, + context=context) + if not str and str != '/': + return domain + domain = domain[:] + domain.insert(-1, '|') + domain.append(('transaction_ref', 'ilike', str)) + return domain + + def _domain_reconciliation_proposition(self, cr, uid, st_line, + excluded_ids=None, context=None): + _super = super(account_bank_statement_line, self) + _get_domain = _super._domain_reconciliation_proposition + domain = _get_domain(cr, uid, st_line, excluded_ids=excluded_ids, + context=context) + new_domain = [] + for criterion in domain: + if len(criterion) == 3: + field, op, value = criterion + if (field, op) == ('ref', '='): + new_domain += [ + '|', + ('transaction_ref', '=', value), + ] + new_domain.append(criterion) + return new_domain diff --git a/base_transaction_id/account_move.py b/base_transaction_id/account_move.py index 2fd2e269..77b73366 100644 --- a/base_transaction_id/account_move.py +++ b/base_transaction_id/account_move.py @@ -35,3 +35,22 @@ class account_move_line(orm.Model): default['transaction_ref'] = False _super = super(account_move_line, self) return _super.copy_data(cr, uid, id, default=default, context=context) + + def prepare_move_lines_for_reconciliation_widget(self, cr, uid, lines, + target_currency=False, + target_date=False, + context=None): + _super = super(account_move_line, self) + prepare = _super.prepare_move_lines_for_reconciliation_widget + prepared_lines = [] + for line in lines: + # The super method loop over the lines and returns a list of + # prepared lines. Here we'll have 1 line per call to super. + # If we called super on the whole list, we would need to + # browse again the lines, or match the 'lines' vs + # 'prepared_lines' to update the transaction_ref. + vals = prepare(cr, uid, [line], target_currency=target_currency, + target_date=target_date, context=context)[0] + vals['transaction_ref'] = line.transaction_ref + prepared_lines.append(vals) + return prepared_lines diff --git a/base_transaction_id/static/src/js/account_widgets.js b/base_transaction_id/static/src/js/account_widgets.js new file mode 100644 index 00000000..277c9c2c --- /dev/null +++ b/base_transaction_id/static/src/js/account_widgets.js @@ -0,0 +1,11 @@ +openerp.base_transaction_id = function (instance) { + + instance.web.account.bankStatementReconciliationLine.include({ + decorateMoveLine: function(line, currency_id) { + this._super(line, currency_id); + if (line.transaction_ref) { + line.q_label += ' (' + line.transaction_ref + ')'; + } + }, + }); +}; diff --git a/base_transaction_id/views/base_transaction_id.xml b/base_transaction_id/views/base_transaction_id.xml new file mode 100644 index 00000000..a66a28bf --- /dev/null +++ b/base_transaction_id/views/base_transaction_id.xml @@ -0,0 +1,11 @@ + + + + + + +