From b863b9cfedb3e7b4d1e3d409c829ffa0bfa1d9bb Mon Sep 17 00:00:00 2001 From: wan Date: Fri, 6 Nov 2020 14:49:32 +0000 Subject: [FIX] account: deduce sequence reset The order to find when to reset the sequence needs to be the following: * find a sequence used before the date of this move * if there isn't any, find the sequence of any move Because we were not looking at the second step for bank statements, we could have an issue since we were not checking the sequence relative to the correct date. closes odoo/odoo#61486 Signed-off-by: Laurent Smet --- addons/account/models/account_bank_statement.py | 6 +++++- addons/account/models/account_move.py | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'addons') diff --git a/addons/account/models/account_bank_statement.py b/addons/account/models/account_bank_statement.py index 3f620eed143..e3726860b71 100644 --- a/addons/account/models/account_bank_statement.py +++ b/addons/account/models/account_bank_statement.py @@ -460,8 +460,12 @@ class AccountBankStatement(models.Model): where_string = "WHERE journal_id = %(journal_id)s AND name != '/'" param = {'journal_id': self.journal_id.id} - sequence_number_reset = self._deduce_sequence_number_reset(self.search([('date', '<', self.date)], order='date desc', limit=1).name) if not relaxed: + domain = [('journal_id', '=', self.journal_id.id), ('id', '!=', self.id or self._origin.id), ('name', '!=', False)] + previous_name = self.search(domain + [('date', '<', self.date)], order='date desc', limit=1).name + if not previous_name: + previous_name = self.search(domain, order='date desc', limit=1).name + sequence_number_reset = self._deduce_sequence_number_reset(previous_name) if sequence_number_reset == 'year': where_string += " AND date_trunc('year', date) = date_trunc('year', %(date)s) " param['date'] = self.date diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 85f5349fc02..441e1c46713 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -1126,8 +1126,10 @@ class AccountMove(models.Model): if not relaxed: domain = [('journal_id', '=', self.journal_id.id), ('id', '!=', self.id or self._origin.id), ('name', 'not in', ('/', False))] - reference_move = self.search(domain + [('date', '<=', self.date)], order='date desc', limit=1) or self.search(domain, order='date asc', limit=1) - sequence_number_reset = self._deduce_sequence_number_reset(reference_move.name) + reference_move_name = self.search(domain + [('date', '<=', self.date)], order='date desc', limit=1).name + if not reference_move_name: + reference_move_name = self.search(domain, order='date asc', limit=1).name + sequence_number_reset = self._deduce_sequence_number_reset(reference_move_name) if sequence_number_reset == 'year': where_string += " AND date_trunc('year', date::timestamp without time zone) = date_trunc('year', %(date)s) " param['date'] = self.date -- cgit v1.2.3