From 76824f53a29d625b0569410aec0efd1bea994c40 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Wed, 26 Apr 2017 14:53:46 +0200 Subject: [PATCH] [FIX] base: Sequences in multicompany The sequence set by function next_by_code for a company must be either defined for this company or witn company specified on it. In the other cases, the sequence "NEW" is used. With courtesy of @odony opw:728554 --- odoo/addons/base/ir/ir_sequence.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/odoo/addons/base/ir/ir_sequence.py b/odoo/addons/base/ir/ir_sequence.py index e3c9740cb62..a46f5e95eca 100644 --- a/odoo/addons/base/ir/ir_sequence.py +++ b/odoo/addons/base/ir/ir_sequence.py @@ -245,16 +245,14 @@ class IrSequence(models.Model): specific company will get higher priority. """ self.check_access_rights('read') - company_ids = self.env['res.company'].search([]).ids + [False] - seq_ids = self.search(['&', ('code', '=', sequence_code), ('company_id', 'in', company_ids)]) - if not seq_ids: - _logger.debug("No ir.sequence has been found for code '%s'. Please make sure a sequence is set for current company." % sequence_code) - return False force_company = self._context.get('force_company') if not force_company: force_company = self.env.user.company_id.id - preferred_sequences = [s for s in seq_ids if s.company_id and s.company_id.id == force_company] - seq_id = preferred_sequences[0] if preferred_sequences else seq_ids[0] + seq_ids = self.search([('code', '=', sequence_code), ('company_id', 'in', [force_company, False])], order='company_id') + if not seq_ids: + _logger.debug("No ir.sequence has been found for code '%s'. Please make sure a sequence is set for current company." % sequence_code) + return False + seq_id = seq_ids[0] return seq_id._next() @api.model