fix: set_primary and set_primary_email bug (#12299)

* fix: set_primary and set_primary_email bug

When user untick the `is_primary_phone` or `is_primary_mobile` from the contact numbers table, we should reset the phone, mobile number etc.
Same goes for the email address table.

* Update frappe/contacts/doctype/contact/contact.py

fix variable naming as suggested

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>

* Update frappe/contacts/doctype/contact/contact.py

fix variable naming as suggested

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>

* Update frappe/contacts/doctype/contact/contact.py

fix variable naming as suggested

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>

* Update frappe/contacts/doctype/contact/contact.py

fix variable naming as suggested

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>

* Update frappe/contacts/doctype/contact/contact.py

fix variable naming as suggested

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>

* Update frappe/contacts/doctype/contact/contact.py

fix variable naming as suggested

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>

* test: Set empty string instead of none for number

Co-authored-by: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com>
Co-authored-by: Suraj Shetty <surajshetty3416@gmail.com>
This commit is contained in:
Andy Zhu 2021-03-10 18:02:50 +13:00 committed by GitHub
parent 5e6283f33d
commit 138c7841c2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View file

@ -97,11 +97,16 @@ class Contact(Document):
if len([email.email_id for email in self.email_ids if email.is_primary]) > 1:
frappe.throw(_("Only one {0} can be set as primary.").format(frappe.bold("Email ID")))
primary_email_exists = False
for d in self.email_ids:
if d.is_primary == 1:
primary_email_exists = True
self.email_id = d.email_id.strip()
break
if not primary_email_exists:
self.email_id = ""
def set_primary(self, fieldname):
# Used to set primary mobile and phone no.
if len(self.phone_nos) == 0:
@ -115,11 +120,16 @@ class Contact(Document):
if len(is_primary) > 1:
frappe.throw(_("Only one {0} can be set as primary.").format(frappe.bold(frappe.unscrub(fieldname))))
primary_number_exists = False
for d in self.phone_nos:
if d.get(field_name) == 1:
primary_number_exists = True
setattr(self, fieldname, d.phone)
break
if not primary_number_exists:
setattr(self, fieldname, "")
def get_default_contact(doctype, name):
'''Returns default contact for the given doctype, name'''
out = frappe.db.sql('''select parent,

View file

@ -103,7 +103,7 @@ class TestAddressesAndContacts(unittest.TestCase):
create_linked_contact(links_list, d)
report_data = get_data({"reference_doctype": "Test Custom Doctype"})
for idx, link in enumerate(links_list):
test_item = [link, 'test address line 1', 'test address line 2', 'Milan', None, None, 'Italy', 0, '_Test First Name', '_Test Last Name', '_Test Address-Billing', '+91 0000000000', None, 'test_contact@example.com', 1]
test_item = [link, 'test address line 1', 'test address line 2', 'Milan', None, None, 'Italy', 0, '_Test First Name', '_Test Last Name', '_Test Address-Billing', '+91 0000000000', '', 'test_contact@example.com', 1]
self.assertListEqual(test_item, report_data[idx])
def tearDown(self):