fix: error in bulk attendance (#24806)
* fix: error in bulk attendance * fix: no date selected scenario * fix: translation and sider
This commit is contained in:
parent
78777d6ed4
commit
d7ac2394e8
@ -131,6 +131,10 @@ def mark_bulk_attendance(data):
|
|||||||
data = json.loads(data)
|
data = json.loads(data)
|
||||||
data = frappe._dict(data)
|
data = frappe._dict(data)
|
||||||
company = frappe.get_value('Employee', data.employee, 'company')
|
company = frappe.get_value('Employee', data.employee, 'company')
|
||||||
|
if not data.unmarked_days:
|
||||||
|
frappe.throw(_("Please select a date."))
|
||||||
|
return
|
||||||
|
|
||||||
for date in data.unmarked_days:
|
for date in data.unmarked_days:
|
||||||
doc_dict = {
|
doc_dict = {
|
||||||
'doctype': 'Attendance',
|
'doctype': 'Attendance',
|
||||||
|
@ -12,7 +12,7 @@ frappe.listview_settings['Attendance'] = {
|
|||||||
onload: function(list_view) {
|
onload: function(list_view) {
|
||||||
let me = this;
|
let me = this;
|
||||||
const months = moment.months()
|
const months = moment.months()
|
||||||
list_view.page.add_inner_button( __("Mark Attendance"), function(){
|
list_view.page.add_inner_button( __("Mark Attendance"), function() {
|
||||||
let dialog = new frappe.ui.Dialog({
|
let dialog = new frappe.ui.Dialog({
|
||||||
title: __("Mark Attendance"),
|
title: __("Mark Attendance"),
|
||||||
fields: [
|
fields: [
|
||||||
@ -22,11 +22,12 @@ frappe.listview_settings['Attendance'] = {
|
|||||||
fieldtype: 'Link',
|
fieldtype: 'Link',
|
||||||
options: 'Employee',
|
options: 'Employee',
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
onchange: function(){
|
onchange: function() {
|
||||||
dialog.set_df_property("unmarked_days", "hidden", 1);
|
dialog.set_df_property("unmarked_days", "hidden", 1);
|
||||||
dialog.set_df_property("status", "hidden", 1);
|
dialog.set_df_property("status", "hidden", 1);
|
||||||
dialog.set_df_property("month", "value", '');
|
dialog.set_df_property("month", "value", '');
|
||||||
dialog.set_df_property("unmarked_days", "options", []);
|
dialog.set_df_property("unmarked_days", "options", []);
|
||||||
|
dialog.no_unmarked_days_left = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -35,13 +36,18 @@ frappe.listview_settings['Attendance'] = {
|
|||||||
fieldname: "month",
|
fieldname: "month",
|
||||||
options: months,
|
options: months,
|
||||||
reqd: 1,
|
reqd: 1,
|
||||||
onchange: function(){
|
onchange: function() {
|
||||||
if(dialog.fields_dict.employee.value && dialog.fields_dict.month.value) {
|
if(dialog.fields_dict.employee.value && dialog.fields_dict.month.value) {
|
||||||
dialog.set_df_property("status", "hidden", 0);
|
dialog.set_df_property("status", "hidden", 0);
|
||||||
dialog.set_df_property("unmarked_days", "options", []);
|
dialog.set_df_property("unmarked_days", "options", []);
|
||||||
|
dialog.no_unmarked_days_left = false;
|
||||||
me.get_multi_select_options(dialog.fields_dict.employee.value, dialog.fields_dict.month.value).then(options =>{
|
me.get_multi_select_options(dialog.fields_dict.employee.value, dialog.fields_dict.month.value).then(options =>{
|
||||||
dialog.set_df_property("unmarked_days", "hidden", 0);
|
if (options.length > 0) {
|
||||||
dialog.set_df_property("unmarked_days", "options", options);
|
dialog.set_df_property("unmarked_days", "hidden", 0);
|
||||||
|
dialog.set_df_property("unmarked_days", "options", options);
|
||||||
|
} else {
|
||||||
|
dialog.no_unmarked_days_left = true;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -64,21 +70,25 @@ frappe.listview_settings['Attendance'] = {
|
|||||||
hidden: 1
|
hidden: 1
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
primary_action(data){
|
primary_action(data) {
|
||||||
frappe.confirm(__('Mark attendance as <b>' + data.status + '</b> for <b>' + data.month +'</b>' + ' on selected dates?'), () => {
|
if (cur_dialog.no_unmarked_days_left) {
|
||||||
frappe.call({
|
frappe.msgprint(__("Attendance for the month of {0} , has already been marked for the Employee {1}",[dialog.fields_dict.month.value, dialog.fields_dict.employee.value]));
|
||||||
method: "erpnext.hr.doctype.attendance.attendance.mark_bulk_attendance",
|
} else {
|
||||||
args: {
|
frappe.confirm(__('Mark attendance as {0} for {1} on selected dates?', [data.status,data.month]), () => {
|
||||||
data : data
|
frappe.call({
|
||||||
},
|
method: "erpnext.hr.doctype.attendance.attendance.mark_bulk_attendance",
|
||||||
callback: function(r) {
|
args: {
|
||||||
if(r.message === 1) {
|
data: data
|
||||||
frappe.show_alert({message:__("Attendance Marked"), indicator:'blue'});
|
},
|
||||||
cur_dialog.hide();
|
callback: function(r) {
|
||||||
|
if (r.message === 1) {
|
||||||
|
frappe.show_alert({message: __("Attendance Marked"), indicator: 'blue'});
|
||||||
|
cur_dialog.hide();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
list_view.refresh();
|
list_view.refresh();
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user