From 5139f837c58bfa3afa4a2daa0b7869803a074106 Mon Sep 17 00:00:00 2001 From: Saurabh Date: Tue, 14 Mar 2017 19:40:14 +0530 Subject: [PATCH 1/3] [fix] payment mechanism for memberships, membership listing --- .../doctype/membership/membership.json | 8 +- .../web_form/memberships/memberships.js | 32 +++---- .../web_form/memberships/memberships.json | 7 +- .../web_form/memberships/memberships.py | 15 +++- .../web_form/memberships_usd/__init__.py | 0 .../memberships_usd/memberships_usd.js | 32 +++++++ .../memberships_usd/memberships_usd.json | 89 +++++++++++++++++++ .../memberships_usd/memberships_usd.py | 7 ++ foundation/hooks.py | 3 +- .../templates/includes/membership_list.html | 34 +++++++ foundation/www/members/details.html | 6 +- foundation/www/members/setup_payment.html | 24 +++++ foundation/www/members/setup_payment.py | 6 ++ foundation/www/service_providers.py | 3 +- 14 files changed, 232 insertions(+), 34 deletions(-) create mode 100644 foundation/erpnext_foundation/web_form/memberships_usd/__init__.py create mode 100644 foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.js create mode 100644 foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.json create mode 100644 foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.py create mode 100644 foundation/templates/includes/membership_list.html create mode 100644 foundation/www/members/setup_payment.html create mode 100644 foundation/www/members/setup_payment.py diff --git a/foundation/erpnext_foundation/doctype/membership/membership.json b/foundation/erpnext_foundation/doctype/membership/membership.json index 06b3d66c..1bd6ff7f 100644 --- a/foundation/erpnext_foundation/doctype/membership/membership.json +++ b/foundation/erpnext_foundation/doctype/membership/membership.json @@ -55,7 +55,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "Membership Type", "length": 0, @@ -85,7 +85,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "From", "length": 0, @@ -114,7 +114,7 @@ "ignore_xss_filter": 0, "in_filter": 0, "in_global_search": 0, - "in_list_view": 0, + "in_list_view": 1, "in_standard_filter": 0, "label": "To", "length": 0, @@ -230,7 +230,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2017-03-07 16:44:47.066560", + "modified": "2017-03-14 18:44:13.286524", "modified_by": "Administrator", "module": "ERPNext Foundation", "name": "Membership", diff --git a/foundation/erpnext_foundation/web_form/memberships/memberships.js b/foundation/erpnext_foundation/web_form/memberships/memberships.js index 5c73e578..8d07c366 100644 --- a/foundation/erpnext_foundation/web_form/memberships/memberships.js +++ b/foundation/erpnext_foundation/web_form/memberships/memberships.js @@ -1,38 +1,30 @@ frappe.ready(function() { // bind events here + $(".page-header-actions-block .btn-primary, .page-header-actions-block .btn-default").addClass('hidden'); + $(".text-right .btn-primary").addClass('hidden'); + var set_amount = function() { var membership_type = $('[data-fieldname="membership_type"]').val(); var currency = $('[data-fieldname="currency"]').val(); - if(currency=='USD') { - amount = { - 'Gold': 5000, - 'Silver': 1500, - 'Individual': 200 - } - } else { - amount = { - 'Gold': 300000, - 'Silver': 100000, - 'Individual': 10000 - } + amount = { + 'Gold': 300000, + 'Silver': 100000, + 'Individual': 10000 } - var currency = $('[data-fieldname="amount"]').val(amount[membership_type]); + $('[data-fieldname="amount"]').val(amount[membership_type]); } if(get_url_arg('name')) { $('[data-fieldname="membership_type"]').prop('disabled', true); $('[data-fieldname="currency"]').prop('disabled', true); $('.page-content .btn-form-submit').addClass('hidden'); - } else { + } else { var m = moment(); $('[data-fieldname="from_date"]').val(m.format()).trigger('change'); $('[data-fieldname="to_date"]').val(m.add(1, 'year').format()).trigger('change'); $('[data-fieldname="membership_type"]').on('change', function() { set_amount(); }); - $('[data-fieldname="currency"]').val('USD') - .on('change', function() { - set_amount(); - }) - .trigger('change'); - } + $('[data-fieldname="currency"]').val("INR"); + set_amount(); + } }) diff --git a/foundation/erpnext_foundation/web_form/memberships/memberships.json b/foundation/erpnext_foundation/web_form/memberships/memberships.json index 664f5296..791266a4 100644 --- a/foundation/erpnext_foundation/web_form/memberships/memberships.json +++ b/foundation/erpnext_foundation/web_form/memberships/memberships.json @@ -18,13 +18,14 @@ "is_standard": 1, "login_required": 1, "max_attachment_size": 0, - "modified": "2017-03-07 17:08:02.298823", + "modified": "2017-03-14 16:31:47.735437", "modified_by": "Administrator", "module": "ERPNext Foundation", "name": "memberships", "owner": "Administrator", - "payment_button_help": "Pay for your membership using PayPal or RazorPay", + "payment_button_help": "Pay for your membership using RazorPay", "payment_button_label": "Pay Now", + "payment_gateway": "Razorpay", "published": 1, "route": "memberships", "show_sidebar": 1, @@ -71,7 +72,7 @@ "max_length": 0, "max_value": 0, "options": "USD\nINR", - "read_only": 0, + "read_only": 1, "reqd": 0 }, { diff --git a/foundation/erpnext_foundation/web_form/memberships/memberships.py b/foundation/erpnext_foundation/web_form/memberships/memberships.py index 2334f8b2..f7d0b7a8 100644 --- a/foundation/erpnext_foundation/web_form/memberships/memberships.py +++ b/foundation/erpnext_foundation/web_form/memberships/memberships.py @@ -1,7 +1,20 @@ from __future__ import unicode_literals import frappe +from frappe.utils import fmt_money def get_context(context): - # do your magic here pass + +def get_list_context(context): + context.row_template = 'foundation/templates/includes/membership_list.html' + context.get_list = get_site_list + +def get_site_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by=None): + memberships = frappe.db.sql("""select * from `tabMembership` + where member = %s order by creation desc""", frappe.session.user, as_dict=True) + + for membership in memberships: + membership.amount = fmt_money(membership.amount, precision=2, currency=membership.currency) + + return memberships \ No newline at end of file diff --git a/foundation/erpnext_foundation/web_form/memberships_usd/__init__.py b/foundation/erpnext_foundation/web_form/memberships_usd/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.js b/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.js new file mode 100644 index 00000000..26399c02 --- /dev/null +++ b/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.js @@ -0,0 +1,32 @@ +frappe.ready(function() { + // bind events here + $(".page-header-actions-block .btn-primary, .page-header-actions-block .btn-default").addClass('hidden'); + $(".text-right .btn-primary").addClass('hidden'); + + var m = moment(); + + var set_amount = function() { + var membership_type = $('[data-fieldname="membership_type"]').val(); + var currency = $('[data-fieldname="currency"]').val(); + + amount = { + 'Gold': 5000, + 'Silver': 1500, + 'Individual': 200 + } + + $('[data-fieldname="amount"]').val(amount[membership_type]); + } + + if(get_url_arg('name')) { + $('[data-fieldname="membership_type"]').prop('disabled', true); + $('[data-fieldname="currency"]').prop('disabled', true); + $('.page-content .btn-form-submit').addClass('hidden'); + } else { + $('[data-fieldname="from_date"]').val(m.format()).trigger('change'); + $('[data-fieldname="to_date"]').val(m.add(1, 'year').format()).trigger('change'); + $('[data-fieldname="membership_type"]').on('change', function() { set_amount(); }); + $('[data-fieldname="currency"]').val('USD'); + set_amount(); + } +}) \ No newline at end of file diff --git a/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.json b/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.json new file mode 100644 index 00000000..9a1f5875 --- /dev/null +++ b/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.json @@ -0,0 +1,89 @@ +{ + "accept_payment": 1, + "allow_comments": 0, + "allow_delete": 0, + "allow_edit": 1, + "allow_incomplete": 0, + "allow_multiple": 1, + "allow_print": 0, + "amount": 0.0, + "amount_based_on_field": 1, + "amount_field": "amount", + "creation": "2017-03-14 16:08:45.202761", + "currency": "", + "doc_type": "Membership", + "docstatus": 0, + "doctype": "Web Form", + "idx": 0, + "is_standard": 1, + "login_required": 1, + "max_attachment_size": 0, + "modified": "2017-03-14 18:38:07.785349", + "modified_by": "Administrator", + "module": "ERPNext Foundation", + "name": "memberships-usd", + "owner": "Administrator", + "payment_button_help": "Pay for your membership using PayPal", + "payment_button_label": "Pay Now", + "payment_gateway": "PayPal", + "published": 1, + "route": "memberships-usd", + "show_sidebar": 1, + "sidebar_items": [], + "success_url": "/memberships", + "title": "Memberships", + "web_form_fields": [ + { + "fieldname": "membership_type", + "fieldtype": "Select", + "hidden": 0, + "label": "Membership Type", + "max_length": 0, + "max_value": 0, + "options": "Gold\nSilver\nIndividual", + "read_only": 0, + "reqd": 1 + }, + { + "fieldname": "from_date", + "fieldtype": "Date", + "hidden": 0, + "label": "From", + "max_length": 0, + "max_value": 0, + "read_only": 1, + "reqd": 1 + }, + { + "fieldname": "to_date", + "fieldtype": "Date", + "hidden": 0, + "label": "To", + "max_length": 0, + "max_value": 0, + "read_only": 1, + "reqd": 1 + }, + { + "fieldname": "currency", + "fieldtype": "Select", + "hidden": 0, + "label": "Currency", + "max_length": 0, + "max_value": 0, + "options": "USD\nINR", + "read_only": 1, + "reqd": 0 + }, + { + "fieldname": "amount", + "fieldtype": "Float", + "hidden": 0, + "label": "Amount", + "max_length": 0, + "max_value": 0, + "read_only": 1, + "reqd": 0 + } + ] +} \ No newline at end of file diff --git a/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.py b/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.py new file mode 100644 index 00000000..2334f8b2 --- /dev/null +++ b/foundation/erpnext_foundation/web_form/memberships_usd/memberships_usd.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +import frappe + +def get_context(context): + # do your magic here + pass diff --git a/foundation/hooks.py b/foundation/hooks.py index e26185da..9c7d0a5e 100644 --- a/foundation/hooks.py +++ b/foundation/hooks.py @@ -55,8 +55,7 @@ website_context = { {"label": "Service Providers", "url": "/service-providers"}, {"label": "Jobs", "url": "/jobs"}, {"label": "Apps", "url": "/apps"}, - {"label": "Events", "url": "/events"}, - {"label": "Forum", "url": "https://discuss.erpnext.com", "target": "_blank"} + {"label": "Events", "url": "/events"} ]}, {"label": "ERPNext", "child_items": [ {"label": "Resources", "url": "/resources"}, diff --git a/foundation/templates/includes/membership_list.html b/foundation/templates/includes/membership_list.html new file mode 100644 index 00000000..eab7bb5b --- /dev/null +++ b/foundation/templates/includes/membership_list.html @@ -0,0 +1,34 @@ +
+
+
+ # +
+ +
+ Expires On +
+ +
+
+
+
+ + +
+ {{ doc.to_date }} +
+ +
+
\ No newline at end of file diff --git a/foundation/www/members/details.html b/foundation/www/members/details.html index 54345cb2..22f00490 100644 --- a/foundation/www/members/details.html +++ b/foundation/www/members/details.html @@ -13,16 +13,16 @@ {% if not last_membership %}

You have never been a member of ERPNext Foundation. Click on the button below to start a new membership

-

Become A Member

+

Become A Member

{% elif frappe.utils.getdate(last_membership.to_date) < frappe.utils.getdate(frappe.utils.nowdate()) %}

Your Membership has expired, Click the button below to start a new membership

-

Renew

+

Renew

View Membership History

{% elif frappe.utils.getdate(frappe.utils.add_days(last_membership.to_date, -30)) < frappe.utils.getdate(frappe.utils.nowdate())%}

Your Membership is due to expire soon. Click on the button below to renew

-

Renew

+

Renew

View Membership History

{% else %} diff --git a/foundation/www/members/setup_payment.html b/foundation/www/members/setup_payment.html new file mode 100644 index 00000000..a6dde923 --- /dev/null +++ b/foundation/www/members/setup_payment.html @@ -0,0 +1,24 @@ +{% extends "templates/web.html" %} + +{% block title %}Setup Payment Method{% endblock %} + +{% block page_content %} +
+ USD
+ INR
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/foundation/www/members/setup_payment.py b/foundation/www/members/setup_payment.py new file mode 100644 index 00000000..0eeb7de3 --- /dev/null +++ b/foundation/www/members/setup_payment.py @@ -0,0 +1,6 @@ +import frappe +import foundation + +def get_context(context): + if frappe.session.user != 'Guest': + context.show_sidebar = True diff --git a/foundation/www/service_providers.py b/foundation/www/service_providers.py index e7c6bf48..d535ce8e 100644 --- a/foundation/www/service_providers.py +++ b/foundation/www/service_providers.py @@ -1,5 +1,6 @@ import frappe +no_cache = 1 def get_context(context): context.form_dict = frappe.form_dict context.title = 'Service Providers' @@ -60,7 +61,7 @@ def get_context(context): introduction='Become an invidual member to list here', route='/members' )] - + context.service_providers = [d for d in frappe.get_all('Service Provider', 'name, title, introduction, `image`, route', dict(country=frappe.form_dict.country, show_in_website=1), order_by='name') if d.name not in individual_members] From 0ec599480f7c633a1d26ad439e9e6e3ca421190a Mon Sep 17 00:00:00 2001 From: Saurabh Date: Wed, 15 Mar 2017 08:20:56 +0530 Subject: [PATCH 2/3] [minor][fix] memberships listview date format fix --- .../erpnext_foundation/web_form/memberships/memberships.py | 1 + foundation/templates/includes/membership_list.html | 2 +- foundation/www/service_providers.py | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/foundation/erpnext_foundation/web_form/memberships/memberships.py b/foundation/erpnext_foundation/web_form/memberships/memberships.py index f7d0b7a8..91c235c4 100644 --- a/foundation/erpnext_foundation/web_form/memberships/memberships.py +++ b/foundation/erpnext_foundation/web_form/memberships/memberships.py @@ -1,6 +1,7 @@ from __future__ import unicode_literals import frappe +import datetime from frappe.utils import fmt_money def get_context(context): diff --git a/foundation/templates/includes/membership_list.html b/foundation/templates/includes/membership_list.html index eab7bb5b..a2548cc1 100644 --- a/foundation/templates/includes/membership_list.html +++ b/foundation/templates/includes/membership_list.html @@ -25,7 +25,7 @@ {{ doc.membership_type }}
- {{ doc.to_date }} + {{ frappe.utils.global_date_format(doc.to_date) }}