From 0f8be0d75cbcff418fe904c663b3d18262056d91 Mon Sep 17 00:00:00 2001 From: wan Date: Tue, 5 Mar 2019 13:29:02 +0000 Subject: [PATCH] [IMP] base: warn when duplicating VAT number Task 1942984 Add a warning to alert for partner duplicates based on VAT number When we create a new partner with an existing vat number, on change from vat number --> trigger a warning, closes odoo/odoo#31597 Signed-off-by: Quentin De Paoli (qdp) --- odoo/addons/base/models/res_partner.py | 14 ++++++++++++++ odoo/addons/base/views/res_partner_views.xml | 3 +++ 2 files changed, 17 insertions(+) diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index bffac385a87..603fbd6c4d2 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -162,6 +162,7 @@ class Partner(models.Model): user_id = fields.Many2one('res.users', string='Salesperson', help='The internal user in charge of this contact.') vat = fields.Char(string='Tax ID', help="The Tax Identification Number. Complete it if the contact is subjected to government taxes. Used in some legal statements.") + same_vat_partner = fields.Html(string='Partner with same TIN', compute='_compute_same_vat_partner', store=False) # this needs to be a html and not a m2o because the link needs to be created for unexisting records and the framework doenst manage that bank_ids = fields.One2many('res.partner.bank', 'partner_id', string='Banks') website = fields.Char('Website Link') comment = fields.Text(string='Notes') @@ -261,6 +262,19 @@ class Partner(models.Model): for partner in self: partner.partner_share = not partner.user_ids or not any(not user.share for user in partner.user_ids) + @api.depends('vat') + def _compute_same_vat_partner(self): + for partner in self: + partner_id = partner.id + if isinstance(partner_id, models.NewId): + # deal with onchange(), which is always called on a single record + partner_id = self._origin.id + domain = [('vat', '=', partner.vat)] + if partner_id: + domain += [('id', '!=', partner_id), '!', ('id', 'child_of', partner_id)] + same_vat_partner = self.env['res.partner'].search(domain, limit=1) + partner.same_vat_partner = partner.vat and not partner.parent_id and same_vat_partner and "{}".format(same_vat_partner.id, same_vat_partner.name) or False + @api.depends(lambda self: self._display_address_depends()) def _compute_contact_address(self): for partner in self: diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml index aca476cb0e9..ff7f6a37c8f 100644 --- a/odoo/addons/base/views/res_partner_views.xml +++ b/odoo/addons/base/views/res_partner_views.xml @@ -199,6 +199,9 @@
+