![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/keeview_app/html/ |
Upload File : |
hr.advance_payment_request.deleteAdvance_payment_request = function(host, id){ ModalElement.show_loading(); FormClass.api_call({ url: "employee_benefit_and_liability_request_delete.php", params: [ {name: "id", value: id}, {name: "type", value: "advance_payment"} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var index = host.database.advance_payment_request.getIndex(id); host.database.advance_payment_request.items.splice(index, 1); host.database.employee_benefit_and_liability_request_approvers.items = host.database.employee_benefit_and_liability_request_approvers.items.filter(function(item){ return item.requestid != id; }); hr.advance_payment_request.redraw(host); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "failed_calc"){ ModalElement.alert({ message: LanguageModule.text("war_txt_can_not_delete_request") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.advance_payment_request.deleteAdvance_payment_requestConfirm = function(host, id){ var index = host.database.advance_payment_request.getIndex(id); ModalElement.question({ title: LanguageModule.text("war_title_delete_advance_payment_request"), message: LanguageModule.text2("war_txt_detele", [""]), onclick: function(sel){ if (sel == 0){ hr.advance_payment_request.deleteAdvance_payment_request(host, id); } } }); }; hr.advance_payment_request.cancelAdvance_payment_request = function(host, id){ ModalElement.show_loading(); FormClass.api_call({ url: "employee_benefit_and_liability_request_cancel.php", params: [ {name: "id", value: id}, {name: "type", value: "advance_payment"} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var index = host.database.advance_payment_request.getIndex(id); host.database.advance_payment_request.items[index].status = 3; host.database.advance_payment_request.items[index].statusType = "canceled"; hr.advance_payment_request.redraw(host); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "failed_calc"){ ModalElement.alert({ message: LanguageModule.text("war_txt_can_not_cancel_request") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.advance_payment_request.cancelAdvance_payment_requestConfirm = function(host, id){ var index = host.database.advance_payment_request.getIndex(id); ModalElement.question({ title: LanguageModule.text("war_title_cancel_advance_payment_request"), message: LanguageModule.text("war_txt_cancel_advance_payment_request"), onclick: function(sel){ if (sel == 0){ hr.advance_payment_request.cancelAdvance_payment_request(host, id); } } }); }; hr.advance_payment_request.approvalRequest = function(host, id, inside){ var listData = []; if (!id){ host.database.advance_payment_request.items.forEach(function(item){ if (host.inputidboxes["checkbox_" + item.id] && host.inputidboxes["checkbox_" + item.id].checked){ listData.push(item); } }); } else { var index = host.database.advance_payment_request.getIndex(id); listData = [host.database.advance_payment_request.items[index]]; } if (listData.length == 0) return; console.log(listData); ModalElement.show_loading(); FormClass.api_call({ url: "employee_benefit_and_liability_request_approval.php", params: [ {name: "listData", value: EncodingClass.string.fromVariable(listData)}, {name: "type", value: "advance_payment"} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ host.status_select.value = "all"; hr.advance_payment_request.init2(host).then(function(){ if (inside){ host.frameList.removeLast(); ModalElement.close(); hr.advance_payment_request.viewAdvance_payment_requestPre(host, host.id); } else { ModalElement.close(-1); } }); } else if (message == "failed_employee"){ ModalElement.alert({message: LanguageModule.text("war_user_not_link_employee")}); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.advance_payment_request.denyRequest = function(host, listData, comment, inside){ ModalElement.show_loading(); FormClass.api_call({ url: "employee_benefit_and_liability_request_deny.php", params: [ {name: "listData", value: EncodingClass.string.fromVariable(listData)}, {name: "type", value: "advance_payment"}, {name: "comment", value: comment} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ ModalElement.close(); if (host.status_select.value != "all") host.status_select.value = "deny"; hr.advance_payment_request.init2(host).then(function(){ if (inside){ host.frameList.removeLast(); hr.advance_payment_request.viewAdvance_payment_requestPre(host, host.id); } else { ModalElement.close(-1); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.advance_payment_request.denyRequestConfirm = function(host, id, inside){ var listData = []; if (!id){ host.database.advance_payment_request.items.forEach(function(item){ if (host.inputidboxes["checkbox_" + item.id] && host.inputidboxes["checkbox_" + item.id].checked){ listData.push(item); } }); } else { var index = host.database.advance_payment_request.getIndex(id); listData = [host.database.advance_payment_request.items[index]]; } if (listData.length == 0) return; var comment_input = DOMElement.textarea({ attrs: { className: "cardSimpleTextarea", style: { minWidth: "250px", width: "100%", height: "100px" } } }); ModalElement.showWindow({ title: LanguageModule.text("txt_deny_request"), bodycontent: DOMElement.div({ children: [ DOMElement.div({ attrs: { style: { height: "var(--control-height)", lineHeight: "var(--control-height)", width: "300px" } }, text: LanguageModule.text("txt_reason_deny") }), comment_input ] }), buttonlist: [ { text: LanguageModule.text("txt_save"), onclick: function(){ ModalElement.close(); var comment = comment_input.value.trim(); hr.advance_payment_request.denyRequest(host, listData, comment, inside); } }, { text: LanguageModule.text("txt_cancel"), onclick: function(){ ModalElement.close(); } } ] }); comment_input.focus(); }; hr.advance_payment_request.addAdvance_payment_requestSubmit = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction(); if (!data) return; data.status = 0; if (id != 0){ var ischange = contentModule.isChanged(host.dataAdvance_payment_requestEdit, data, ["employeeid", "policyid", "amount", "date", "reason", "attachments", "extrainfo", "status"]); if (!ischange){ resolve(); return; } } data.id = id; var isCheckTime; if (id > 0){ if (EncodingClass.string.compare(data.date, host.dataAdvance_payment_requestEdit.date)){ isCheckTime = true; } } else { isCheckTime = true; } if (id != 0){ data.ver = host.dataAdvance_payment_requestEdit.ver; } else { data.ver = 1; } var pIndex = host.database.advance_payment_policies.getIndex(data.policyid); if (pIndex >= 0){ if (isCheckTime){ if (host.database.advance_payment_policies.items[pIndex].proposal_submitted_before > 0){ if ((new Date()).getTime() + host.database.advance_payment_policies.items[pIndex].proposal_submitted_before*24*60*60*1000 > data.date.getTime()){ ModalElement.alert({message: LanguageModule.text("war_txt_date_request_leave_invalid")}); return; } } } } data.type = "advance_payment"; data.extrainfo = EncodingClass.string.fromVariable(data.extrainfo); data.attachments = EncodingClass.string.fromVariable(data.attachments); ModalElement.show_loading(); FormClass.api_call({ url: "employee_benefit_and_liability_request_save.php", params: [{name: "data", value: EncodingClass.string.fromVariable(data)}], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); st.extrainfo = EncodingClass.string.toVariable(st.extrainfo); st.attachments = EncodingClass.string.toVariable(st.attachments); if (host.policy_select.value != 0) host.policy_select.value = st.policyid; resolve(); if (id != 0){ var index = host.database.advance_payment_request.getIndex(id); st.status = host.database.advance_payment_request.items[index].status; host.database.advance_payment_request.items[index] = st; host.dataAdvance_payment_requestEdit = host.database.advance_payment_request.items[index]; hr.advance_payment_request.makePrivilegeAdvancePaymentRequest(host); host.drawGeneralInforFunc(); host.drawIntroFunc(); } else { id = st.id; data.id = id; st.status = 0; host.database.advance_payment_request.items.push(st); host.dataAdvance_payment_requestEdit = st; hr.advance_payment_request.makePrivilegeAdvancePaymentRequest(host); hr.advance_payment_request.viewAdvance_payment_requestPre(host); } } else if (message.startsWith("approved")){ ModalElement.alert({ message: "Đề xuất đã được duyệt, không được sửa", func: function(){ var st = EncodingClass.string.toVariable(message.substr("approved".length)); resolve(); host.database.employee_benefit_and_liability_request_approvers.items = host.database.employee_benefit_and_liability_request_approvers.items.filter(function(item){ return item.requestid != id; }); host.database.employee_benefit_and_liability_request_approvers.items = host.database.employee_benefit_and_liability_request_approvers.items.concat(st); host.drawIntroFunc(); host.drawGeneralInforFunc(); host.drawApprovalFunc(); } }); } else if (message == "amount_invalid") { ModalElement.alert({message: LanguageModule.text("txt_the_proposal_amount_is_not_valid")}); } else if (message == "not_employee_salary_decisions") { ModalElement.alert({message: LanguageModule.text("txt_the_proposal_amount_is_not_valid_because_you_dont_have_an_active_salary_decision")}); } else if (message == "lock_system"){ ModalElement.alert({message: LanguageModule.text("war_txt_system_lock")}); } else if (message == "deleted" || message == "edited"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_ver_reload_data") }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.advance_payment_request.addAdvance_payment_requestClose = function(host, id, getValueFunction){ return new Promise(function(resolve, reject){ var data = getValueFunction("no_alert"); if (!data) { resolve(); return; } var oldData; if (id != 0){ oldData = host.dataAdvance_payment_requestEdit; } else { oldData = { employeeid: 0, policyid: 0, amount: 0, date: new Date(), reason: "", attachments: [], extrainfo: {} }; } var ischange = contentModule.isChanged(oldData, data, ["employeeid", "policyid", "amount", "date", "reason", "attachments", "extrainfo"]); if (!ischange){ resolve(); return; } contentModule.questionChange({ onclick: function(sel){ if (sel == 0){ hr.advance_payment_request.addAdvance_payment_requestSubmit(host, id, getValueFunction).then(function(){ resolve(); }); } else if (sel == 1){ resolve(); } } }); }); }; hr.advance_payment_request.redrawDetails = function(host, id){ function redraw(value){ theme.formAdvance_payment_requestEdit({ id: id, value: value, form_config: data_module.form_config, database: host.database, employeeOfMe: host.employeeOfMe, frameList: host.frameList, cmdbutton: { save: function(getValueFunction){ return new Promise(function(rs, rj){ hr.advance_payment_request.addAdvance_payment_requestSubmit(host, id, getValueFunction).then(function(){ rs(); }); }); }, cancel: function(getValueFunction){ return new Promise(function(rs, rj){ hr.advance_payment_request.addAdvance_payment_requestClose(host, id, getValueFunction).then(function(){ rs(); }); }) } } }); }; if (id != 0){ redraw(host.dataAdvance_payment_requestEdit); } else { redraw(); } }; hr.advance_payment_request.addAdvance_payment_request = function(host, id){ if (id == 0){ hr.advance_payment_request.redrawDetails(host, id); } else { ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "advance_payment_request_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); host.dataAdvance_payment_requestEdit = st; if (host.dataAdvance_payment_requestEdit.extrainfo == "") host.dataAdvance_payment_requestEdit.extrainfo = {}; else host.dataAdvance_payment_requestEdit.extrainfo = EncodingClass.string.toVariable(host.dataAdvance_payment_requestEdit.extrainfo); if (host.dataAdvance_payment_requestEdit.attachments == "") host.dataAdvance_payment_requestEdit.attachments = {}; else host.dataAdvance_payment_requestEdit.attachments = EncodingClass.string.toVariable(host.dataAdvance_payment_requestEdit.attachments); hr.advance_payment_request.redrawDetails(host, id); } else if (message == "war_txt_failed_data"){ ModalElement.alert({ message: LanguageModule.text("war_txt_failed_data"), func: function(){ hr.advance_payment_request.init2(host); } }); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); } }; hr.advance_payment_request.drawIntro = function(host){ var res = DOMElement.div({ attrs: { className: "hr-intro-view-form request-approval-list" } }); host.drawIntroFunc = function(){ var index = host.database.advance_payment_request.getIndex(host.id); var pIndex = host.database.advance_payment_policies.getIndex(host.database.advance_payment_request.items[index].policyid); var eIndex = host.employeeDic[host.database.advance_payment_request.items[index].employeeid]; var fullname = host.database.employees.items[eIndex].fullname; var oIndex = host.database.employees.items[eIndex].orgIndex; var orgName = host.database.orgs.items[oIndex].name; var statusElt; switch (host.dataAdvance_payment_requestEdit.status) { case 0: var datetime = host.database.advance_payment_request.items[index].fromdate.setHours(0, 0, 0, 0); var expire_time = datetime - host.database.advance_payment_policies.items[pIndex].time_hours_needed_for_approval*60*60*1000; if (new Date().getTime() > expire_time){ statusElt = DOMElement.div({ attrs: { className: "hr-status-view-btn over-due" }, text: LanguageModule.text("txt_over_due") }); } else { var remainTime = expire_time - new Date().getTime(); if (remainTime > 24*60*60*1000){ statusElt = DOMElement.div({ attrs: { className: "hr-status-view-btn waiting-approval" }, text: LanguageModule.text("txt_waiting_approval") }); } else { var countdownText = absol.buildDom({ tag: 'countdowntext', props: { finishTime: new Date(expire_time), format: "HH:mm:ss" }, on: { finish: function(){ hr.advance_payment_request.init2(host); host.frameList.removeLast(); hr.advance_payment_request.viewAdvance_payment_requestPre(host, host.id); } } }); statusElt = DOMElement.div({ attrs: { className: "hr-status-view-btn waiting-approval" }, children: [ DOMElement.span({ attrs: { style: {marginRight: "5px"} }, text: LanguageModule.text("txt_waiting_approval") }), countdownText ] }); } } break; case 1: statusElt = DOMElement.div({ attrs: { className: "hr-status-view-btn approved" }, text: LanguageModule.text("txt_approved") }); break; case 2: statusElt = DOMElement.div({ attrs: { className: "hr-status-view-btn deny" }, text: LanguageModule.text("txt_deny") }); break; case 3: statusElt = DOMElement.div({ attrs: { className: "hr-status-view-btn canceled" }, text: LanguageModule.text("txt_canceled") }); break; } DOMElement.removeAllChildren(res); res.appendChild(DOMElement.table({ data: [ [ {text: LanguageModule.text("txt_approval_status")}, {attrs: {style: {width: "40px"}}}, statusElt ] ] })); }; host.drawIntroFunc(); return res; }; hr.advance_payment_request.drawGeneralInformation = function(host){ var cmdbutton = {}; if (host.dataAdvance_payment_requestEdit.privEdit) cmdbutton.editFunc = function(){ hr.advance_payment_request.addAdvance_payment_request(host, host.id); }; var res = theme.showAdvancePaymentRequestGeneralInfomation({ cmdbutton: cmdbutton }); host.drawGeneralInforFunc = function(){ contentModule.makeOutputFormData({ typeid: data_module.form_config.request_advance_payment.typeid, formid: hr.isMobile? data_module.form_config.request_advance_payment.mobile_output_form : data_module.form_config.request_advance_payment.output_form, initialValue: host.dataAdvance_payment_requestEdit, formContainer: res.viewGeneralInformation, typelists: data_module.typelists.items, variableType: "system" }).then(function(getValue){ res.viewGeneralInformation.formFragment.setContext('host', host); }); }; contentModule.getApproversTextOfPolicy(host, "advance_payment", host.dataAdvance_payment_requestEdit.policyid, host.dataAdvance_payment_requestEdit.employeeid).then(function(value){ host.dataAdvance_payment_requestEdit.approvers = value; host.dataAdvance_payment_requestEdit.time_hours_needed_for_approval = contentModule.getTime_hours_needed_for_approvalByPolicy(host, "advance_payment", host.dataAdvance_payment_requestEdit.policyid); host.drawGeneralInforFunc(); }); return res; }; hr.advance_payment_request.drawApproval = function(host){ var getApprovalMethod = function(value){ var list = contentModule.getListApprovalMethod(); for (var i = 0; i < list.length; i++){ if (list[i].value == value) return list[i].text; } return ""; }; var pIndex = host.database.advance_payment_policies.getIndex(host.dataAdvance_payment_requestEdit.policyid); if (pIndex >= 0){ var approval_methodText = getApprovalMethod(host.database.advance_payment_policies.items[pIndex].approval_method); } else { return DOMElement.div({}); } var res = theme.showAdvancePaymentRequestApproval({ approval_methodText: approval_methodText }); host.drawApprovalFunc = function(){ res.drawApprovalFunc({ database: host.database, dataAdvance_payment_requestEdit: host.dataAdvance_payment_requestEdit, employeeDic: host.employeeDic }); }; host.drawApprovalFunc(); return res; }; hr.advance_payment_request.viewAdvance_payment_request = function(host, id){ host.id = id; var cmdbutton = {}; if (host.dataAdvance_payment_requestEdit.privApproval){ cmdbutton.approval = function(){ hr.advance_payment_request.approvalRequest(host, host.id, true); }; cmdbutton.deny = function(){ hr.advance_payment_request.denyRequestConfirm(host, host.id, true); }; } theme.showAdvancePaymentRequest({ id: host.id, frameList: host.frameList, cmdbutton: cmdbutton, info_ctn: hr.advance_payment_request.drawIntro(host), general_information_ctn: hr.advance_payment_request.drawGeneralInformation(host), approval_ctn: hr.advance_payment_request.drawApproval(host), holder: host.holder }); }; hr.advance_payment_request.viewAdvance_payment_requestPre = function(host, id){ var index = host.database.advance_payment_request.getIndex(id); if (index < 0 || !host.database.advance_payment_request.items[index].privView){ ModalElement.alert({message: LanguageModule.text("war_txt_no_privilege_view_request")}); return; } ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "view_advance_payment_request_load_by_id"}, {name: "id", value: id} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); st.data.extrainfo = EncodingClass.string.toVariable(st.data.extrainfo); st.data.attachments = EncodingClass.string.toVariable(st.data.attachments); host.database.advance_payment_request.items[index] = st.data; console.log(host.database.advance_payment_request.items[index]); host.database.employee_benefit_and_liability_request_approvers.items = host.database.employee_benefit_and_liability_request_approvers.items.filter(function(item){ return item.requestid != id; }); host.database.employee_benefit_and_liability_request_approvers.items = host.database.employee_benefit_and_liability_request_approvers.items.concat(st.employee_benefit_and_liability_request_approvers); host.dataAdvance_payment_requestEdit = host.database.advance_payment_request.items[index]; hr.advance_payment_request.makePrivilegeAdvancePaymentRequest(host); hr.advance_payment_request.viewAdvance_payment_request(host, id); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }; hr.advance_payment_request.getCellAdvance_payment_request = function(host, id){ var index = host.database.advance_payment_request.getIndex(id); var content = host.database.advance_payment_request.items[index]; var func = { view: function(resolve){ hr.advance_payment_request.viewAdvance_payment_requestPre(host, id); }, approval: function(){ hr.advance_payment_request.approvalRequest(host, id, false); }, deny: function(){ hr.advance_payment_request.denyRequestConfirm(host, id, false); } }; func.markedFunc = function(marked){ return new Promise(function(resolve, reject){ contentModule.markedFunc(host, { id: id, marked: marked, task: "advance_payment_request", tablename: "employee_benefit_and_liability_request" }).then(function(v){ resolve(v); }); }); }; if (content.privDel){ func.delete = function(){ hr.advance_payment_request.deleteAdvance_payment_requestConfirm(host, id); }; if (content.status == 0 || content.status == 1) func.cancel = function(){ hr.advance_payment_request.cancelAdvance_payment_requestConfirm(host, id); }; } var employeeIndex = host.employeeDic[content.employeeid]; var employeeName = host.database.employees.items[employeeIndex].fullname; var oIndex = host.database.employees.items[employeeIndex].orgIndex; var departmentName = host.database.orgs.items[oIndex].name; var row = EncodingClass.string.duplicate(content); row.employeeName = employeeName; row.departmentName = departmentName; switch (host.status_select.value) { case "waiting_approval": if (content.status != 0) return null; break; case "over_due": case "approved": case "deny": if (content.statusType != host.status_select.value) return null; break; default: } if (content.privApproval) host.hasPriv = true; row.status = content.statusType; row.func = func; return row; }; hr.advance_payment_request.toggleBtn = function(host){ if (hr.isMobile) return; var ex = 0; for (var i = 0; i < host.database.advance_payment_request.items.length; i++){ if (host.inputidboxes["checkbox_" + host.database.advance_payment_request.items[i].id]){ if (host.inputidboxes["checkbox_" + host.database.advance_payment_request.items[i].id].checked){ ex = 1; break; } } } if (ex){ host.approval_btn_ctn.classList.remove("hidden"); host.deny_btn_ctn.classList.remove("hidden"); } else { host.approval_btn_ctn.classList.add("hidden"); host.deny_btn_ctn.classList.add("hidden"); } }; hr.advance_payment_request.redraw = function(host){ host.hasPriv = false; host.inputidboxes = {}; hr.advance_payment_request.toggleBtn(host); var data = [], row; for (var i = 0; i < host.database.advance_payment_request.items.length; i++){ if (!host.database.advance_payment_request.items[i].privView) continue; if (host.policy_select.value != 0 && host.policy_select.value != host.database.advance_payment_request.items[i].policyid) continue; row = hr.advance_payment_request.getCellAdvance_payment_request(host, host.database.advance_payment_request.items[i].id); if (row) data.push(row); } DOMElement.removeAllChildren(host.data_container); var checkbox_all; if (host.hasPriv){ checkbox_all = absol.buildDom({ tag: "checkbox", on: { change: function(){ var item; for (var i = 0; i < host.database.advance_payment_request.items.length; i++){ item = host.database.advance_payment_request.items[i]; if (host.inputidboxes["checkbox_" + item.id]){ host.inputidboxes["checkbox_" + item.id].checked = this.checked; } } hr.advance_payment_request.toggleBtn(host); } } }); } else { checkbox_all = DOMElement.span({}); } host.dataView = theme.formAdvance_payment_requestContentData({ data: data, inputsearchbox: host.inputsearchbox, checkbox_all: checkbox_all, inputidboxes: host.inputidboxes, toggleBtnFunc: function(){ hr.advance_payment_request.toggleBtn(host); }, configColumnAdvancePaymentRequest: host.configColumnAdvancePaymentRequest, configColumnFunc: host.configColumnFunc }); host.data_container.appendChild(host.dataView); }; hr.advance_payment_request.init3 = function(host){ var displayDic = { policyid: true, employeeid: true, date: true, reason: true, amount: true }; var columnList = contentModule.getColumnListFromDatatype(host, "request_advance_payment", displayDic); columnList.splice(1, 0, {value: "departmentName", display: true, main: true, type: -1, text: LanguageModule.text("txt_department")}); columnList.push({value: "status", display: true, main: true, type: -1, text: LanguageModule.text("txt_status")}); var redrawTableFunc = function(){ ModalElement.show_loading(); contentModule.getColumnListConfig(host, host.user_column_configsDic, columnList, "advance_payment_request_list").then(function(value){ ModalElement.close(-1); host.configColumnAdvancePaymentRequest = value; host.configColumnFunc = function(){ contentModule.userColumnConfigForm({ type: "advance_payment_request_list", columnList: columnList }).then(function(value){ host.user_column_configsDic["advance_payment_request_list"] = value; redrawTableFunc(); }); }; hr.advance_payment_request.redraw(host); }); }; redrawTableFunc(); }; hr.advance_payment_request.makePrivilegeAdvancePaymentRequest = function(host){ host.database.advance_payment_request.items.sort(function(a, b){ return a.fromdate.getTime() - b.fromdate.getTime(); }); var advance_payment_requestDic = contentModule.makeDictionaryIndex(host.database.advance_payment_request.items); var k; for (var i = 0; i < host.database.user_marked.items.length; i++){ k = advance_payment_requestDic[host.database.user_marked.items[i].taskid]; if (k >= 0) host.database.advance_payment_request.items[k].marked = true; } for (var i = 0; i < host.database.advance_payment_request.items.length; i++){ host.database.advance_payment_request.items[i].approverIds = []; } for (var i = 0; i < host.database.employee_benefit_and_liability_request_approvers.items.length; i++){ k = advance_payment_requestDic[host.database.employee_benefit_and_liability_request_approvers.items[i].requestid]; if (k >= 0){ host.database.advance_payment_request.items[k].approverIds.push(host.database.employee_benefit_and_liability_request_approvers.items[i].employeeid); } } var employeeid; var pIndex, employeeIndex; host.database.advance_payment_request.items.forEach(function(item){ employeeIndex = host.employeeDic[item.employeeid]; if (employeeIndex === undefined) return; employeeid = item.employeeid; pIndex = host.policyDic[item.policyid]; if (pIndex === undefined) return; if (systemconfig.privSystem >= 2){ item.privDel = true; } else if (item.userid == systemconfig.userid || (host.employeeOfMe.length > 0 && item.employeeid == host.employeeOfMe[0])){ item.privDel = true; } switch (item.status) { case 0: case 2: if (item.status == 0){ var time_hours_needed_for_approval = host.database.advance_payment_policies.items[host.policyDic[item.policyid]].time_hours_needed_for_approval; var datetime = item.fromdate.setHours(0, 0, 0, 0); if (datetime - time_hours_needed_for_approval*60*60*1000 < new Date().getTime()){ status = "over_due"; } else { status = "waiting_approval"; } } else if (item.status == 2){ status = "deny"; } if ((item.userid == systemconfig.userid || (host.employeeOfMe.length > 0 && item.employeeid == host.employeeOfMe[0])) && item.approverIds.length == 0){ item.privEdit = true; } if (host.database.advance_payment_policies.items[pIndex].direct_manager_approves_first){ if (host.directSubOfMe.indexOf(employeeid) >= 0){ item.privView = true; if (item.status == 0){ if (item.approverIds.indexOf(host.employeeOfMe[0]) < 0){ ex = true; item.privApproval = true; item.approvalRole = "direct_manager"; var done = !host.database.advance_payment_policies.items[pIndex].indirect_manager_approves_first; if (!done){ if (host.employeeOfMe[0] == host.database.employees.items[employeeIndex].indirect_manager) done = true; else if (item.approverIds.indexOf(host.database.employees.items[employeeIndex].indirect_manager) >= 0) done = true; } if (done){ host.database.advance_payment_policies.items[pIndex].approvers.forEach((ee) => { if (host.employeeOfMe[0] != ee.employeeid){ if (item.approverIds.indexOf(ee.employeeid) < 0) done = false; } }); } if (done) item.approvalUpdateStatus = true; } } } } if (host.database.advance_payment_policies.items[pIndex].indirect_manager_approves_first){ if (host.indirectSubOfMe.indexOf(employeeid) >= 0){ item.privView = true; if (item.status == 0){ if (item.approverIds.indexOf(host.employeeOfMe[0]) < 0){ ex = true; item.privApproval = true; item.approvalRole = "indirect_manager"; var done = !host.database.advance_payment_policies.items[pIndex].direct_manager_approves_first; if (!done){ if (host.employeeOfMe[0] == host.database.employees.items[employeeIndex].indirect_manager) done = true; else if (item.approverIds.indexOf(host.database.employees.items[employeeIndex].indirect_manager) >= 0) done = true; } if (done){ host.database.advance_payment_policies.items[pIndex].approvers.forEach((ee) => { if (host.employeeOfMe[0] != ee.employeeid){ if (item.approverIds.indexOf(ee.employeeid) < 0) done = false; } }); } if (done) item.approvalUpdateStatus = true; } } } } var prev_done = true; if (host.database.advance_payment_policies.items[pIndex].direct_manager_approves_first && host.database.employees.items[employeeIndex].direct_manager > 0){ var ex = false; if (item.approverIds.indexOf(host.database.employees.items[employeeIndex].direct_manager) >= 0) ex = true; if (!ex) prev_done = false; } if (prev_done){ if (host.database.advance_payment_policies.items[pIndex].indirect_manager_approves_first && host.database.employees.items[employeeIndex].indirect_manager > 0){ var ex = false; if (item.approverIds.indexOf(host.database.employees.items[employeeIndex].indirect_manager) >= 0) ex = true; if (!ex) prev_done = false; } } var approvers = host.database.advance_payment_policies.items[pIndex].approvers; var approval_method = host.database.advance_payment_policies.items[pIndex].approval_method; approvers.forEach(function(item1, stt){ var eid = item1.employeeid; if (host.employeeOfMe[0] == eid){ switch (approval_method){ case "one_approver": item.privView = true; break; case "parallel": item.privView = true; break; case "sequence": var checkMe = true; for (i = 0; i < stt; i++){ if (item.approverIds.indexOf(item1.employeeid) < 0){ checkMe = false; } } if (checkMe){ item.privView = true; } break; } } }); if (item.status == 0 && !item.privApproval && prev_done){ var ni; for (var i = 0; i < approvers.length; i++){ ni = approvers[i].employeeid; if (host.employeeOfMe.indexOf(ni) >= 0){ if (item.approverIds.indexOf(ni) < 0){ if (approval_method != "sequence"){ item.privApproval = true; item.approvalRole = ""; } else if (approval_method == "sequence" && prev_done) { item.privApproval = true; item.approvalRole = ""; } } break; } else { if (approval_method == "sequence" && item.approverIds.indexOf(ni) < 0){ prev_done = false; break; } } } if (item.privApproval){ if (approval_method == "one_approver"){ item.approvalUpdateStatus = true; } else { var done = true; for (var i = 0; i < approvers.length; i++){ ni = approvers[i].employeeid; if (ni != host.employeeOfMe[0]){ if (item.approverIds.indexOf(ni) < 0){ done = false; break; } } } if (done){ item.approvalUpdateStatus = true; } } } } if (item.userid == systemconfig.userid || host.employeeOfMe[0] == employeeid){ item.privView = true } break; case 1: status = "approved"; if (host.database.advance_payment_policies.items[pIndex].direct_manager_approves_first && host.directSubOfMe.indexOf(employeeid) >= 0){ item.privView = true; } if (host.database.advance_payment_policies.items[pIndex].indirect_manager_approves_first && host.indirectSubOfMe.indexOf(employeeid) >= 0){ item.privView = true; } var approvers = host.database.advance_payment_policies.items[pIndex].approvers; approvers.forEach(function(item1){ if (host.employeeOfMe.indexOf(item1.employeeid) >= 0){ item.privView = true; } }); break; case 3: status = "canceled"; if (host.database.advance_payment_policies.items[pIndex].indirect_manager_approves_first && host.indirectSubOfMe.indexOf(employeeid) >= 0){ item.privView = true; } var approvers = host.database.advance_payment_policies.items[pIndex].approvers; approvers.forEach(function(item1){ if (host.employeeOfMe.indexOf(item1.employeeid) >= 0){ item.privView = true; } }); break; default: } item.statusType = status; if (systemconfig.privSystem >= 2 || item.employeeid == host.employeeOfMe[0] || item.userid == systemconfig.userid){ item.privView = true; } }); if (hr.isMobile) hr.advance_payment_request.redraw(host); else hr.advance_payment_request.init3(host); }; hr.advance_payment_request.init2 = function(host){ return new Promise(function(resolveMn, rejectMn){ var employeeIdList = host.employee_select.values; employeeIdList.sort(function(a, b){ return a - b; }); if (employeeIdList.length == 0){ DOMElement.removeAllChildren(host.data_container); var st = { advance_payment_request: [], employee_benefit_and_liability_request_approvers: [] }; contentModule.makeDatabaseContent(host, st); return; } var timestart, timeend; switch (host.period_select.value) { case "month": timestart = absol.datetime.beginOfMonth(host.month_select.value); timeend = absol.datetime.nextMonth(host.month_select.value); break; case "quarter": timestart = absol.datetime.beginOfQuarter(host.quarter_select.value); timeend = absol.datetime.nextQuarter(host.quarter_select.value); break; case "year": timestart = absol.datetime.beginOfYear(host.year_select.value); timeend = absol.datetime.nextYear(host.year_select.value); break; } ModalElement.show_loading(); FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "advance_payment_request_load_init2"}, {name: "employeeIdList", value: EncodingClass.string.fromVariable(employeeIdList)}, {name: "timestart", value: EncodingClass.string.fromVariable(timestart)}, {name: "timeend", value: EncodingClass.string.fromVariable(timeend)}, {name: "status", value: host.status_select.value} ], func: function(success, message){ ModalElement.close(-1); if (success){ if (message.substr(0, 2) == "ok"){ var st = EncodingClass.string.toVariable(message.substr(2)); console.log(st); contentModule.makeDatabaseContent(host, st); hr.advance_payment_request.makePrivilegeAdvancePaymentRequest(host); resolveMn(host); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); }; hr.advance_payment_request.init = function(host){ return new Promise(function(resolveMn, rejectMn){ FormClass.api_call({ url: "database_load.php", params: [ {name: "task", value: "advance_payment_request_load_init"} ], func: function(success, message){ if (success){ if (message.substr(0, 2) == "ok"){ var content = EncodingClass.string.toVariable(message.substr(2)); contentModule.makeDatabaseContent(host, content); host.user_column_configsDic = contentModule.getUser_column_configsDic(host); host.policyDic = contentModule.makeDictionaryIndex(host.database.advance_payment_policies.items); var k; for (var i = 0; i < host.database.advance_payment_policies.items.length; i++){ host.database.advance_payment_policies.items[i].approvers = []; } for (var i = 0; i < host.database.policies_approvers.items.length; i++){ k = host.policyDic[host.database.policies_approvers.items[i].policyid]; host.database.advance_payment_policies.items[k].approvers.push(host.database.policies_approvers.items[i]); } host.employee_peopleDic = {}; for (var i = 0; i < host.database.employees.items.length; i++){ host.employee_peopleDic[host.database.employees.items[i].peopleid] = host.database.employees.items[i].id; } var listPolicy = []; for (var i = 0; i < host.database.advance_payment_policies.items.length; i++){ if (!host.database.advance_payment_policies.items[i].available) continue; listPolicy.push({ value: host.database.advance_payment_policies.items[i].id, text: host.database.advance_payment_policies.items[i].name }); } listPolicy.unshift({value: 0, text: LanguageModule.text("txt_all_policy")}); host.listPolicy = listPolicy; host.policy_change_func = function(){ hr.advance_payment_request.redraw(host); }; resolveMn(); } else { ModalElement.alert({message: message}); } } else { ModalElement.alert({message: message}); } } }); }); };