[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) <qdp@openerp.com>
This commit is contained in:
wan
2019-03-28 15:25:41 +00:00
committed by qdp-odoo
parent 460e96c887
commit 0f8be0d75c
2 changed files with 17 additions and 0 deletions
+14
View File
@@ -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 "<a href='/web#id={}&model=res.partner' target='_blank'>{}</a>".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:
@@ -199,6 +199,9 @@
<field name="priority" eval="1"/>
<field name="arch" type="xml">
<form string="Partners">
<div class="alert alert-warning oe_edit_only" role="alert" attrs="{'invisible': [('same_vat_partner', '=', False)]}">
A partner with the same Tax ID already exists (<field name="same_vat_partner" widget="html" class="d-inline-block"/>), are you sure to create a new one?
</div>
<sheet>
<div class="oe_button_box" name="button_box">
<button name="toggle_active" type="object"