[IMP] partner_profiles: delete profiles when main partner deleted

When a main partner is unlinked, all the linked profiles (public
profile and position profiles) are deleted.
This commit is contained in:
Stéphan Sainléger
2023-03-22 23:25:11 +01:00
committed by Stéphan Sainléger
parent 6e227a83d4
commit 2e63b1216f
2 changed files with 12 additions and 2 deletions

View File

@@ -18,6 +18,7 @@ class res_partner(models.Model):
translate=False,
readonly=False,
)
contact_id = fields.Many2one(ondelete="cascade")
is_main_profile = fields.Boolean(compute="_compute_profile_booleans", store=True)
is_public_profile = fields.Boolean(compute="_compute_profile_booleans", store=True)
is_position_profile = fields.Boolean(
@@ -31,7 +32,6 @@ class res_partner(models.Model):
compute="_compute_public_profile_id",
string="Public profile",
store=True,
ondelete="cascade",
)
# If current partner is Main partner, this field indicates what its position profiles are.
@@ -117,6 +117,16 @@ class res_partner(models.Model):
res = super(res_partner, self).create(vals)
return res
@api.multi
def unlink(self):
for partner in self:
if partner.is_company:
# Delete position profiles linked to the company main profile
child_ids = self.env["res.partner"].search([("parent_id", "=", partner.id), ("is_position_profile", "=", True)])
for child in child_ids:
child.unlink()
return super(res_partner, self).unlink()
@api.model
def search_position_partners(self, profile):
if profile: