From c9779f3326086d3b8c22ba4624183fa9390db906 Mon Sep 17 00:00:00 2001 From: Matthieu Dietrich Date: Tue, 17 Jun 2014 18:10:35 +0200 Subject: [PATCH] [FIX] optimize new rule --- .../__init__.py | 4 +- .../advanced_reconciliation.py | 39 ++++++++++++---- .../base_advanced_reconciliation.py | 46 ------------------- 3 files changed, 31 insertions(+), 58 deletions(-) delete mode 100644 account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py diff --git a/account_advanced_reconcile_bank_statement/__init__.py b/account_advanced_reconcile_bank_statement/__init__.py index e70aef22..748698d3 100644 --- a/account_advanced_reconcile_bank_statement/__init__.py +++ b/account_advanced_reconcile_bank_statement/__init__.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Author: Matthieu Dietrich -# Copyright 2014 Camptocamp SA +# Author: Romain Deheele. Copyright 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 @@ -20,5 +19,4 @@ ############################################################################## from . import easy_reconcile -from . import base_advanced_reconciliation from . import advanced_reconciliation diff --git a/account_advanced_reconcile_bank_statement/advanced_reconciliation.py b/account_advanced_reconcile_bank_statement/advanced_reconciliation.py index 65218454..dd44bc6b 100644 --- a/account_advanced_reconcile_bank_statement/advanced_reconciliation.py +++ b/account_advanced_reconcile_bank_statement/advanced_reconciliation.py @@ -1,8 +1,7 @@ # -*- coding: utf-8 -*- ############################################################################## # -# Author: Matthieu Dietrich -# Copyright 2014 Camptocamp SA +# Author: Matthieu Dietrich. Copyright 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 @@ -27,6 +26,33 @@ class easy_reconcile_advanced_bank_statement(orm.TransientModel): _name = 'easy.reconcile.advanced.bank_statement' _inherit = 'easy.reconcile.advanced' + def _base_columns(self, rec): + """ Mandatory columns for move lines queries + An extra column aliased as ``key`` should be defined + in each query.""" + aml_cols = ( + 'id', + 'debit', + 'credit', + 'date', + 'period_id', + 'ref', + 'name', + 'partner_id', + 'account_id', + 'move_id', + 'statement_id') + result = ["account_move_line.%s" % col for col in aml_cols] + result += ["account_bank_statement.name as statement_name"] + return result + + def _from(self, rec, *args, **kwargs): + # Overriden to use a inner join + return """FROM account_move_line + INNER JOIN account_bank_statement + ON account_bank_statement.id = + account_move_line.statement_id""" + def _skip_line(self, cr, uid, rec, move_line, context=None): """ When True is returned on some conditions, the credit move line @@ -42,13 +68,8 @@ class easy_reconcile_advanced_bank_statement(orm.TransientModel): def _opposite_matchers(self, cr, uid, rec, move_line, context=None): yield ('partner_id', move_line['partner_id']) - if move_line['statement_id']: - cr.execute("""SELECT name FROM account_bank_statement - WHERE id = %s""", (move_line['statement_id'],)) - statement_name = cr.fetchone()[0] - yield ('ref', statement_name.lower().strip()) - else: - yield ('ref', '') + yield ('ref', + (move_line['statement_name'] or '').lower().strip()) # Re-defined for this particular rule; since the commission line is a # credit line inside of the target statement, it should also be considered diff --git a/account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py b/account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py deleted file mode 100644 index afcece18..00000000 --- a/account_advanced_reconcile_bank_statement/base_advanced_reconciliation.py +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# Author: Matthieu Dietrich -# 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 itertools import product -from openerp.osv import orm - - -class easy_reconcile_advanced(orm.AbstractModel): - - _inherit = 'easy.reconcile.advanced' - - def _base_columns(self, rec): - """ Mandatory columns for move lines queries - An extra column aliased as ``key`` should be defined - in each query.""" - aml_cols = ( - 'id', - 'debit', - 'credit', - 'date', - 'period_id', - 'ref', - 'name', - 'partner_id', - 'account_id', - 'move_id', - 'statement_id') - return ["account_move_line.%s" % col for col in aml_cols]