Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion partner_contact_address_default/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"name": "Partner Contact address default",
"summary": "Set a default delivery address, "
"invoice address and contact for contacts",
"version": "19.0.2.0.0",
"version": "19.0.2.0.1",
"development_status": "Beta",
"category": "Generic Modules/Base",
"website": "https://github.com/OCA/partner-contact",
Expand Down
23 changes: 15 additions & 8 deletions partner_contact_address_default/models/res_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,20 @@ def address_get(self, adr_pref=None):
def write(self, vals):
"""We want to prevent archived contacts as default addresses"""
if vals.get("active") is False:
self.search([("partner_delivery_id", "in", self.ids)]).write(
{"partner_delivery_id": False}
)
self.search([("partner_invoice_id", "in", self.ids)]).write(
{"partner_invoice_id": False}
)
self.search([("partner_contact_id", "in", self.ids)]).write(
{"partner_contact_id": False}
parents_delivery = self.search([("partner_delivery_id", "in", self.ids)])
parents_invoice = self.search([("partner_invoice_id", "in", self.ids)])
parents_contact = self.search([("partner_contact_id", "in", self.ids)])
parents_delivery.write({"partner_delivery_id": False})
parents_invoice.write({"partner_invoice_id": False})
parents_contact.write({"partner_contact_id": False})
# Invalidate cache on parent partners so that stale values
# are not returned by address_get in multi-module contexts
all_parents = parents_delivery | parents_invoice | parents_contact
all_parents.invalidate_recordset(
fnames=[
"partner_delivery_id",
"partner_invoice_id",
"partner_contact_id",
]
)
return super().write(vals)
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,15 @@ def test_contact_address_archived(self):
self.assertEqual(res["invoice"], self.partner.id)
self.assertEqual(res["contact"], self.partner.id)

def test_contact_address_archived_cache(self):
self.partner.partner_delivery_id = self.partner_child_delivery2
# Prime the cache by reading the field before archiving the child
_ = self.partner.partner_delivery_id.id
self.partner_child_delivery2.write({"active": False})
res = self.partner.address_get(["delivery"])
# Ensure no stale cached id from the archived child is returned
self.assertEqual(res["delivery"], self.partner_child_delivery1.id)

def test_partner_domains(self):
self.partner._compute_partner_domains()
expected_base = [("id", "child_of", self.partner.commercial_partner_id.ids)]
Expand Down
Loading