From c4a1f50e50ac0bdbd858db640d0d76b02ffc3944 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 18 Jul 2014 15:59:19 +0200 Subject: [PATCH 1/3] Reconcile optimization: avoid to do a partial reconcile if it was already reconciled with the same lines Before this optimization, the same partial reconciliation were created at each run of the automatic reconcile. --- account_easy_reconcile/base_reconciliation.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/account_easy_reconcile/base_reconciliation.py b/account_easy_reconcile/base_reconciliation.py index 6145720a..7920a242 100644 --- a/account_easy_reconcile/base_reconciliation.py +++ b/account_easy_reconcile/base_reconciliation.py @@ -71,6 +71,7 @@ class EasyReconcileBase(orm.AbstractModel): 'name', 'partner_id', 'account_id', + 'reconcile_partial_id', 'move_id') return ["account_move_line.%s" % col for col in aml_cols] @@ -195,6 +196,19 @@ class EasyReconcileBase(orm.AbstractModel): context=rec_ctx) return True, True elif allow_partial: + # Check if the group of move lines was already partially + # reconciled and if all the lines were the same, in such + # case, just skip the group and consider it as partially + # reconciled (no change). + existing_partial_id = lines[0]['reconcile_partial_id'] + if existing_partial_id: + partial_line_ids = set(ml_obj.search( + cr, uid, + [('reconcile_partial_id', '=', existing_partial_id)], + context=context)) + if set(line_ids) == partial_line_ids: + return True, False + ml_obj.reconcile_partial( cr, uid, line_ids, From b5e62298ae7d4b6f6ebbb9a0f4ba01d3ffa7f5b6 Mon Sep 17 00:00:00 2001 From: Matthieu Dietrich Date: Mon, 21 Jul 2014 12:08:34 +0200 Subject: [PATCH 2/3] [FIX] added check for size before list access + corrected base columns for transaction ref --- .../base_advanced_reconciliation.py | 18 +++++------------- account_easy_reconcile/base_reconciliation.py | 17 +++++++++-------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py b/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py index c5feb2ac..e3f9e37a 100644 --- a/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py +++ b/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py @@ -30,16 +30,8 @@ class EasyReconcileAdvanced(orm.AbstractModel): """ 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', - 'transaction_ref') - return ["account_move_line.%s" % col for col in aml_cols] + aml_cols = super(easy_reconcile_advanced, self).\ + _base_columns(rec) + aml_cols += ['account_move_line.transaction_ref'] + return aml_cols + diff --git a/account_easy_reconcile/base_reconciliation.py b/account_easy_reconcile/base_reconciliation.py index 7920a242..9aeb6d44 100644 --- a/account_easy_reconcile/base_reconciliation.py +++ b/account_easy_reconcile/base_reconciliation.py @@ -200,14 +200,15 @@ class EasyReconcileBase(orm.AbstractModel): # reconciled and if all the lines were the same, in such # case, just skip the group and consider it as partially # reconciled (no change). - existing_partial_id = lines[0]['reconcile_partial_id'] - if existing_partial_id: - partial_line_ids = set(ml_obj.search( - cr, uid, - [('reconcile_partial_id', '=', existing_partial_id)], - context=context)) - if set(line_ids) == partial_line_ids: - return True, False + if lines: + existing_partial_id = lines[0]['reconcile_partial_id'] + if existing_partial_id: + partial_line_ids = set(ml_obj.search( + cr, uid, + [('reconcile_partial_id', '=', existing_partial_id)], + context=context)) + if set(line_ids) == partial_line_ids: + return True, False ml_obj.reconcile_partial( cr, uid, From 7f76d5a6d3b760bb6d33a0caef46ad8705116c2a Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 22 Aug 2014 16:19:24 +0200 Subject: [PATCH 3/3] Slightly improved styling --- .../base_advanced_reconciliation.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py b/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py index e3f9e37a..240df83d 100644 --- a/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py +++ b/account_advanced_reconcile_transaction_ref/base_advanced_reconciliation.py @@ -30,8 +30,6 @@ class EasyReconcileAdvanced(orm.AbstractModel): """ Mandatory columns for move lines queries An extra column aliased as ``key`` should be defined in each query.""" - aml_cols = super(easy_reconcile_advanced, self).\ - _base_columns(rec) - aml_cols += ['account_move_line.transaction_ref'] + aml_cols = super(EasyReconcileAdvanced, self)._base_columns(rec) + aml_cols.append('account_move_line.transaction_ref') return aml_cols -