fix: Membership - allow system users to create membership for existing Members
diff --git a/erpnext/non_profit/doctype/membership/membership.py b/erpnext/non_profit/doctype/membership/membership.py
index db67905..98bee56 100644
--- a/erpnext/non_profit/doctype/membership/membership.py
+++ b/erpnext/non_profit/doctype/membership/membership.py
@@ -12,20 +12,21 @@
class Membership(Document):
def validate(self):
- member_name = frappe.get_value('Member', dict(email=frappe.session.user))
+ if not self.member or not frappe.db.exists("Member", self.member):
+ member_name = frappe.get_value('Member', dict(email=frappe.session.user))
- if not member_name:
- user = frappe.get_doc('User', frappe.session.user)
- member = frappe.get_doc(dict(
- doctype='Member',
- email=frappe.session.user,
- membership_type=self.membership_type,
- member_name=user.get_fullname()
- )).insert(ignore_permissions=True)
- member_name = member.name
+ if not member_name:
+ user = frappe.get_doc('User', frappe.session.user)
+ member = frappe.get_doc(dict(
+ doctype='Member',
+ email=frappe.session.user,
+ membership_type=self.membership_type,
+ member_name=user.get_fullname()
+ )).insert(ignore_permissions=True)
+ member_name = member.name
- if self.get("__islocal"):
- self.member = member_name
+ if self.get("__islocal"):
+ self.member = member_name
# get last membership (if active)
last_membership = erpnext.get_last_membership()