feat: add custom buttons for invoice and email
diff --git a/erpnext/non_profit/doctype/membership/membership.js b/erpnext/non_profit/doctype/membership/membership.js
index 554549a..8408a6a 100644
--- a/erpnext/non_profit/doctype/membership/membership.js
+++ b/erpnext/non_profit/doctype/membership/membership.js
@@ -8,6 +8,22 @@
 		})
 	},
 
+	refresh: function(frm) {
+		!frm.doc.invoice && frm.add_custom_button("Generate Invoice", () => {
+			frm.call("generate_invoice", {
+				save: true
+			}).then(() => {
+				frm.reload_doc();
+			});
+		});
+
+		frm.add_custom_button("Send Acknowledgement", () => {
+			frm.call("send_acknowlement").then(() => {
+				frm.reload_doc();
+			});
+		});
+	},
+
 	onload: function(frm) {
 		frm.add_fetch('membership_type', 'amount', 'amount');
 	}
diff --git a/erpnext/non_profit/doctype/membership/membership.py b/erpnext/non_profit/doctype/membership/membership.py
index c960daa..8d1e44d 100644
--- a/erpnext/non_profit/doctype/membership/membership.py
+++ b/erpnext/non_profit/doctype/membership/membership.py
@@ -67,7 +67,6 @@
 		member = frappe.get_doc("Member", self.member)
 		plan = frappe.get_doc("Membership Type", self.membership_type)
 		settings = frappe.get_doc("Membership Settings")
-		attachments = []
 
 		if not member.customer:
 			frappe.throw(_("No customer linked to member {}", [member.name]))