feat: capture gst information
This commit is contained in:
@@ -13,6 +13,12 @@ frappe.ready(() => {
|
||||
const setup_billing = () => {
|
||||
this.billing = new frappe.ui.FieldGroup({
|
||||
fields: [
|
||||
{
|
||||
fieldtype: "Data",
|
||||
label: __("Billing Name"),
|
||||
fieldname: "billing_name",
|
||||
reqd: 1,
|
||||
},
|
||||
{
|
||||
fieldtype: "Data",
|
||||
label: __("Address Line 1"),
|
||||
@@ -30,14 +36,14 @@ const setup_billing = () => {
|
||||
fieldname: "city",
|
||||
reqd: 1,
|
||||
},
|
||||
{
|
||||
fieldtype: "Column Break",
|
||||
},
|
||||
{
|
||||
fieldtype: "Data",
|
||||
label: __("State/Province"),
|
||||
fieldname: "state",
|
||||
},
|
||||
{
|
||||
fieldtype: "Column Break",
|
||||
},
|
||||
{
|
||||
fieldtype: "Link",
|
||||
label: __("Country"),
|
||||
@@ -58,17 +64,25 @@ const setup_billing = () => {
|
||||
fieldname: "phone",
|
||||
reqd: 1,
|
||||
},
|
||||
{
|
||||
fieldtype: "Section Break",
|
||||
label: __("GST Details"),
|
||||
fieldname: "gst_details",
|
||||
depends_on: "eval:doc.country === 'India'",
|
||||
},
|
||||
{
|
||||
fieldtype: "Data",
|
||||
fieldname: "gstin",
|
||||
label: __("GSTIN"),
|
||||
depends_on: (doc) => console.log(doc.country),
|
||||
fieldname: "gstin",
|
||||
},
|
||||
{
|
||||
fieldtype: "Column Break",
|
||||
fieldname: "gst_details_break",
|
||||
},
|
||||
{
|
||||
fieldtype: "Data",
|
||||
fieldname: "pan",
|
||||
label: __("PAN"),
|
||||
depends_on: (doc) => console.log(doc.country),
|
||||
},
|
||||
],
|
||||
body: $("#billing-form").get(0),
|
||||
|
||||
@@ -39,7 +39,7 @@ def get_context(context):
|
||||
"paid_class",
|
||||
"amount",
|
||||
"currency",
|
||||
"prerequisite",
|
||||
"class_details",
|
||||
],
|
||||
as_dict=True,
|
||||
)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="container">
|
||||
{{ CourseHeaderOverlay(class_info, courses, students) }}
|
||||
<div class="pt-10">
|
||||
{{ Prerequisites(class_info) }}
|
||||
{{ ClassDetails(class_info) }}
|
||||
{{ CourseList(courses) }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,15 +42,6 @@
|
||||
|
||||
{% macro ClassHeaderDetails(class_info, courses, students) %}
|
||||
<div class="class-details" data-class="{{ class_info.name }}">
|
||||
<div class="flex align-center">
|
||||
<span>
|
||||
{{ courses | length }} {{ _("Courses") }}
|
||||
</span>
|
||||
<span class="px-2"> · </span>
|
||||
<span>
|
||||
{{ students | length }} {{ _("Students") }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="page-title">
|
||||
{{ class_info.title }}
|
||||
@@ -92,6 +83,19 @@
|
||||
<div class="course-overlay-card class-overlay">
|
||||
|
||||
<div class="course-overlay-content">
|
||||
|
||||
{% if class_info.seat_count %}
|
||||
{% if seats_left %}
|
||||
<div class="indicator-pill green pull-right">
|
||||
{{ _("Seats Available") }}: {{ seats_left }}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="indicator-pill red pull-right">
|
||||
{{ _("No seats left") }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if class_info.paid_class %}
|
||||
<div class="bold-heading">
|
||||
{{ frappe.utils.fmt_money(class_info.amount, 0, class_info.currency) }}
|
||||
@@ -105,13 +109,6 @@
|
||||
{{ courses | length }} {{ _("Courses") }}
|
||||
</div>
|
||||
|
||||
<div class="vertically-center mt-2">
|
||||
<svg class="icon icon-md mr-1">
|
||||
<use class="" href="#icon-users">
|
||||
</svg>
|
||||
{{ students | length }} {{ _("Students") }}
|
||||
</div>
|
||||
|
||||
<div class="mt-2">
|
||||
<svg class="icon icon-sm">
|
||||
<use href="#icon-calendar"></use>
|
||||
@@ -144,7 +141,8 @@
|
||||
{{ _("Checkout Class") }}
|
||||
</a>
|
||||
{% elif class_info.paid_class %}
|
||||
<a class="btn btn-primary wide-button" href="/billing/class/{{ class_info.name }}">
|
||||
<a class="btn btn-primary wide-button {% if class_info.seat_count and not seats_left %} hide {% endif %}"
|
||||
href="/billing/class/{{ class_info.name }}">
|
||||
{{ _("Register Now") }}
|
||||
</a>
|
||||
{% else %}
|
||||
@@ -165,13 +163,10 @@
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro Prerequisites(class_info) %}
|
||||
{% macro ClassDetails(class_info) %}
|
||||
<div class="course-description-section w-50">
|
||||
<div class="page-title">
|
||||
{{ _("Prerequisite Knowledge") }}
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
{{ class_info.prerequisite }}
|
||||
{{ class_info.class_details }}
|
||||
</div>
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
@@ -14,7 +14,7 @@ def get_context(context):
|
||||
"name",
|
||||
"title",
|
||||
"description",
|
||||
"prerequisite",
|
||||
"class_details",
|
||||
"start_date",
|
||||
"end_date",
|
||||
"paid_class",
|
||||
@@ -22,6 +22,7 @@ def get_context(context):
|
||||
"currency",
|
||||
"start_time",
|
||||
"end_time",
|
||||
"seat_count",
|
||||
],
|
||||
as_dict=1,
|
||||
)
|
||||
@@ -40,12 +41,8 @@ def get_context(context):
|
||||
)
|
||||
)
|
||||
|
||||
context.students = frappe.get_all(
|
||||
"Class Student",
|
||||
{"parent": class_name},
|
||||
["name", "student", "student_name", "username"],
|
||||
order_by="creation desc",
|
||||
)
|
||||
context.student_count = frappe.db.count("Class Student", {"parent": class_name})
|
||||
context.seats_left = context.class_info.seat_count - context.student_count
|
||||
|
||||
context.is_moderator = has_course_moderator_role()
|
||||
context.is_evaluator = has_course_evaluator_role()
|
||||
|
||||
@@ -90,11 +90,21 @@
|
||||
{% macro ClassCards(classes, show_price=False) %}
|
||||
<div class="lms-card-parent">
|
||||
{% for class in classes %}
|
||||
{% set course_count = frappe.db.count("Class Course", {"parent": class.name}) %}
|
||||
{% set student_count = frappe.db.count("Class Student", {"parent": class.name}) %}
|
||||
|
||||
<div class="common-card-style column-card" style="min-height: 150px;">
|
||||
|
||||
{% if class.seat_count %}
|
||||
{% if class.seats_left > 0 %}
|
||||
<div class="indicator-pill green align-self-start mb-2">
|
||||
{{ _("Seats Available") }}: {{ class.seats_left }}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="indicator-pill red align-self-start mb-2">
|
||||
{{ _("No Seats Left") }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<div class="bold-heading">
|
||||
{{ class.title }}
|
||||
</div>
|
||||
@@ -127,15 +137,15 @@
|
||||
<svg class="icon icon-md">
|
||||
<use href="#icon-education"></use>
|
||||
</svg>
|
||||
{{ course_count }} {{ _("Courses") }}
|
||||
{{ class.course_count }} {{ _("Courses") }}
|
||||
</div>
|
||||
|
||||
<div class="mb-2">
|
||||
<!-- <div class="mb-2">
|
||||
<svg class="icon icon-md">
|
||||
<use href="#icon-users"></use>
|
||||
</svg>
|
||||
{{ student_count }} {{ _("Students") }}
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
{% if is_student(class.name) %}
|
||||
<a class="stretched-link" href="/classes/{{ class.name }}"></a>
|
||||
|
||||
@@ -20,10 +20,17 @@ def get_context(context):
|
||||
"currency",
|
||||
"seat_count",
|
||||
],
|
||||
order_by="start_date",
|
||||
)
|
||||
|
||||
past_classes, upcoming_classes = [], []
|
||||
for class_ in classes:
|
||||
class_.student_count = frappe.db.count("Class Student", {"parent": class_.name})
|
||||
class_.course_count = frappe.db.count("Class Course", {"parent": class_.name})
|
||||
class_.seats_left = (
|
||||
class_.seat_count - class_.student_count if class_.seat_count else None
|
||||
)
|
||||
print(class_.seat_count, class_.student_count, class_.seats_left)
|
||||
if getdate(class_.start_date) < getdate():
|
||||
past_classes.append(class_)
|
||||
else:
|
||||
@@ -39,13 +46,31 @@ def get_context(context):
|
||||
)
|
||||
|
||||
for class_ in my_classes:
|
||||
my_classes_info.append(
|
||||
frappe.db.get_value(
|
||||
"LMS Class",
|
||||
class_,
|
||||
["name", "title", "start_date", "end_date", "paid_class", "seat_count"],
|
||||
as_dict=True,
|
||||
)
|
||||
class_info = frappe.db.get_value(
|
||||
"LMS Class",
|
||||
class_,
|
||||
[
|
||||
"name",
|
||||
"title",
|
||||
"description",
|
||||
"start_date",
|
||||
"end_date",
|
||||
"paid_class",
|
||||
"amount",
|
||||
"currency",
|
||||
"seat_count",
|
||||
],
|
||||
as_dict=True,
|
||||
)
|
||||
|
||||
class_info.student_count = frappe.db.count(
|
||||
"Class Student", {"parent": class_info.name}
|
||||
)
|
||||
class_info.course_count = frappe.db.count(
|
||||
"Class Course", {"parent": class_info.name}
|
||||
)
|
||||
class_info.seats_left = class_info.seat_count - class_info.student_count
|
||||
|
||||
my_classes_info.append(class_info)
|
||||
|
||||
context.my_classes = my_classes_info
|
||||
|
||||
Reference in New Issue
Block a user