<!DOCTYPE html> <%@ page contentType="text/html; charset=UTF-8" language="java" %> <%@page import="com.csc.library.entry.HelpEntry,com.csc.library.system.*,com.csc.library.utilities.*,java.util.*"%> <%@page import="com.csc.library.utilities.CscCalendar,com.csc.library.entry.HelpEntry,com.csc.library.system.*"%> <%@page import="com.csc.library.entry.*,com.csc.library.database.*,com.csc.library.session.*,com.csc.library.formula.FormulaString" %> <%@page import="java.text.DecimalFormat" %> <%@ include file="../CHECKPROFILE.jsp" %> <% request.setCharacterEncoding("UTF-8"); %> <jsp:useBean id="EMV" class="com.csc.library.system.Task" scope="page" /> <jsp:setProperty name="EMV" property="appname" value="empview" /> <% EMV.setChannel(request, response); CscCalendar cs = new CscCalendar(); CscCalendar cs1 = new CscCalendar("01-"+cs.getMM()+"-"+cs.getYear()); CscCalendar cs2 = new CscCalendar(cs.getEndDateOfMonth()+"-"+cs.getMM()+"-"+cs.getYear()); if (request.getParameter("date_start")!=null && request.getParameter("date_end")!=null) { cs1 = new CscCalendar(request.getParameter("date_start")); cs2 = new CscCalendar(request.getParameter("date_end")); } CheckNull chk = new CheckNull(); String displayLate = chk.chkNullString((String) request.getParameter("display_late")); String displayAbsent = chk.chkNullString((String) request.getParameter("display_absent")); String displayLeave = chk.chkNullString((String) request.getParameter("display_leave")); String displayOT = chk.chkNullString((String) request.getParameter("display_ot")); HelpEntry screen = (HelpEntry) EMV.process("HelpEntry", "PI_WORKINGTIMEHELP"); String filter = "employeeid = '"+EMV.getUProfile().getEmvEmpId()+"' "+ "and (dateid between '"+cs1.getYYYYMMDD()+"' and '"+cs2.getYYYYMMDD()+"')"; String filter_display = ""; if (displayLate.equals("on")) { filter_display = " (lt>0) "; } if (displayAbsent.equals("on")) { if (!filter_display.equals("")) { filter_display += " or (eventgrp='J') "; } else filter_display = " (eventgrp='J') "; } if (displayLeave.equals("on")) { if (!filter_display.equals("")) { filter_display += " or (m_lv>0 and (tr_type like 'A%')) "; } else filter_display = " (m_lv>0 and (tr_type like 'A%')) "; } if (displayOT.equals("on")) { if (!filter_display.equals("")) { filter_display += " or (ac_ot>0) "; } else filter_display = " (ac_ot>0) "; } if (!filter_display.equals("")) { filter += " and ("+filter_display+")"; } screen.inq.setFilter(filter); screen.inq.refresh(); //screen.nextRec(); screen.referLangOn(); FormulaString fs = new FormulaString(); DecimalFormat df = new DecimalFormat("0.00"); DecimalFormat df2 = new DecimalFormat("00.00"); HashMap hmTimetemp = getTimeTemp(EMV.getUProfile() , EMV.getUProfile().getEmvEmpId() , new CscCalendar(cs1.getYYYYMMDD()).decDate(1) , new CscCalendar(cs2.getYYYYMMDD()).incDate(1)); %> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <html xmlns="http://www.w3.org/1999/xhtml" ng-app="myHR"> <head> <title>Employee View</title> <meta http-equiv="Content-Type" content="text/html; charset=TIS620" /> </head> <body> <div class="bg-com"></div> <jsp:include page="EMV_HEADMENU.jsp" flush="true" /> <script type="text/javascript"> setLang('<%=screen.getUProfile().get("lang")%>'); var swap = new swaplang(); var titlename = swap.swap2String("SW011265"); setPageTitle(titlename); $(document).ready(function(){ //datepicker function var myLang='<%=screen.getUProfile().get("lang")%>'; if (myLang=="tha"){ $.datepicker.setDefaults($.datepicker.regional['tha']); } $("input[name=date_start]").hover(function(){ $("input[name=date_start]").datepicker({ dateFormat:"dd-mm-yy", maxDate:-1, defaultDate:-1, changeMonth: true, changeYear: true }); $("input[name=date_end]").datepicker("destroy"); }); $("input[name=date_end]").change(function(){ if ($("input[name=date_start]").val()>$("input[name=date_end]").val()){ $("input[name=date_start]").val($("input[name=date_end]").val()); } else if ($("input[name=date_start]").val()==""){ $("input[name=date_start]").val($("input[name=date_end]").val()); } }); $("input[name=date_end]").hover(function(){ $("input[name=date_end]").datepicker({ minDate: new Date(ConvertDate($("input[name=date_start]").val())), dateFormat:"dd-mm-yy", changeMonth: true, changeYear: true }); }); }); </script> <section> <div class="container csc-content"> <form name="cscform" class="form-horizontal" method="post" action="PI_WORKINGTIME_CHKWK.jsp"> <input type="hidden" name="__cmd" value=""> <input type="hidden" name="__screen" value="PI_WORKINGTIME"> <input type="hidden" name="__help" value=""> <input type="hidden" name="__helpReturn" value=""> <input type="hidden" name="__helpName" value=""> <input type="hidden" name="__pageCall" > <input type="hidden" name="__referPage" value=""> <input type="hidden" name="__calendar"> <script language="javascript">getInputFormatDate();</script> <input type="hidden" name="__companyid" value="<%=screen.getUProfile().get("companyid")%>"> <input type="hidden" name="__fixCon" > <input type="hidden" name="__language" value="<%=screen.getUProfile().get("lang")%>"> <input type="hidden" name="__childFilter" > <div id="toolTipLayer" style="position:absolute; visibility: hidden"></div> <script language="javascript">initToolTips();</script> <div class="csc-block"> <div class="center"> <h2 class="csc-block-head" swlang code='SW011265'>Working Hour Data</h2> </div> <div class="form-horizontal"> <div class="row"> <div class="form-group"> <div class="col-md-1 col-sm-1 "></div> <div class="col-md-2 col-sm-2 col-xs-3"> <label class="control-label label-right" swlang code='SW000275'>Begin Date</label> </div> <div class="col-md-2 col-sm-2 col-xs-3"> <% if (request.getParameter("date_start")==null) { %> <input class="form-control" name="date_start" type="text" value="<%=cs1.getDDMMYYYY()%>" size="9" maxlength="10" onKeyup = "formatDate(this)" onBlur = "chkInputDate2(this,date_end)" onKeypress = "chkIntegerOfDate(this.value)" > <% } else {%> <input class="form-control" name="date_start" type="text" value="<%=request.getParameter("date_start")%>" size="9" maxlength="10" onKeyup = "formatDate(this)" onBlur = "chkInputDate2(this,date_end)" onKeypress = "chkIntegerOfDate(this.value)" > <% }%> </div> <div class="col-md-2 col-sm-2 col-xs-2"> <label class="control-label label-right" swlang code='SW002095'>To</label> </div> <div class="col-md-2 col-sm-2 col-xs-3"> <% if (request.getParameter("date_end")==null) { %> <input class="form-control" name="date_end" type="text" value="<%=cs2.getDDMMYYYY()%>" size="9" maxlength="10" onKeyup = "formatDate(this)" onBlur = "chkInputDate2(date_start,this)" onKeypress = "chkIntegerOfDate(this.value)" > <% } else {%> <input class="form-control" name="date_end" type="text" value="<%=request.getParameter("date_end")%>" size="9" maxlength="10" onKeyup = "formatDate(this)" onBlur = "chkInputDate2(date_start,this)" onKeypress = "chkIntegerOfDate(this.value)" > <% }%> </div> </div> </div> <div class="row"> <div class="form-group"> <div class="col-md-2 col-sm-2 col-xs-2"></div> <div class="col-md-2 col-sm-2 col-xs-2"> <label class="control-label"> <input type="checkbox" name="display_late"><label swlang code='SW001899'>Display Late</label> </label> </div> <div class="col-md-2 col-sm-2 col-xs-2"> <label class="control-label"> <input type="checkbox" name="display_absent"><label swlang code='SW001900'>Display Absent</label> </label> </div> <div class="col-md-2 col-sm-2 col-xs-2"> <label class="control-label"> <input type="checkbox" name="display_leave"><label swlang code='SW001901'>Display Leave</label> </label> </div> <div class="col-md-2 col-sm-2 col-xs-2"> <label class="control-label"> <input type="checkbox" name="display_ot"><label swlang code='SW001902'>Display Overtime</label> </label> </div> </div> </div> <div class="center"> <a class="btn btn-primary" href="javascript:search();" swlang code='SW003537'>Search</a> </div> </div> </div> <div class="table-responsive"> <table class="table table-head table-hover table-bordered table-title-left table-content-center"> <thead> <div align = "right" swlang code='SW013247'>unit : HH.MM</div> <tr> <th swlang code='SW001033'>Date</th> <th swlang code='SW000262'>Day</th> <th swlang code='SW001815'>Working Time</th> <th swlang code="SW012763">Punch Time</th> <th>Device No</th> <th swlang code='SW000367'>Day Type</th> <th swlang code='SW000055'>Late</th> <th swlang code='SW000056'>Absent</th> <th swlang code='SW000299'>Leave</th> <th swlang code='SW011681'>OT Total</th> <th swlang code='SW001882'>OT1</th> <th swlang code='SW001883'>OT5</th> <th swlang code='SW001884'>OT2</th> <th swlang code='SW001885'>OT3</th> <th swlang code='SW001886'>Work</th> <!--<th swlang code='SW001887'>Other</th>--> </tr> </thead> <tbody> <% HashMap hmHoliday = new HashMap(); String wkarea = ""; try { DbInquiry inqHoliday = new InitialInquiry(screen.getUProfile()).getDbInquiry(); inqHoliday.setSchemaName(screen.getUProfile().getSchemaName()); inqHoliday.initMyTable("Mholiday1", "", ""); inqHoliday.setColumn("*"); DbInquiry inqTime = new InitialInquiry(screen.getUProfile()).getDbInquiry(); inqTime.setSchemaName(screen.getUProfile().getSchemaName()); inqTime.initMyTable("Mtime0", "", ""); inqTime.setColumn("*"); inqTime.putChild(inqHoliday); DbInquiry inqEmp = new InitialInquiry(screen.getUProfile()).getDbInquiry(); inqEmp.setSchemaName(screen.getUProfile().getSchemaName()); inqEmp.initMyTable("Memployee", "employeeid='"+EMV.getUProfile().getEmvEmpId()+"'", ""); //inqEmp.setColumn("*"); inqEmp.setColumn("employeeid,companyid,workarea,fname,lname,efname,elname,emp_prefix,emp_level,time0,bu1,bu2,bu3,bu4,bu5"); inqEmp.putChild(inqTime); inqEmp.refresh(); while (inqEmp.next()) { DbInquiry childTime = (DbInquiry) inqEmp.getChild("Mtime0"); DbInquiry child = (DbInquiry) childTime.getChild("Mholiday1"); do { CscCalendar cHol = new CscCalendar(child.getString("hdate")); hmHoliday.put(cHol.getDDMMYYYY(), child.getString("tdesc")); } while (child.next()); wkarea = inqEmp.getString("workarea"); } } catch (Exception e) {} String holiday = ""; CscTime ct_late = new CscTime(); CscTime ct_absent = new CscTime(); CscTime ct_leave = new CscTime(); CscTime ct_ot = new CscTime(); CscTime ct_ot1 = new CscTime(); CscTime ct_ot5 = new CscTime(); CscTime ct_ot2 = new CscTime(); CscTime ct_ot3 = new CscTime(); CscTime ct_work = new CscTime(); while (screen.inq.next()) { DbRecord rec = screen.inq.getCurrentDbRecord(); CscCalendar cDate = new CscCalendar(rec.getString("dateid")); String day = "", cFont = ""; if (((String) screen.getUProfile().get("lang")).equalsIgnoreCase("THA")) { //แสดงวันจันทร์ , อังคาร, พุธ เป็นต้น day = cDate.getDOWTHI(); } else day = cDate.getDOWENG(); if (rec.getString("eventgrp").equals("H")) { cFont = "week"; } else if (rec.getString("eventgrp").equals("I")) { cFont = "holiday"; //holiday += cDate.getDDMMYYYY()+" "+((String) hmHoliday.get(cDate.getDDMMYYYY()))+", "; String tmp = ((String) hmHoliday.get(cDate.getDDMMYYYY())); if (tmp==null) tmp=""; holiday += cDate.getDDMMYYYY()+" "+tmp+", "; } else if (rec.getString("eventgrp").equals("J")) { cFont = "absent"; } %> <tr> <td class="<%=cFont%>"><%=cDate.getDDMMYYYY()%></td> <td class="<%=cFont%>"><%=day%></td> <td class="<%=cFont%>"><%=df2.format(rec.getDouble("c_tm_bg"))%> - <%=df2.format(rec.getDouble("c_tm_en"))%></td> <td class="<%=cFont%>"> <% String punch_in = ( rec.getString("forget_in").equals("0") || rec.getString("source_in").equals("5") || rec.getString("source_in").equals("6") || rec.getString("source_in").equals("7") )?df2.format(rec.getDouble("m_tm_bg")):rec.getString("doctype").equals("A")?df2.format(rec.getDouble("c_tm_bg")):"__.__"; String punch_out = ( rec.getString("forget_out").equals("0") || rec.getString("source_out").equals("5") || rec.getString("source_out").equals("6") || rec.getString("source_out").equals("7") )?df2.format(rec.getDouble("m_tm_en")):rec.getString("doctype").equals("A")?df2.format(rec.getDouble("c_tm_en")):"__.__"; if (rec.getString("forget_in").equals("1")) { punch_in = "__.__"; } //else punch_in = df2.format(rec.getDouble("m_tm_bg")); if (rec.getString("forget_out").equals("1")) { punch_out = "__.__"; } //else punch_out = df2.format(rec.getDouble("m_tm_en")); if(rec.getString("source_in").equals("A")) punch_in = "__.__"; if(rec.getString("source_out").equals("A")) punch_out = "__.__"; if(rec.getString("doctype").equals("A") || cDate.afterDate(new CscCalendar())) { punch_in = "__.__"; punch_out = "__.__"; } out.println(punch_in+" - "+punch_out); /* print machine no */ //out.print(">>" + getMachinNoByInOut(rec.getString("m_dt_bg"),punch_in, hmTimetemp)); //out.print("::" + getMachinNoByInOut(rec.getString("m_dt_en"),punch_out, hmTimetemp)); String in_mchinno = getMachinnoHTML(getMachinNoByInOut(rec.getString("m_dt_bg"), punch_in, hmTimetemp) , isValidWorkarea( rec.getString("m_dt_en") , punch_in , getMachineNoByWorkArea(wkarea) , hmTimetemp)); String out_mchinno = getMachinnoHTML(getMachinNoByInOut(rec.getString("m_dt_bg"), punch_out, hmTimetemp) , isValidWorkarea( rec.getString("m_dt_en") , punch_out , getMachineNoByWorkArea(wkarea) , hmTimetemp)); %> </td> <!-- columns device no --> <td><%=in_mchinno + " - " + out_mchinno%></td> <td class="<%=cFont%>"> <% String lv_type = (String) screen.getString("meventgrp","tdesc"); if (lv_type==null || lv_type.equals("null")) { out.println(); } else { if (rec.getString("eventgrp").equals("I")) { if (hmHoliday.get(cDate.getDDMMYYYY())!=null) { out.println(hmHoliday.get(cDate.getDDMMYYYY())); } else out.println(lv_type); } else out.println(lv_type); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("lt")>0) { ct_late.add(rec.getDouble("lt")); out.println(df.format(rec.getDouble("lt"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getString("eventgrp").equals("J") && rec.getDouble("m_lv")>0) { ct_absent.add(rec.getDouble("m_lv")); out.println(df.format(rec.getDouble("m_lv"))); } %> </td> <td class="<%=cFont%>"> <% if (!rec.getString("eventgrp").equals("J") && rec.getDouble("m_lv")>0) { ct_leave.add(rec.getDouble("m_lv")); out.println(df.format(rec.getDouble("m_lv"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("ac_ot")>0) { ct_ot.add(rec.getDouble("ac_ot")); out.println(df.format(rec.getDouble("ac_ot"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("ot1")>0) { ct_ot1.add(rec.getDouble("ot1")); out.println(df.format(rec.getDouble("ot1"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("ot5")>0) { ct_ot5.add(rec.getDouble("ot5")); out.println(df.format(rec.getDouble("ot5"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("ot2")>0) { ct_ot2.add(rec.getDouble("ot2")); out.println(df.format(rec.getDouble("ot2"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("ot3")>0) { ct_ot3.add(rec.getDouble("ot3")); out.println(df.format(rec.getDouble("ot3"))); } %> </td> <td class="<%=cFont%>"> <% if (rec.getDouble("hour_d")>0) { ct_work.add(rec.getDouble("hour_d")); out.println(df.format(rec.getDouble("hour_d"))); } %> </td> <!--<td class="<%=cFont%>"> <% if (rec.getDouble("unused1")>0) { %> <span class="status-default"></span> <% } %> <% if (rec.getDouble("unused2")>0) { %> <span class="status-wait"></span> <% } %> <% if (rec.getDouble("unused3")>0) { %> <span class="status-notapprove"></span> <% } %> <% if (rec.getDouble("unused4")>0) { %> <span class="status-timeover"></span> <% } %> <% if (rec.getDouble("unused5")>0) { %> <span class="status-approve"></span> <% } %> </td>--> </tr> <% } //while (screen.inq.next()) %> <tr> <!-- Display Summary --> <td class="result-right" colspan=6 swlang code='SW000024'>Total</td> <td class="result"><%=(ct_late.getFloat()==0)?"":df.format(ct_late.getFloat())%></td> <td class="result"><%=(ct_absent.getFloat()==0)?"":df.format(ct_absent.getFloat())%></td> <td class="result"><%=(ct_leave.getFloat()==0)?"":df.format(ct_leave.getFloat())%></td> <td class="result"><%=(ct_ot.getFloat()==0)?"":df.format(ct_ot.getFloat())%></td> <td class="result"><%=(ct_ot1.getFloat()==0)?"":df.format(ct_ot1.getFloat())%></td> <td class="result"><%=(ct_ot5.getFloat()==0)?"":df.format(ct_ot5.getFloat())%></td> <td class="result"><%=(ct_ot2.getFloat()==0)?"":df.format(ct_ot2.getFloat())%></td> <td class="result"><%=(ct_ot3.getFloat()==0)?"":df.format(ct_ot3.getFloat())%></td> <td class="result"><%=(ct_work.getFloat()==0)?"":df.format(ct_work.getFloat())%></td> <!--<td class="result"> </td>--> </tr> <% String color1 = "", color2 = "", color3= "", color4 = "", color5 = ""; try { color1 = (String) StaticConfig.getConfigCompany(screen.getUProfile(), "ta1021"); color2 = (String) StaticConfig.getConfigCompany(screen.getUProfile(), "ta1022"); color3 = (String) StaticConfig.getConfigCompany(screen.getUProfile(), "ta1023"); color4 = (String) StaticConfig.getConfigCompany(screen.getUProfile(), "ta1024"); color5 = (String) StaticConfig.getConfigCompany(screen.getUProfile(), "ta1025"); } catch (Exception e) {} %> <!--<tr> <td class="table-title" colspan="15"> <div class="list-status"> <span class="status-timeover"><%=color1%>, </span> <span class="status-wait"><%=color2%>, </span> <span class="status-notapprove"><%=color3%>, </span> <span class="status-default"><%=color4%>, </span> <span class="status-approve"><%=color5%></span> </div> </td> </tr> --> <tr> <td class="table-title " colspan="15"><label><%=holiday%></label></td> </tr> </tbody> </table> </div> </form> </div> <a href="#top" id="top-button"> <i class="fa fa-angle-up"></i> <div class="top-word">Back to top</div> </a> </section> <jsp:include page="FOOTER.jsp" flush="true" /> </body> </html> <%! private HashMap getTimeTemp(UProfile upf, String emp, CscCalendar st, CscCalendar en) { HashMap hm = new HashMap(); try { DbInquiry inq = new InitialInquiry(upf).getDbInquiry("Ttimetemp"); inq.setColumn("employeeid,companyid,swipedate,swipetime,machinno"); inq.setFilter("employeeid = '" + emp + "' and swipedate between '" + st.getYYYYMMDD() + "' and '" + en.getYYYYMMDD() + "'"); inq.refresh(); while(inq.next()){ CscCalendar cs = new CscCalendar(inq.getString("swipedate")); cs.setCSCTime(Float.parseFloat(inq.getString("swipetime"))); hm.put(cs.getYYYYMMDDHHMMSS() , inq.getString("machinno")); } }catch(Exception e){ e.printStackTrace(); } return hm ; } private String getMachinnoHTML(String punch, boolean status){ try { if(punch.equals("__.__")){ return "<font>" + punch + "</font>"; } if(status){ return "<font color='blue'>" + punch + "</font>"; }else{ return "<font color='red'>" + punch + "</font>"; } }catch(Exception e){ e.printStackTrace(); } return "" ; } private boolean isValidWorkarea(String date, String inout, List lArea, HashMap hmTime){ try { if(inout.equals("__.__") || inout.equals("")){ return false ; } String machineno = getMachinNoByInOut(date, inout, hmTime); if(!machineno.equals("")) { if(lArea != null) { for(int i=0; i < lArea.size(); i++){ if(machineno.equals(lArea.get(i))){ return true ; } } } } }catch(Exception e){ e.printStackTrace(); } return false ; } private String getMachinNoByInOut(String date, String inout, HashMap hmTime){ try { if(inout.equals("__.__") || inout.equals("")){ return inout ; } CscCalendar punch = new CscCalendar(date); punch.setCSCTime(Float.parseFloat(inout)); String key = punch.getYYYYMMDDHHMMSS() ; if(hmTime.containsKey(key)){ return (String) hmTime.get(key); } }catch(Exception e){ e.printStackTrace(); } return ""; } private List getMachineNoByWorkArea(String area){ try { List l = new ArrayList<String>(); if(area.equals("BKK") || area.equals("1") || area.equals("2") || area.equals("NONE")){ l.add("001"); l.add("0001"); l.add("00001"); l.add("002"); l.add("0002"); l.add("00002"); }else if(area.equals("OEI")){ l.add("003"); l.add("0003"); l.add("00003"); l.add("004"); l.add("0004"); l.add("00004"); }else if(area.equals("SSI")){ l.add("005"); l.add("0005"); l.add("00005"); l.add("006"); l.add("0006"); l.add("00006"); }else if(area.equals("KIP")){ l.add("007"); l.add("0007"); l.add("00007"); l.add("008"); l.add("0008"); l.add("00008"); } return l; }catch(Exception e){ e.printStackTrace(); } return null ; } %>