feat: add auto invoice creation fields and controllers
diff --git a/erpnext/non_profit/doctype/membership/membership.py b/erpnext/non_profit/doctype/membership/membership.py
index 729e111..eea18393 100644
--- a/erpnext/non_profit/doctype/membership/membership.py
+++ b/erpnext/non_profit/doctype/membership/membership.py
@@ -57,6 +57,35 @@
self.load_from_db()
self.db_set('paid', 1)
+ def generate_and_send_invoice(self):
+ if not self.paid:
+ frappe.throw(_("The payment for this membership is not paid. To generate invoice mark the paid check"))
+
+ member = frappe.get_doc("Member", self.member)
+ plan = frappe.get_doc("Membership Type", self.membership_type)
+ settings = frappe.get_doc("Membership Settings")
+
+ invoice = make_invoice(self, member, plan, settings)
+
+def make_invoice(membership, member, plan, settings):
+ invoice = frappe.get_doc({
+ 'doctype': 'Sales Invoice',
+ 'customer': member.customer,
+ 'debit_to': settings.debit_account,
+ 'currency': membership.currency,
+ 'is_pos': 0,
+ 'items': [
+ {
+ 'item_code': plan.linked_item,
+ 'rate': membership.amount,
+ 'qty': 1
+ }
+ ]
+ })
+
+ invoice.insert(ignore_permissions=True)
+ invoice.submit()
+
def get_member_based_on_subscription(subscription_id, email):
members = frappe.get_all("Member", filters={
'subscription_id': subscription_id,
diff --git a/erpnext/non_profit/doctype/membership_settings/membership_settings.js b/erpnext/non_profit/doctype/membership_settings/membership_settings.js
index f5e0274..02ef029 100644
--- a/erpnext/non_profit/doctype/membership_settings/membership_settings.js
+++ b/erpnext/non_profit/doctype/membership_settings/membership_settings.js
@@ -19,6 +19,16 @@
};
});
+ frm.set_query('debit_account', function(doc) {
+ return {
+ filters: {
+ 'account_type': 'Receivable',
+ 'is_group': 0,
+ 'company': frm.doc.company
+ }
+ };
+ });
+
let docs_url = "https://docs.erpnext.com/docs/user/manual/en/non_profit/membership";
frm.set_intro(__("You can learn more about memberships in the manual. ") + `<a href='${docs_url}'>${__('ERPNext Docs')}</a>`, true);
diff --git a/erpnext/non_profit/doctype/membership_settings/membership_settings.json b/erpnext/non_profit/doctype/membership_settings/membership_settings.json
index 29013fa..37bea49 100644
--- a/erpnext/non_profit/doctype/membership_settings/membership_settings.json
+++ b/erpnext/non_profit/doctype/membership_settings/membership_settings.json
@@ -11,8 +11,15 @@
"billing_frequency",
"webhook_secret",
"column_break_6",
+ "print_format",
+ "company",
+ "debit_account",
+ "column_break_9",
"enable_auto_invoicing",
- "print_format"
+ "send_invoice",
+ "section_break_10",
+ "new_member",
+ "renewal"
],
"fields": [
{
@@ -47,7 +54,8 @@
},
{
"fieldname": "column_break_6",
- "fieldtype": "Column Break"
+ "fieldtype": "Section Break",
+ "label": "Invoicing"
},
{
"default": "0",
@@ -56,18 +64,57 @@
"label": "Enable Auto Invoicing"
},
{
- "depends_on": "eval:doc.enable_auto_invoicing",
"fieldname": "print_format",
"fieldtype": "Link",
"label": "Print Format",
- "mandatory_depends_on": "eval:doc.enable_auto_invoicing",
"options": "Print Format"
+ },
+ {
+ "fieldname": "new_member",
+ "fieldtype": "Text Editor",
+ "label": "Message for New Member",
+ "mandatory_depends_on": "eval:doc.send_invoice"
+ },
+ {
+ "fieldname": "renewal",
+ "fieldtype": "Text Editor",
+ "label": "Message for Renewal",
+ "mandatory_depends_on": "eval:doc.send_invoice"
+ },
+ {
+ "depends_on": "eval:doc.company",
+ "fieldname": "debit_account",
+ "fieldtype": "Link",
+ "label": "Debit Account",
+ "options": "Account"
+ },
+ {
+ "depends_on": "eval:doc.send_invoice",
+ "fieldname": "section_break_10",
+ "fieldtype": "Section Break",
+ "hide_border": 1
+ },
+ {
+ "fieldname": "column_break_9",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "company",
+ "fieldtype": "Link",
+ "label": "Company",
+ "options": "Company"
+ },
+ {
+ "default": "0",
+ "fieldname": "send_invoice",
+ "fieldtype": "Check",
+ "label": "Send Email with Invoice"
}
],
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
- "modified": "2020-07-28 11:01:40.125896",
+ "modified": "2020-07-28 12:18:35.289893",
"modified_by": "Administrator",
"module": "Non Profit",
"name": "Membership Settings",