From 9f446463e6db3e5b23ace65cd251b1df5e1c2751 Mon Sep 17 00:00:00 2001 From: Irving Daniel Reyes Elizondo Date: Tue, 2 Dec 2025 04:03:18 +0000 Subject: [PATCH] [IMP] base: allow configure if src partners are deleted or archived after merge Currently, the source partners used in mergings are deleted, this change allows to configure if the partners are going to be deleted or archived. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: PATCH USE --- odoo/addons/base/wizard/base_partner_merge.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/odoo/addons/base/wizard/base_partner_merge.py b/odoo/addons/base/wizard/base_partner_merge.py index c1c1cad6773d3a..ace3210fefc467 100644 --- a/odoo/addons/base/wizard/base_partner_merge.py +++ b/odoo/addons/base/wizard/base_partner_merge.py @@ -11,7 +11,7 @@ from odoo import api, fields, models, Command from odoo import _ from odoo.exceptions import ValidationError, UserError -from odoo.tools import mute_logger, SQL +from odoo.tools import mute_logger, SQL, str2bool _logger = logging.getLogger('odoo.addons.base.partner.merge') @@ -440,8 +440,12 @@ def _merge(self, partner_ids, dst_partner=None, extra_checks=True): self._log_merge_operation(src_partners, dst_partner) - # delete source partner, since they are merged - src_partners.unlink() + # check parameter to determine if the source partner should be deleted or archived + archive_src_partners = str2bool(self.env["ir.config_parameter"].sudo().get_param("base.archive_merged_src_partners")) + if archive_src_partners: + src_partners.write({src_partners._active_name: False}) + else: + src_partners.unlink() def _log_merge_operation(self, src_partners, dst_partner): _logger.info('(uid = %s) merged the partners %r with %s', self._uid, src_partners.ids, dst_partner.id)