feat: capture gst information

This commit is contained in:
Jannat Patel
2023-08-24 22:15:55 +05:30
parent 47c19b4e3d
commit d5f10db250
18 changed files with 371 additions and 271 deletions

View File

@@ -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),

View File

@@ -39,7 +39,7 @@ def get_context(context):
"paid_class",
"amount",
"currency",
"prerequisite",
"class_details",
],
as_dict=True,
)

View File

@@ -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 %}

View File

@@ -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()

View File

@@ -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>

View File

@@ -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