/*require CscCalendar.js TineZone.js*/ function calTotal(opn){ var opn2 = opn , tz_pn = opn2.tz_pn , tz_wk = opn2.tz_wk , tz_bk = opn2.tz_bk , work_time = opn2.work_time , holiday_time =opn2.holiday_time , hour_break_after =opn2.hour_break_after , is_break =opn2.is_break , start_time = opn2.start_time , end_time = opn2.end_time , transport_fee = opn2.transport_fee; if( !tz_pn || !tz_wk || !tz_bk || !start_time || !end_time || !transport_fee){ return; } var start_w = tz_wk.getBeginZone() , end_w = tz_wk.getEndingZone(); if(start_w.equalsDateTime(end_w)){ notCalTransport(transport_fee) work_time.value="0.00"; holiday_time.value="0.00"; return; } var start_p = tz_pn.getBeginZone(),end_p = tz_pn.getEndingZone(); var start_b = tz_bk.getBeginZone(),end_b = tz_bk.getEndingZone(); if(!start_w || !start_p || !start_b || !end_w || !end_p || !end_b){ return; } var hr_ot = new CscTime(); var hr_bf_break =0.00,hr_break=start_b.getDiffTime(end_b); if(tz_pn.timeInTimeZone(start_w)){ //�������OT�����Ἱ������� if(end_w.afterDateTime(end_p)){//����ش��OT������ѧἹ������� hr_ot.setCscTime(); if(!tz_pn.isType("T") ){ hr_bf_break=start_w.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(is_break || is_break==""){ /* ����͡���ͧ�ҡ subHoruBreakAfter �社ѡ�������� if(tz_wk.intersectTimeZone(tz_bk) && (is_break=="0" || is_break=="")){ */ //hr_ot.decTime(hr_break); /*��ѡ��������ѧ�ѡ�ѡ�����ͷ� */ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); //} } holiday_time.value=hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w) work_time.value="0.00"; }else{ hr_bf_break=end_p.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(hour_break_after){ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); } start_time.value = end_p.getHHMM(); work_time.value = hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w); holiday_time.value="0.00"; } }else{ if(!tz_pn.isType("T")){ hr_bf_break=start_w.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(is_break || is_break==""){ if(tz_wk.intersectTimeZone(tz_bk) && (is_break=="0" || is_break=="")){ //hr_ot.decTime(hr_break); /*��ѡ��������ѧ�ѡ�ѡ�����ͷ� */ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); } } holiday_time.value=hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w) work_time.value="0.00"; }else{ notCalTransport(transport_fee) holiday_time.value="0.00"; work_time.value="0.00"; } } }else{ if(tz_wk.timeInTimeZone(start_p)){ if(end_w.afterDateTime(end_p)){ hr_ot.setCscTime(); if(!tz_pn.isType("T")){ hr_bf_break=start_w.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(is_break || is_break==""){ if(tz_wk.intersectTimeZone(tz_bk) && (is_break=="0" || is_break=="")){ //hr_ot.decTime(hr_break); /*��ѡ��������ѧ�ѡ�ѡ�����ͷ� */ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); } } holiday_time.value=hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w) work_time.value="0.00"; }else{ /*hr_bf_break=start_w.getDiffTime(start_p); hr_ot.setCscTime(hr_bf_break); hr_bf_break=end_p.getDiffTime(end_w); hr_ot.incTime(hr_bf_break); if(hour_break_after){*/ //hr_ot.decTime(hour_break_after); /*��ѡ��������ѧ�ѡ�ѡ�����ͷ� */ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ /*hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); }*/ notCalTransport(transport_fee) work_time.value ="0.00"; holiday_time.value="0.00"; } }else{ hr_ot.setCscTime(); if(!tz_pn.isType("T")){ hr_bf_break=start_w.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(is_break || is_break==""){ if(tz_wk.intersectTimeZone(tz_bk) && (is_break=="0" || is_break=="")){ //hr_ot.decTime(hr_break); /*��ѡ��������ѧ�ѡ�ѡ�����ͷ� */ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); } } holiday_time.value=hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w) work_time.value="0.00"; }else{ hr_bf_break=start_w.getDiffTime(start_p); hr_ot.setCscTime(hr_bf_break); end_time.value = start_p.getHHMM(); work_time.value =hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w) holiday_time.value="0.00"; } } }else{ hr_ot.setCscTime(); if(!tz_pn.isType("T")){ hr_bf_break=start_w.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(is_break || is_break==""){ if(tz_wk.intersectTimeZone(tz_bk) && (is_break=="0" || is_break=="")){ //hr_ot.decTime(hr_break); /*��ѡ��������ѧ�ѡ�ѡ�����ͷ� */ /* ���ѹ������ �ѡ��� ��Ҥ������ǧ�ѡ */ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); } } holiday_time.value=hr_ot.getHHMM(); calTransport(transport_fee,start_w,end_w) work_time.value="0.00"; }else{ hr_bf_break=start_w.getDiffTime(end_w); hr_ot.setCscTime(hr_bf_break); if(hour_break_after){ hr_ot = subHoruBreakAfter(is_break, tz_pn.getBeginZone(), tz_pn.getEndingZone(), tz_wk.getBeginZone(), tz_wk.getEndingZone(), hour_break_after, hr_ot, tz_pn.getType(), hr_break); } calTransport(transport_fee,start_w,end_w) work_time.value =hr_ot.getHHMM(); holiday_time.value="0.00"; } } } } function subHoruBreakAfter(is_break, start_p, end_p, start_wk, end_wk, hour_break_after, hr_ot, daytype, brk_hour){ var end_wk_time = new CscCalendar(end_p.getDDMMYYYYHHMMSS()) ; /* set end of workshif include mini break */ end_wk_time.incTime(hour_break_after); /* set actual end of work */ var brk = 0; if(daytype == "T"){ /* deduct only T */ if(start_wk.beforeEqualsDateTime(end_p) && end_wk.afterEqualsDateTime(end_wk_time)){ brk = hour_break_after; }else if(start_wk.afterDateTime(end_p) && start_wk.beforeDateTime(end_wk_time) && end_wk.afterDateTime(end_wk_time)){ brk = end_wk_time.getDiffTime(start_wk); }else if(start_wk.beforeEqualsDate(end_p) && end_wk.afterDateTime(end_p) && end_wk.beforeEqualsDateTime(end_wk_time)){ brk = end_wk.getDiffTime(end_p); }else if(start_wk.afterDateTime(end_p) && end_wk.beforeDateTime(end_wk_time)){ brk = end_wk.getDiffTime(start_wk); } if(hr_ot.getHHMM() >= brk){ hr_ot.decTime(brk); }else if(hr_ot.getHHMM() < brk) { hr_ot.setHours(0); hr_ot.setMinutes(0); hr_ot.setSeconds(0); } }else { /* ������� �ѹ��ش ����Թ 4 ��. ����ѡ�ѡ 1 ��. */ if(hr_ot.getHHMM() >= 4){ if(is_break != "1"){ hr_ot.decTime(brk_hour); } } } return hr_ot; } function calTransport(transport_fee,start_w,end_w){ var main_time = new CscCalendar(start_w.getDDMMYYYY()+" 21.00"); if(!end_w.afterEqualsDateTime(main_time)){ transport_fee.readOnly = true ; transport_fee.value = "0.00"; }else{ transport_fee.readOnly = false ; } } function notCalTransport(transport_fee){ transport_fee.readOnly = true ; transport_fee.value = "0.00"; }