From 1f20f6348d93b12f2400beef7acbab40f4e1f2a5 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Mon, 30 Mar 2020 18:13:29 +0530 Subject: [PATCH] feat: added membership settings doctype --- .../doctype/membership_settings/__init__.py | 0 .../membership_settings.js | 12 +++ .../membership_settings.json | 89 +++++++++++++++++++ .../membership_settings.py | 17 ++++ .../test_membership_settings.py | 10 +++ 5 files changed, 128 insertions(+) create mode 100644 erpnext/non_profit/doctype/membership_settings/__init__.py create mode 100644 erpnext/non_profit/doctype/membership_settings/membership_settings.js create mode 100644 erpnext/non_profit/doctype/membership_settings/membership_settings.json create mode 100644 erpnext/non_profit/doctype/membership_settings/membership_settings.py create mode 100644 erpnext/non_profit/doctype/membership_settings/test_membership_settings.py diff --git a/erpnext/non_profit/doctype/membership_settings/__init__.py b/erpnext/non_profit/doctype/membership_settings/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/non_profit/doctype/membership_settings/membership_settings.js b/erpnext/non_profit/doctype/membership_settings/membership_settings.js new file mode 100644 index 0000000000..092c854b43 --- /dev/null +++ b/erpnext/non_profit/doctype/membership_settings/membership_settings.js @@ -0,0 +1,12 @@ +// Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Membership Settings', { + refresh: function(frm) { + // if (frm.doc.enable_razorpay) { + // frm.add_custom_button(__("Fetch Plans from RazorPay"), () => { + // frm.trigger("fetch_razorpay_plans") + // }); + // } + } +}); diff --git a/erpnext/non_profit/doctype/membership_settings/membership_settings.json b/erpnext/non_profit/doctype/membership_settings/membership_settings.json new file mode 100644 index 0000000000..d64e392287 --- /dev/null +++ b/erpnext/non_profit/doctype/membership_settings/membership_settings.json @@ -0,0 +1,89 @@ +{ + "actions": [], + "creation": "2020-03-29 12:57:03.005120", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "enable_razorpay", + "razorpay_settings_section", + "billing_cycle", + "billing_frequency", + "column_break_2", + "auto_capture_payment", + "create_subscription", + "auto_create_invoice" + ], + "fields": [ + { + "fieldname": "billing_cycle", + "fieldtype": "Select", + "label": "Billing Cycle", + "options": "Monthly\nYearly" + }, + { + "fieldname": "column_break_2", + "fieldtype": "Column Break" + }, + { + "default": "0", + "fieldname": "enable_razorpay", + "fieldtype": "Check", + "label": "Enable RazorPay For Memberships" + }, + { + "default": "0", + "fieldname": "create_subscription", + "fieldtype": "Check", + "label": "Create Subscription" + }, + { + "default": "0", + "depends_on": "eval:doc.enable_razorpay", + "fieldname": "auto_capture_payment", + "fieldtype": "Check", + "label": "Auto Capture Payment" + }, + { + "default": "0", + "fieldname": "auto_create_invoice", + "fieldtype": "Check", + "label": "Auto Create Invoice" + }, + { + "depends_on": "eval:doc.enable_razorpay", + "fieldname": "razorpay_settings_section", + "fieldtype": "Section Break", + "label": "RazorPay Settings" + }, + { + "description": "The number of billing cycles for which the customer should be charged. For example, if a customer is buying a 1-year membership that should be billed on a monthly basis, this value should be 12.", + "fieldname": "billing_frequency", + "fieldtype": "Data", + "label": "Billing Frequency" + } + ], + "issingle": 1, + "links": [], + "modified": "2020-03-30 16:02:00.060583", + "modified_by": "Administrator", + "module": "Non Profit", + "name": "Membership Settings", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "print": 1, + "read": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "track_changes": 1 +} \ No newline at end of file diff --git a/erpnext/non_profit/doctype/membership_settings/membership_settings.py b/erpnext/non_profit/doctype/membership_settings/membership_settings.py new file mode 100644 index 0000000000..2b8e37f2a6 --- /dev/null +++ b/erpnext/non_profit/doctype/membership_settings/membership_settings.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe +from frappe.integrations.utils import get_payment_gateway_controller +from frappe.model.document import Document + +class MembershipSettings(Document): + pass + +@frappe.whitelist() +def get_plans_for_membership(*args, **kwargs): + controller = get_payment_gateway_controller("Razorpay") + plans = controller.get_plans() + return [plan.get("item") for plan in plans.get("items")] \ No newline at end of file diff --git a/erpnext/non_profit/doctype/membership_settings/test_membership_settings.py b/erpnext/non_profit/doctype/membership_settings/test_membership_settings.py new file mode 100644 index 0000000000..2ad7984583 --- /dev/null +++ b/erpnext/non_profit/doctype/membership_settings/test_membership_settings.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt +from __future__ import unicode_literals + +# import frappe +import unittest + +class TestMembershipSettings(unittest.TestCase): + pass