diff --git a/lms/lms/utils.py b/lms/lms/utils.py index ec3e4489..459a8337 100644 --- a/lms/lms/utils.py +++ b/lms/lms/utils.py @@ -18,6 +18,7 @@ from frappe.utils import ( get_datetime, getdate, validate_phone_number, + ceil, ) from frappe.utils.dateutils import get_period from lms.lms.md import find_macros, markdown_to_html @@ -842,7 +843,7 @@ def get_payment_options(doctype, docname, phone, country): validate_phone_number(phone, True) details = get_details(doctype, docname) details.amount, details.currency = check_multicurrency( - details.amount, details.currency + details.amount, details.currency, country ) if details.currency == "INR": details.amount, details.gst_applied = apply_gst(details.amount, country) @@ -866,18 +867,20 @@ def get_payment_options(doctype, docname, phone, country): return options -def check_multicurrency(amount, currency): +def check_multicurrency(amount, currency, country=None): show_usd_equivalent = frappe.db.get_single_value("LMS Settings", "show_usd_equivalent") exception_country = frappe.get_all( "Payment Country", filters={"parent": "LMS Settings"}, pluck="country" ) apply_rounding = frappe.db.get_single_value("LMS Settings", "apply_rounding") - country = frappe.db.get_value("User", frappe.session.user, "country") + country = country or frappe.db.get_value( + "Address", {"email_id": frappe.session.user}, "country" + ) if not show_usd_equivalent or currency == "USD": return amount, currency - if exception_country and country in exception_country: + if not country or (exception_country and country in exception_country): return amount, currency exchange_rate = get_current_exchange_rate(currency, "USD") @@ -885,7 +888,7 @@ def check_multicurrency(amount, currency): currency = "USD" if apply_rounding and amount % 100 != 0: - amount = amount + 100 - amount % 100 + amount = ceil(amount + 100 - amount % 100) return amount, currency @@ -928,7 +931,15 @@ def get_details(doctype, docname): def save_address(address): - address.update( + filters = {"email_id": frappe.session.user} + exists = frappe.db.exists("Address", filters) + if exists: + address_doc = frappe.get_last_doc("Address", filters=filters) + else: + address_doc = frappe.new_doc("Address") + + address_doc.update(address) + address_doc.update( { "address_title": frappe.db.get_value("User", frappe.session.user, "full_name"), "address_type": "Billing", @@ -936,10 +947,8 @@ def save_address(address): "email_id": frappe.session.user, } ) - doc = frappe.new_doc("Address") - doc.update(address) - doc.save(ignore_permissions=True) - return doc.name + address_doc.save(ignore_permissions=True) + return address_doc.name def get_client(): @@ -1062,3 +1071,10 @@ def get_current_exchange_rate(source, target="USD"): response = requests.request("GET", url) details = response.json() return details["rates"][target] + + +@frappe.whitelist() +def change_currency(amount, currency, country=None): + amount = cint(amount) + amount, currency = check_multicurrency(amount, currency, country) + return fmt_money(amount, 0, currency) diff --git a/lms/public/css/style.css b/lms/public/css/style.css index e79eec3b..a6ea778b 100644 --- a/lms/public/css/style.css +++ b/lms/public/css/style.css @@ -2442,4 +2442,15 @@ select { justify-content: space-between; width: 50%; margin: 0 auto 1rem; +} + +.batch-details { + width: 50%; + margin: 2rem 0; +} + +@media (max-width: 1000px) { + .batch-details { + width: 100%; + } } \ No newline at end of file diff --git a/lms/www/batches/batch.py b/lms/www/batches/batch.py index 00aac227..15d1b9d4 100644 --- a/lms/www/batches/batch.py +++ b/lms/www/batches/batch.py @@ -1,6 +1,6 @@ from frappe import _ import frappe -from frappe.utils import getdate, get_datetime +from frappe.utils import getdate from lms.www.utils import get_assessments, is_student from lms.lms.utils import ( has_course_moderator_role, @@ -52,14 +52,14 @@ def get_context(context): "Batch Course", {"parent": batch_name}, ["name", "course", "title"], - order_by="creation desc", + order_by="idx", ) batch_students = frappe.get_all( "Batch Student", {"parent": batch_name}, ["name", "student", "student_name", "username"], - order_by="creation desc", + order_by="idx", ) context.batch_courses = get_class_course_details(batch_courses) diff --git a/lms/www/batches/batch_details.html b/lms/www/batches/batch_details.html index b1967306..8d1d9ee9 100644 --- a/lms/www/batches/batch_details.html +++ b/lms/www/batches/batch_details.html @@ -164,24 +164,26 @@ {% macro BatchDetails(batch_info) %} -