diff --git a/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js b/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js
index 9467d39116..f29bc890fc 100644
--- a/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js
+++ b/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js
@@ -1,25 +1,25 @@
frappe.ui.form.on("Employee Attendance Tool", {
- refresh:function(frm){
+ refresh: function(frm) {
frm.disable_save();
},
- onload:function(frm){
+ onload: function(frm) {
erpnext.employee_attendance_tool.load_employees(frm);
},
- date:function(frm){
+ date: function(frm) {
erpnext.employee_attendance_tool.load_employees(frm);
},
- department:function(frm){
+ department: function(frm) {
erpnext.employee_attendance_tool.load_employees(frm);
},
- branch:function(frm){
+ branch: function(frm) {
erpnext.employee_attendance_tool.load_employees(frm);
},
- company:function(frm){
+ company: function(frm) {
erpnext.employee_attendance_tool.load_employees(frm);
}
@@ -28,20 +28,20 @@ frappe.ui.form.on("Employee Attendance Tool", {
erpnext.employee_attendance_tool = {
- load_employees: function(frm){
- if(frm.doc.date){
+ load_employees: function(frm) {
+ if(frm.doc.date) {
frappe.call({
- method:"erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.get_employees",
- args:{
- date:frm.doc.date,
- department:frm.doc.department,
- branch:frm.doc.branch,
- company:frm.doc.company
+ method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.get_employees",
+ args: {
+ date: frm.doc.date,
+ department: frm.doc.department,
+ branch: frm.doc.branch,
+ company: frm.doc.company
},
- callback:function(r){
- if(r.message['unmarked'].length > 0){
+ callback: function(r) {
+ if(r.message['unmarked'].length > 0) {
unhide_field('unmarked_attendance_section')
- if(!frm.employee_area){
+ if(!frm.employee_area) {
frm.employee_area = $('
')
.appendTo(frm.fields_dict.employees_html.wrapper);
}
@@ -51,14 +51,13 @@ erpnext.employee_attendance_tool = {
hide_field('unmarked_attendance_section')
}
- if(r.message['marked'].length > 0){
+ if(r.message['marked'].length > 0) {
unhide_field('marked_attendance_section')
- if(!frm.marked_employee_area){
-
+ if(!frm.marked_employee_area) {
frm.marked_employee_area = $('
')
- .appendTo(frm.fields_dict.marked_attendance_html.wrapper);
+ .appendTo(frm.fields_dict.marked_attendance_html.wrapper);
}
- frm.MarkedEmployee = new erpnext.MarkedEmployee(frm, frm.marked_employee_area, r.message['marked'])
+ frm.marked_employee = new erpnext.MarkedEmployee(frm, frm.marked_employee_area, r.message['marked'])
}
else{
hide_field('marked_attendance_section')
@@ -79,18 +78,30 @@ erpnext.MarkedEmployee = Class.extend({
var me = this;
$(this.wrapper).empty();
+ var row;
$.each(employee, function(i, m) {
- var attendance_icon = "'icon-check'"
+ var attendance_icon = "icon-check";
+ var color_class = "";
if(m.status == "Absent") {
- attendance_icon="'icon-check-empty'"
+ attendance_icon = "icon-check-empty"
+ color_class = "text-muted";
}
- else if(m.status == "Half Day"){
- attendance_icon = "'icon-check-minus'"
+ else if(m.status == "Half Day") {
+ attendance_icon = "icon-check-minus"
}
- $(repl('
\
-
', {
+ employee: m.employee_name,
+ icon: attendance_icon,
+ color_class: color_class
+ })).appendTo(row);
});
}
});
@@ -104,7 +115,7 @@ erpnext.EmployeeSelector = Class.extend({
},
make: function(frm, employee) {
var me = this;
-
+
$(this.wrapper).empty();
var employee_toolbar = $('
\
\
@@ -112,121 +123,121 @@ erpnext.EmployeeSelector = Class.extend({
').appendTo($(this.wrapper));
var mark_employee_toolbar = $('
\
- \
- \
-
')
+
\
+
\
+
')
employee_toolbar.find(".btn-add")
- .html(__('Check all'))
- .on("click", function() {
- $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
- if(!$(check).is(":checked")) {
- check.checked = true;
- }
+ .html(__('Check all'))
+ .on("click", function() {
+ $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
+ if(!$(check).is(":checked")) {
+ check.checked = true;
+ }
+ });
});
- });
employee_toolbar.find(".btn-remove")
- .html(__('Uncheck all'))
- .on("click", function() {
- $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
- if($(check).is(":checked")) {
- check.checked = false;
- }
+ .html(__('Uncheck all'))
+ .on("click", function() {
+ $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
+ if($(check).is(":checked")) {
+ check.checked = false;
+ }
+ });
});
- });
-
+
mark_employee_toolbar.find(".btn-mark-present")
- .html(__('Mark Present'))
- .on("click", function() {
- var employee_present = [];
- $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
- if($(check).is(":checked")) {
- employee_present.push(employee[i]);
- }
- });
- frappe.call({
- method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.mark_employee_attendance",
- args:{
- "employee_list":employee_present,
- "status":"Present",
- "date":frm.doc.date,
- "company":frm.doc.company
- },
+ .html(__('Mark Present'))
+ .on("click", function() {
+ var employee_present = [];
+ $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
+ if($(check).is(":checked")) {
+ employee_present.push(employee[i]);
+ }
+ });
+ frappe.call({
+ method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.mark_employee_attendance",
+ args:{
+ "employee_list":employee_present,
+ "status":"Present",
+ "date":frm.doc.date,
+ "company":frm.doc.company
+ },
- callback: function(r) {
- erpnext.employee_attendance_tool.load_employees(frm);
+ callback: function(r) {
+ erpnext.employee_attendance_tool.load_employees(frm);
- }
+ }
+ });
});
- });
mark_employee_toolbar.find(".btn-mark-absent")
- .html(__('Mark Absent'))
- .on("click", function() {
- var employee_absent = [];
- $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
- if($(check).is(":checked")) {
- employee_absent.push(employee[i]);
- }
- });
- frappe.call({
- method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.mark_employee_attendance",
- args:{
- "employee_list":employee_absent,
- "status":"Absent",
- "date":frm.doc.date,
- "company":frm.doc.company
- },
+ .html(__('Mark Absent'))
+ .on("click", function() {
+ var employee_absent = [];
+ $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
+ if($(check).is(":checked")) {
+ employee_absent.push(employee[i]);
+ }
+ });
+ frappe.call({
+ method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.mark_employee_attendance",
+ args:{
+ "employee_list":employee_absent,
+ "status":"Absent",
+ "date":frm.doc.date,
+ "company":frm.doc.company
+ },
- callback: function(r) {
- erpnext.employee_attendance_tool.load_employees(frm);
+ callback: function(r) {
+ erpnext.employee_attendance_tool.load_employees(frm);
- }
+ }
+ });
});
- });
mark_employee_toolbar.find(".btn-mark-half-day")
- .html(__('Mark Half Day'))
- .on("click", function() {
- var employee_half_day = [];
- $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
- if($(check).is(":checked")) {
- employee_half_day.push(employee[i]);
- }
+ .html(__('Mark Half Day'))
+ .on("click", function() {
+ var employee_half_day = [];
+ $(me.wrapper).find('input[type="checkbox"]').each(function(i, check) {
+ if($(check).is(":checked")) {
+ employee_half_day.push(employee[i]);
+ }
+ });
+ frappe.call({
+ method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.mark_employee_attendance",
+ args:{
+ "employee_list":employee_half_day,
+ "status":"Half Day",
+ "date":frm.doc.date,
+ "company":frm.doc.company
+ },
+
+ callback: function(r) {
+ erpnext.employee_attendance_tool.load_employees(frm);
+
+ }
+ });
});
- frappe.call({
- method: "erpnext.hr.doctype.employee_attendance_tool.employee_attendance_tool.mark_employee_attendance",
- args:{
- "employee_list":employee_half_day,
- "status":"Half Day",
- "date":frm.doc.date,
- "company":frm.doc.company
- },
- callback: function(r) {
- erpnext.employee_attendance_tool.load_employees(frm);
- }
- });
- });
-
-
+ var row;
$.each(employee, function(i, m) {
+ if (i===0 || (i % 4) === 0) {
+ row = $('
').appendTo(me.wrapper);
+ }
+
$(repl('
', {employee: m.employee_name})).appendTo(me.wrapper);
-
-
-
+
', {employee: m.employee_name})).appendTo(row);
});
mark_employee_toolbar.appendTo($(this.wrapper));
-
-
}
});
diff --git a/erpnext/hr/report/employee_holiday_attendance/employee_holiday_attendance.py b/erpnext/hr/report/employee_holiday_attendance/employee_holiday_attendance.py
index ce8d5dd35d..ac51b57274 100644
--- a/erpnext/hr/report/employee_holiday_attendance/employee_holiday_attendance.py
+++ b/erpnext/hr/report/employee_holiday_attendance/employee_holiday_attendance.py
@@ -16,11 +16,12 @@ def execute(filters=None):
def get_columns():
-
return [
- _("Employee") + ":Link/Employee:120", _("Name") + ":Data:200", _("Date")+ ":Date:100",
- _("Status") + ":Data:70",_("Holiday") + ":Data:200"
-
+ _("Employee") + ":Link/Employee:120",
+ _("Name") + ":Data:200",
+ _("Date")+ ":Date:100",
+ _("Status") + ":Data:70",
+ _("Holiday") + ":Data:200"
]
@@ -30,14 +31,17 @@ def get_employees():
holidays_list = []
for holiday in holidays:
- holidays_list.append("'" + holiday.holiday_date.strftime('%Y-%m-%d') + "'")
+ holidays_list.append(holiday.holiday_date)
holiday_names[holiday.holiday_date] = holiday.description
- employee_list = frappe.db.sql(
- "select employee, employee_name, att_date, status from tabAttendance where att_date in ("
- + ', '.join(holidays_list) + ")",
- as_list=True)
+ employee_list = frappe.db.sql("""select
+ employee, employee_name, att_date, status
+ from tabAttendance
+ where
+ att_date in ({0})""".format(', '.join(["%s"]*len(holidays_list))),
+ holidays_list, as_list=True)
for employee_data in employee_list:
employee_data.append(holiday_names[employee_data[2]])
+
return employee_list