diff --git a/odoo/addons/base/wizard/base_partner_merge.py b/odoo/addons/base/wizard/base_partner_merge.py index 424a731492c..85df8df4506 100644 --- a/odoo/addons/base/wizard/base_partner_merge.py +++ b/odoo/addons/base/wizard/base_partner_merge.py @@ -66,7 +66,7 @@ class MergePartnerAutomatic(models.TransientModel): number_group = fields.Integer('Group of Contacts', readonly=True) current_line_id = fields.Many2one('base.partner.merge.line', string='Current Line') line_ids = fields.One2many('base.partner.merge.line', 'wizard_id', string='Lines') - partner_ids = fields.Many2many('res.partner', string='Contacts') + partner_ids = fields.Many2many('res.partner', string='Contacts', context={'active_test': False}) dst_partner_id = fields.Many2one('res.partner', string='Destination Contact') exclude_contact = fields.Boolean('A user associated to the contact') @@ -429,7 +429,7 @@ class MergePartnerAutomatic(models.TransientModel): :param partner_ids : list of partner ids to sort """ return self.env['res.partner'].browse(partner_ids).sorted( - key=lambda p: (p.active, (p.create_date or datetime.datetime(1970, 1, 1))), + key=lambda p: (not p.active, (p.create_date or datetime.datetime(1970, 1, 1))), reverse=True, ) diff --git a/odoo/addons/test_new_api/tests/test_one2many.py b/odoo/addons/test_new_api/tests/test_one2many.py index 8dfa81c18b6..5b05038eebe 100644 --- a/odoo/addons/test_new_api/tests/test_one2many.py +++ b/odoo/addons/test_new_api/tests/test_one2many.py @@ -169,6 +169,25 @@ class One2manyCase(TransactionCase): self.assertTrue(model2.exists()) self.assertEqual(model2.pArTneR_321_id, p1) + def test_merge_partner_archived(self): + partner = self.env['res.partner'] + + p1 = partner.create({'name': 'test1'}) + p2 = partner.create({'name': 'test2'}) + p3 = partner.create({'name': 'test3', 'active': False}) + partners_ids = (p1 + p2 + p3) + + wizard = self.env['base.partner.merge.automatic.wizard'].with_context(active_ids=partners_ids.ids, active_model='res.partner').create({}) + + self.assertEqual(wizard.partner_ids, partners_ids) + self.assertEqual(wizard.dst_partner_id, p2) + + wizard.action_merge() + + self.assertFalse(p1.exists()) + self.assertTrue(p2.exists()) + self.assertFalse(p3.exists()) + def test_cache_invalidation(self): """ Cache invalidation for one2many with integer inverse. """ record0 = self.env['test_new_api.attachment.host'].create({})