feat: update expiry for memberships
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index a2d9d86..f7ec1c1 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -341,7 +341,8 @@
"erpnext.selling.doctype.quotation.quotation.set_expired_status",
"erpnext.healthcare.doctype.patient_appointment.patient_appointment.update_appointment_status",
"erpnext.buying.doctype.supplier_quotation.supplier_quotation.set_expired_status",
- "erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts.send_auto_email"
+ "erpnext.accounts.doctype.process_statement_of_accounts.process_statement_of_accounts.send_auto_email",
+ "erpnext.non_profit.doctype.membership.membership.set_expired_status"
],
"daily_long": [
"erpnext.setup.doctype.email_digest.email_digest.send",
diff --git a/erpnext/non_profit/doctype/membership/membership.json b/erpnext/non_profit/doctype/membership/membership.json
index 7f21896..6da053f 100644
--- a/erpnext/non_profit/doctype/membership/membership.json
+++ b/erpnext/non_profit/doctype/membership/membership.json
@@ -7,6 +7,7 @@
"engine": "InnoDB",
"field_order": [
"member",
+ "member_name",
"membership_type",
"column_break_3",
"membership_status",
@@ -46,6 +47,8 @@
{
"fieldname": "membership_status",
"fieldtype": "Select",
+ "in_list_view": 1,
+ "in_standard_filter": 1,
"label": "Membership Status",
"options": "New\nCurrent\nExpired\nPending\nCancelled"
},
@@ -122,11 +125,18 @@
"fieldtype": "Link",
"label": "Invoice",
"options": "Sales Invoice"
+ },
+ {
+ "fetch_from": "member.member_name",
+ "fieldname": "member_name",
+ "fieldtype": "Data",
+ "label": "Member Name",
+ "read_only": 1
}
],
"index_web_pages_for_search": 1,
"links": [],
- "modified": "2020-09-19 14:28:11.532696",
+ "modified": "2021-01-21 16:31:20.032656",
"modified_by": "Administrator",
"module": "Non Profit",
"name": "Membership",
@@ -158,7 +168,9 @@
}
],
"restrict_to_domain": "Non Profit",
+ "search_fields": "member, member_name",
"sort_field": "modified",
"sort_order": "DESC",
+ "title_field": "member_name",
"track_changes": 1
-}
+}
\ No newline at end of file
diff --git a/erpnext/non_profit/doctype/membership/membership.py b/erpnext/non_profit/doctype/membership/membership.py
index c58e35a..c113b80 100644
--- a/erpnext/non_profit/doctype/membership/membership.py
+++ b/erpnext/non_profit/doctype/membership/membership.py
@@ -308,3 +308,12 @@
return plan[0]["name"]
except:
return None
+
+
+def set_expired_status():
+ frappe.db.sql("""
+ UPDATE
+ `tabMembership` SET `status` = 'Expired'
+ WHERE
+ `status` not in ('Cancelled') AND `to_date` < %s
+ """, (nowdate()))
\ No newline at end of file
diff --git a/erpnext/non_profit/doctype/membership/membership_list.js b/erpnext/non_profit/doctype/membership/membership_list.js
new file mode 100644
index 0000000..a959159
--- /dev/null
+++ b/erpnext/non_profit/doctype/membership/membership_list.js
@@ -0,0 +1,15 @@
+frappe.listview_settings['Membership'] = {
+ get_indicator: function(doc) {
+ if (doc.membership_status == 'New') {
+ return [__('New'), 'blue', 'membership_status,=,New'];
+ } else if (doc.membership_status === 'Current') {
+ return [__('Current'), 'green', 'membership_status,=,Current'];
+ } else if (doc.membership_status === 'Pending') {
+ return [__('Pending'), 'yellow', 'membership_status,=,Pending'];
+ } else if (doc.membership_status === 'Expired') {
+ return [__('Expired'), 'grey', 'membership_status,=,Expired'];
+ } else {
+ return [__('Cancelled'), 'red', 'membership_status,=,Cancelled'];
+ }
+ }
+};