From b9fe05c27f5effbff1793ff705241db471c1a089 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 21 Sep 2022 17:37:56 +0530 Subject: [PATCH 1/2] feat: subscription add ons --- lms/subscription_utils.py | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 lms/subscription_utils.py diff --git a/lms/subscription_utils.py b/lms/subscription_utils.py new file mode 100644 index 00000000..5da134e7 --- /dev/null +++ b/lms/subscription_utils.py @@ -0,0 +1,45 @@ +import frappe + + +@frappe.whitelist(allow_guest=True) +def get_add_on_details(plan: str) -> dict[str, int]: + """ + Returns the number of courses and course members to be billed under add-ons for SAAS subscription + """ + + return { + "courses": get_add_on_courses(plan), + "members": get_add_on_members(plan) + } + + +def get_published_courses() -> int: + return frappe.db.count("LMS Course", {"published": 1}) + + +def get_add_on_courses(plan: str) -> int: + COURSE_LIMITS = {"Lite": 5, "Essential": 20} + add_on_courses = 0 + courses_included_in_plans = COURSE_LIMITS.get(plan) + + if courses_included_in_plans: + published_courses = get_published_courses() + add_on_courses = published_courses - courses_included_in_plans if published_courses > courses_included_in_plans else 0 + + return add_on_courses + + +def get_add_on_members(plan: str) -> int: + MEMBER_LIMITS = {"Lite": 100, "Essential": 500} + add_on_members = 0 + members_included_in_plans = MEMBER_LIMITS.get(plan) + + if members_included_in_plans: + active_members = get_members() + add_on_members = active_members - members_included_in_plans if active_members > members_included_in_plans else 0 + + return add_on_members + + +def get_members() -> int: + return frappe.db.count("LMS Batch Membership") From 247017d19aab7f28f0fbbc8f2495a2104ebc70ae Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Wed, 21 Sep 2022 20:38:56 +0530 Subject: [PATCH 2/2] fix: changed essential plan to pro --- lms/subscription_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lms/subscription_utils.py b/lms/subscription_utils.py index 5da134e7..b4d5e766 100644 --- a/lms/subscription_utils.py +++ b/lms/subscription_utils.py @@ -18,7 +18,7 @@ def get_published_courses() -> int: def get_add_on_courses(plan: str) -> int: - COURSE_LIMITS = {"Lite": 5, "Essential": 20} + COURSE_LIMITS = {"Lite": 5, "Pro": 20} add_on_courses = 0 courses_included_in_plans = COURSE_LIMITS.get(plan) @@ -30,7 +30,7 @@ def get_add_on_courses(plan: str) -> int: def get_add_on_members(plan: str) -> int: - MEMBER_LIMITS = {"Lite": 100, "Essential": 500} + MEMBER_LIMITS = {"Lite": 100, "Pro": 500} add_on_members = 0 members_included_in_plans = MEMBER_LIMITS.get(plan)