real time fee creation status via socketio
This commit is contained in:
parent
1bcc6c661a
commit
0664d6ed8b
@ -6,15 +6,6 @@ frappe.ui.form.on('Fee Schedule', {
|
||||
frm.add_fetch("fee_structure", "receivable_account", "receivable_account");
|
||||
frm.add_fetch("fee_structure", "income_account", "income_account");
|
||||
frm.add_fetch("fee_structure", "cost_center", "cost_center");
|
||||
frappe.realtime.on("fee_schedule_progress", function(data) {
|
||||
if (data.progress && data.progress === 0) {
|
||||
frappe.msgprint(__("Fee records will be created in the background. In case of any error the error message will be updated in the Schedule."));
|
||||
}
|
||||
if (data.progress) {
|
||||
frm.reload_doc();
|
||||
frm.dashboard.add_progress("Fee Creation Status", data.progress);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onload: function(frm) {
|
||||
@ -42,6 +33,21 @@ frappe.ui.form.on('Fee Schedule', {
|
||||
"academic_year": frm.doc.academic_year
|
||||
};
|
||||
});
|
||||
frappe.realtime.on("fee_schedule_progress", function(data) {
|
||||
if (data.reload && data.reload === 1) {
|
||||
frm.reload_doc();
|
||||
}
|
||||
if (data.progress && data.progress === "0") {
|
||||
frappe.msgprint(__("Fee records will be created in the background. In case of any error the error message will be updated in the Schedule."));
|
||||
}
|
||||
if (data.progress) {
|
||||
let progress_bar = $(cur_frm.dashboard.progress_area).find(".progress-bar");
|
||||
if (progress_bar) {
|
||||
$(progress_bar).removeClass("progress-bar-danger").addClass("progress-bar-success progress-bar-striped");
|
||||
$(progress_bar).css("width", data.progress+"%");
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
refresh: function(frm) {
|
||||
@ -53,9 +59,13 @@ frappe.ui.form.on('Fee Schedule', {
|
||||
frm.dashboard.add_indicator(__('Total Outstanding: {0}', [format_currency(info.total_unpaid,
|
||||
info.currency)]), info.total_unpaid ? 'orange' : 'green');
|
||||
}
|
||||
|
||||
if (frm.doc.fee_creation_status=="In Process") {
|
||||
frm.dashboard.add_progress("Fee Creation Status", "0");
|
||||
}
|
||||
if (!frm.doc.__islocal && !frm.doc.fee_creation_status || frm.doc.fee_creation_status == "Failed") {
|
||||
frm.add_custom_button(__('Create Fees'), function() {
|
||||
frm.doc.fee_creation_status = "In Process";
|
||||
frm.save();
|
||||
frappe.call({
|
||||
method: "create_fees",
|
||||
doc: frm.doc,
|
||||
@ -65,6 +75,9 @@ frappe.ui.form.on('Fee Schedule', {
|
||||
});
|
||||
}, "fa fa-play", "btn-success");
|
||||
}
|
||||
if (frm.doc.fee_creation_status==="Successful") {
|
||||
frm.set_read_only();
|
||||
}
|
||||
},
|
||||
|
||||
fee_structure: function(frm) {
|
||||
@ -98,6 +111,6 @@ frappe.ui.form.on("Fee Schedule Student Group", {
|
||||
frappe.model.set_value(cdt, cdn, "total_students", r.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
})
|
@ -39,7 +39,7 @@
|
||||
"read_only": 0,
|
||||
"remember_last_selected_value": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0,
|
||||
"unique": 0
|
||||
@ -1029,7 +1029,7 @@
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"max_attachments": 0,
|
||||
"modified": "2017-09-11 16:57:27.427777",
|
||||
"modified": "2017-09-12 02:03:37.062064",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Schools",
|
||||
"name": "Fee Schedule",
|
||||
|
@ -4,7 +4,6 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
from frappe.utils import money_in_words
|
||||
@ -40,9 +39,8 @@ class FeeSchedule(Document):
|
||||
self.grand_total_in_words = money_in_words(self.grand_total)
|
||||
|
||||
def create_fees(self):
|
||||
if not self.fee_creation_status or self.fee_creation_status == "Failed":
|
||||
self.fee_creation_status = "In Process"
|
||||
frappe.publish_realtime("fee_schedule_progress", {"progress": 0, "reload": True}, user=frappe.session.user)
|
||||
if self.fee_creation_status == "In Process":
|
||||
frappe.publish_realtime("fee_schedule_progress", {"progress": "0", "reload": 1}, user=frappe.session.user)
|
||||
enqueue(generate_fee, queue='default', timeout=6000, event='generate_fee',
|
||||
fee_schedule=self.name)
|
||||
|
||||
@ -52,15 +50,13 @@ def generate_fee(fee_schedule):
|
||||
total_records = sum([int(d.total_students) for d in doc.student_groups])
|
||||
created_records = 0
|
||||
for d in doc.student_groups:
|
||||
try:
|
||||
students = frappe.db.sql(""" select sg.program, sg.batch, sgs.student, sgs.student_name
|
||||
from `tabStudent Group` sg, `tabStudent Group Student` sgs
|
||||
where sg.name=%s and sg.name=sgs.parent and sgs.active=1""", d.student_group, as_dict=1)
|
||||
students = frappe.db.sql(""" select sg.program, sg.batch, sgs.student, sgs.student_name
|
||||
from `tabStudent Group` sg, `tabStudent Group Student` sgs
|
||||
where sg.name=%s and sg.name=sgs.parent and sgs.active=1""", d.student_group, as_dict=1)
|
||||
|
||||
# students = frappe.get_all("Student Group Student", fields=["student", "student_name"],
|
||||
# filters={"parent": d.student_group, "parenttype": "Student Group", "active": 1})
|
||||
for student in students:
|
||||
doc = get_mapped_doc("Fee Schedule", fee_schedule, {
|
||||
for student in students:
|
||||
try:
|
||||
fees_doc = get_mapped_doc("Fee Schedule", fee_schedule, {
|
||||
"Fee Schedule": {
|
||||
"doctype": "Fees",
|
||||
"field_map": {
|
||||
@ -68,19 +64,19 @@ def generate_fee(fee_schedule):
|
||||
}
|
||||
}
|
||||
})
|
||||
doc.student = student.student
|
||||
doc.student_name = student.student_name
|
||||
doc.program = student.program
|
||||
doc.student_batch = student.batch
|
||||
doc.send_payment_request = 1
|
||||
doc.save()
|
||||
doc.submit()
|
||||
fees_doc.student = student.student
|
||||
fees_doc.student_name = student.student_name
|
||||
fees_doc.program = student.program
|
||||
fees_doc.student_batch = student.batch
|
||||
fees_doc.send_payment_request = doc.send_email
|
||||
fees_doc.save()
|
||||
fees_doc.submit()
|
||||
created_records += 1
|
||||
frappe.publish_realtime("fee_schedule_progress", {"progress": created_records}, user=frappe.session.user)
|
||||
frappe.publish_realtime("fee_schedule_progress", {"progress": str(int(created_records * 100/total_records))}, user=frappe.session.user)
|
||||
|
||||
except Exception as e:
|
||||
error = True
|
||||
err_msg = frappe.local.message_log and "\n\n".join(frappe.local.message_log) or cstr(e)
|
||||
except Exception as e:
|
||||
error = True
|
||||
err_msg = frappe.local.message_log and "\n\n".join(frappe.local.message_log) or cstr(e)
|
||||
|
||||
if error:
|
||||
frappe.db.rollback()
|
||||
@ -91,6 +87,8 @@ def generate_fee(fee_schedule):
|
||||
frappe.db.set_value("Fee Schedule", fee_schedule, "fee_creation_status", "Successful")
|
||||
frappe.db.set_value("Fee Schedule", fee_schedule, "error_log", None)
|
||||
|
||||
frappe.publish_realtime("fee_schedule_progress", {"progress": "100", "reload": 1}, user=frappe.session.user)
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_fee_structure(source_name,target_doc=None):
|
||||
|
Loading…
x
Reference in New Issue
Block a user