function Genworkplan(){ this.str = {}; } Genworkplan.prototype = jQuery.extend({} , Csc.prototype , { add : function(Emp,Stdate,lineno){ date = {}; date[Stdate]=Stdate; var strData = this.str[Emp]; if(strData){ strData.date[Stdate]=Stdate; }else{ this.str[Emp] ={ "empid": Emp, "date": date, "line" : lineno }; } }, sentdwr : function(){ someObject = this.str; //someObject.privateVar = jDate = JSON.stringify(this.str); someObject.callbackFunction = function(dataFromServer) { work_shift =$.parseJSON(dataFromServer); //alert(this); Callbackdwr(work_shift); } var callMetaData = { callback:someObject.callbackFunction, scope: someObject }; Trequest_ot_dwr.getWorkShift_boss(jDate, callMetaData); }, sentdwr_get_time0 : function(){ someObject = this.str; //someObject.privateVar = jDate = JSON.stringify(this.str); someObject.callbackFunction = function(dataFromServer) { work_shift =$.parseJSON(dataFromServer); //alert(this); Callback_gettime0(work_shift); } var callMetaData = { callback:someObject.callbackFunction, scope: someObject }; Trequest_ot_dwr.getWorkShift_boss(jDate, callMetaData); } }); function callbackFunction(dataFromServer, arg1) { // you will now have access to dataFromBrowser2 as arg1 // callbackArg overrides arg } function Callbackdwr(data) { returnData(data); } function Callback_gettime0(data){ set_time0id(data); } function CalculateOT(){ } CalculateOT.prototype = jQuery.extend({} , Csc.prototype , { cal_ot : function(op){ var opn = op , tz_pn = opn.tz_pn , tz_wk = opn.tz_wk , tz_next = opn.tz_next, tz_back = opn.tz_back, time0id = opn.time0id , work_start_time = opn.work_start_time, str_startTime=opn.str_startTime, str_endTime=opn.str_endTime; if( !tz_pn || !tz_wk || !tz_next){ return; } var start_w = tz_wk.getBeginZone() , end_w = tz_wk.getEndingZone(); var start_p = tz_pn.getBeginZone() , end_p = tz_pn.getEndingZone(); if(!start_w || !start_p || !end_w || !end_p ){ return; } var ot_hr = "0.00"; var hr_diff = this.diffIntersect(tz_pn,tz_wk); if(tz_pn.isType("T")){ if(hr_diff=="0.00"){ ot_hr = this.cal_time(start_w,end_w,hr_diff); } } return ot_hr; }, cal_ot1 : function (op,requestDate){ var opn = op , tz_pn = opn.tz_pn , tz_wk = opn.tz_wk , emp_every = opn.emp_every ; if( !tz_pn || !tz_wk ){ return; } var start_w = tz_wk.getBeginZone() , end_w = tz_wk.getEndingZone(); var start_p = tz_pn.getBeginZone() , end_p = tz_pn.getEndingZone(); if(!start_w || !start_p || !end_w || !end_p){ return; } var ot_hr = "0.00"; var hm_ot = {}; hm_ot["ot1"] = "0.00"; hm_ot["breakOT1"] = "false"; if(!tz_pn.isType("T")){ hm_ot = this.cal_ot_holiday(start_w,end_w,requestDate); } return hm_ot; }, cal_time : function (calendar_start,calendar_end,hr_break){ if( this.isCalendar(calendar_start) && this.isCalendar(calendar_end)){ try{ var hr_ot = new CscTime(); var hr = calendar_start.getDiffTime(calendar_end); hr_ot.incTime(hr); hr_ot.decTime(hr_break); return hr_ot.getHHMM(); }catch ( err ){ console.log(err.stack); } } return "0.00"; }, cal_ot_holiday : function(start_w,end_w,requestDate){ if( this.isCalendar(start_w) && this.isCalendar(end_w)){ try{ var ot1 = 0.00; var ot_hm = requestDate[start_w.getDDMMYYYY()]; if(ot_hm != undefined){ ot1 = ot_hm["ot1"]; } var hm_ot = {}; hm_ot["breakOT1"] = "false"; hm_ot["ot1"] = "0.00"; //var hr_break ="1.00"; //ชั่วโมงเบรค var hr = start_w.getDiffTime(end_w); var hr_int =parseFloat(hr); var hr_ot = new CscTime("0.00"); var hr_max = 24.00; // ชม.รวมสูงสุด ที่เป็น ot1เท่า var hr_begin_break = 5.00; // ชม.รวมที่เริ่มหักเบรค if(ot1 < 8.00 && ot_hm != undefined){ var total_ot = parseFloat(ot1) + parseFloat(hr); if(total_ot > hr_begin_break && total_ot <= hr_max && ot_hm["breakOT1"] == "false"){ hr_ot.setCscTime(hr); //hr_ot.decTime(hr_break); hm_ot["breakOT1"] = "true"; }else if(total_ot > hr_begin_break && total_ot >= hr_max && ot_hm["breakOT1"] == "false"){ hr_ot.setCscTime(parseFloat(hr_max) - parseFloat(ot1)); // hr_ot.decTime(hr_break); hm_ot["breakOT1"] = "true"; }else if(total_ot >= hr_max && ot_hm["breakOT1"] == "true"){ hr_ot.setCscTime(parseFloat(8.00) - parseFloat(ot1)); hm_ot["breakOT1"] = "true"; }else{ hr_ot.incTime(hr); } }else if(ot1 >= 8.00){ hm_ot["ot1"] = "0.00"; hm_ot["breakOT1"] = "true"; return hm_ot; }else if(hr_int>hr_max){ hr_ot.setCscTime(hr_max); //hr_ot.decTime(hr_break); hm_ot["breakOT1"] = "true"; }else if(hr_int>hr_begin_break && hr_int<=hr_max){ hr_ot.setCscTime(hr); // hr_ot.decTime(hr_break); hm_ot["breakOT1"] = "true"; }else{ hr_ot.incTime(hr); } hm_ot["ot1"] = hr_ot.getHHMM(); return hm_ot; }catch ( err ){ console.log(err.stack); } } return hm_ot; }, diffIntersect : function (tz_1,tz_2){ if(this.isTimeZone(tz_1) && this.isTimeZone(tz_2)){ try{ var hr_its ="0.00"; var start_date1 = tz_1.getBeginZone() , end_date1 = tz_1.getEndingZone(); var start_date2 = tz_2.getBeginZone() , end_date2 = tz_2.getEndingZone(); if(tz_1.timeInTimeZone(start_date2)){ hr_its = start_date2.getDiffTime(end_date1); } if(tz_1.timeInTimeZone(end_date2)){ hr_its = start_date1.getDiffTime(end_date2); } if(tz_1.timeInTimeZone(start_date2)&&tz_1.timeInTimeZone(end_date2)){ hr_its = start_date2.getDiffTime(end_date2); } if(start_date2.beforeEqualsDateTime(start_date1)&&end_date2.afterEqualsDateTime(end_date1)){ hr_its = start_date1.getDiffTime(end_date1); } return hr_its; }catch ( err ){ console.log(err.stack); } } return "0.00"; }, chkOT : function(option,msg,Highlight){ var line = option.line , tz_pn = option.tz_pn , tz_wk = option.tz_wk , employeeid =option.employeeid , ot = option.ot; var chkbox_ot = option.chkbox_ot ; var starTime = option.str_startTime; var endTime = option.str_endTime; if(!tz_pn || !tz_wk){ return; } var start_date = tz_wk.getBeginZone() ; if(tz_pn.isType("T") && ot.value=="0.00"){ //not_ot.value="True"; chkbox_ot.checked=true; Highlight.setHighlight(chkbox_ot,chkbox_ot); msg.addMsg(001,employeeid,start_date,starTime,endTime); return false; }else {return true;} }, isTimeZone : function( tz ){ return tz instanceof TimeZone; }, isCalendar : function(ca){ return ca instanceof CscCalendar; }, setData : function(op,emp_ws,chkbox_ot,ot_total,not_re_ot,start_date,start_time,end_date,end_time){ var opn1 = op; var line = opn1["line"]; var employeeid = emp_ws; var chkbox_ot = chkbox_ot; var ot = ot_total; var not_ot = not_re_ot; var work_start_date = start_date; var work_start_time =start_time; var work_end_date =end_date; var work_end_time =end_time; var start_w = new CscCalendar(work_start_date+" "+work_start_time); var end_w = new CscCalendar(work_end_date+" "+work_end_time); var start_p = new CscCalendar(opn1["start_date"]+" "+opn1["start_time"]); var end_p = new CscCalendar(opn1["end_date"]+" "+opn1["end_time"]); var start_next = new CscCalendar(start_p.getYYYYMMDD()+" "+start_p.getHHMM()); var end_next = new CscCalendar(end_p.getYYYYMMDD()+" "+end_p.getHHMM()); var start_b = new CscCalendar(opn1["break_start_date"]+" "+opn1["break_start_time"]); var end_b = new CscCalendar(opn1["break_end_date"]+" "+opn1["break_end_time"]); start_next.incDate(1); end_next.incDate(1); var tz_wk =new TimeZone(start_w,end_w), tz_pn = new TimeZone(start_p,end_p), tz_bk = new TimeZone(start_b,end_b) , tz_next = new TimeZone(start_next,end_next); ot.value = "0.00"; tz_pn.setType(opn1["day_type"]); var str_startTime = (""+start_p.getHHMM()); var str_endTime = (""+end_p.getHHMM()); opn1 = { "ot" : ot, "tz_wk" : tz_wk, "tz_pn" : tz_pn, "tz_next" : tz_next, "str_startTime" : str_startTime, "str_endTime" : str_endTime, "line" : opn1["line"], "emp_every" : opn1["emp_every"], "employeeid" : employeeid, "work_start_time" : work_start_time, "work_end_time" : work_end_time, "not_ot" : not_ot, "chkbox_ot" : chkbox_ot } return opn1; }, setNotOT : function(tz_main,tz_compare,line,emp_id,not_ot,chkbox,msg,highlight){ if(this.isTimeZone(tz_main) && this.isTimeZone(tz_compare)){ try{ var hr_diff_2="0.00"; var not_ot_2 = not_ot; var chkbox_ot_2 = chkbox; hr_diff_2 = this.diffIntersect(tz_main,tz_compare); if(hr_diff_2!="0.00"){ not_ot_2.value="True"; chkbox_ot_2.checked=true; highlight.setHighlight(chkbox,chkbox_ot_2); msg.addMsg("002",emp_id,tz_compare.getBeginZone()); } }catch ( err ){ console.log(err.stack); } } } }); function Setmsg(language){ this.__msg001 = ""; this.__msg002 = ""; this.__msg003 = ""; this.__msg004 = ""; this.__msg005 = ""; this.__msg006 = ""; this.__msg007 = ""; this.__msg008 = ""; this.lang = language; } Setmsg.prototype = jQuery.extend({} , CalculateOT.prototype , { addMsg : function (type,employeeid,calendar,starTime,endTime){ if(this.isCalendar(calendar)){ with(document.cscform){ var msg = ""; if(this.lang=='eng'){ msg = "Employeeid : "+employeeid+" Date "+calendar.getDDMMYYYY(); }else{ msg = "รหัสพนักงาน : "+employeeid+" วันที่ "+calendar.getDDMMYYYY(); } if(type == "001"){ if(this.lang=='eng'){ this.__msg001 +=msg+" request ot in working time "+starTime+" - "+endTime+"\n"; }else{ this.__msg001 +=msg+" ขอโอทีทับเวลาการทำงาน \nเวลา "+starTime+" - "+endTime+" น. \n"; } }else if(type == "002"){ if(this.lang=='eng'){ this.__msg002 +=msg+" Have OT Requisition In The Same Time \n"; }else{ this.__msg002 +=msg+" มีการขอโอทีในช่วงเวลาเดียวกัน \n"; } }else if(type == "003"){ if(this.lang=='eng'){ this.__msg003 +=msg+" employee not work plan \n"; }else{ this.__msg003 +=msg+" พนักงานไม่มีแผนการทำงาน \n"; } }else{ } } } }, showMsg : function (){ with(document.cscform){ var msg001 = this.__msg001; var msg002 = this.__msg002; var msg003 = this.__msg003; var msg1 = ""; if(this.lang=='eng'){ msg1 = "Can't OT Requisition Detail:.......... \n"; }else{ msg1 = "ไม่สามารถขอโอทีได้ รายละเอียดดังนี้ \n"; } var msg2 = ""; if(this.lang=='eng'){ msg2 = "Can't OT Requisition\r \n **NOTE** \r \n"; }else{ msg2 = "ไม่สามารถขอโอทีได้\r \n **หมายเหตุ** \r \n"; } if(msg001 !="" || msg002 !="" || msg003 !=""){ if(this.lang=='eng'){ alert(msg1+msg001+msg002+msg003); }else{ alert(msg1+msg001+msg002+msg003); } return false; } return true; } } }); function Highlight(){ } Highlight.prototype = { setNotHighlight : function(chkbox,txt_ot){ chkbox.checked=false; td_re_ot = txt_ot.parentNode , tr_re_ot = td_re_ot.parentNode; var unit_td = tr_re_ot.childNodes , styte_td2; txt_ot.value = ""; for(var i=0;i<unit_td.length;i++){ styte_td2 = unit_td[i]; styte_td2.className="row-data"; } }, setHighlight : function(chkbox,is_ot){ td_ot = is_ot.parentNode , tr_ot = td_ot.parentNode; if( is_ot.value == "0.00" ){ this.Highlightrow(tr_ot); } if(chkbox.checked==true){ this.Highlightrow(tr_ot); } }, Highlightrow : function(tr){ tr_ot = tr; num_td = tr_ot.childNodes; var styte_td; for(var i=0;i<num_td.length;i++){ styte_td = num_td[i]; styte_td.className="Highlight"; } } }