From 1a919773d795f607142992fc4a373d5ab9d2e725 Mon Sep 17 00:00:00 2001 From: Brian Pond Date: Wed, 25 Aug 2021 23:27:28 -0700 Subject: [PATCH] fix: Customers 'primary_address' not updated automatically (#26798) (#26799) * Fix for Issue #26798 This PR is a fix for GitHub Issue 26798: https://github.com/frappe/erpnext/issues/26798 TLDR: When an Address is updated, and that Address is a Customer's Primary Address, update the Read Only field `customer.primary_address` * Update address.py Co-authored-by: Deepesh Garg <42651287+deepeshgarg007@users.noreply.github.com> --- erpnext/accounts/custom/address.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/custom/address.py b/erpnext/accounts/custom/address.py index c417a493c6..834227bb58 100644 --- a/erpnext/accounts/custom/address.py +++ b/erpnext/accounts/custom/address.py @@ -1,7 +1,7 @@ import frappe from frappe import _ from frappe.contacts.doctype.address.address import Address -from frappe.contacts.doctype.address.address import get_address_templates +from frappe.contacts.doctype.address.address import get_address_templates, get_address_display class ERPNextAddress(Address): def validate(self): @@ -22,6 +22,16 @@ class ERPNextAddress(Address): frappe.throw(_("Address needs to be linked to a Company. Please add a row for Company in the Links table."), title=_("Company Not Linked")) + def on_update(self): + """ + After Address is updated, update the related 'Primary Address' on Customer. + """ + address_display = get_address_display(self.as_dict()) + filters = { "customer_primary_address": self.name } + customers = frappe.db.get_all("Customer", filters=filters, as_list=True) + for customer_name in customers: + frappe.db.set_value("Customer", customer_name[0], "primary_address", address_display) + @frappe.whitelist() def get_shipping_address(company, address = None): filters = [