<!DOCTYPE html>
<%@page contentType="text/html; charset=UTF-8"%>
<%@ page import="com.csc.library.entry.HelpEntry,com.csc.library.system.*,com.csc.library.utilities.*,com.csc.library.session.*"%>
<%@ page import="com.csc.library.components.*,com.csc.library.report.*,java.util.*,java.text.*,com.csc.library.database.*,java.text.*"%>
<jsp:useBean id="TURNOVER_EXCEL" scope="page" class="com.csc.library.system.Task" />
<html ng-app="myHR">
<%
	CheckNull chk = new CheckNull();
	CscCalendar cs = new CscCalendar();
    TURNOVER_EXCEL.setChannel(request ,response);
    HelpEntry screen = (HelpEntry) TURNOVER_EXCEL.process("HelpEntry", "TURNOVER_EXCEL");
	screen.setMaxLine(1000000);
	DecimalFormat df = new DecimalFormat("###0.00");

	String filter = "";
	String filter2 = "";
	String cmd = chk.chkNullString(TURNOVER_EXCEL.getParameter("__cmd"),"");
	String group_by = chk.chkNullString(TURNOVER_EXCEL.getParameter("__groupby_bu"));
	String month1 = chk.chkNullString(TURNOVER_EXCEL.getParameter("__month1"));
	String year1 = chk.chkNullString(TURNOVER_EXCEL.getParameter("__year1"), cs.getYear()+"");
	String month2 = chk.chkNullString(TURNOVER_EXCEL.getParameter("__month2"));
	String year2 = chk.chkNullString(TURNOVER_EXCEL.getParameter("__year2"), cs.getYear()+"");
	String branch = chk.chkNullString(TURNOVER_EXCEL.getParameter("__branch"),"");
	String branchdesc = chk.chkNullString(TURNOVER_EXCEL.getParameter("__branchdesc"),"");

	if(!branch.equals("")){
		filter = "branch = '"+branch+"'";
		filter2 = "and branch = '"+branch+"'";
	}
	screen.getInquiry().setFilter(filter);
	screen.getInquiry().setGroupBy(group_by);
	screen.getInquiry().setOrderBy(group_by);
	screen.referLangOn();
	screen.getInquiry().refresh();
	//screen.nextRec();


%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../CSS/TISCO.css" rel="stylesheet" type="text/css">
<link href="../CSS/bootstrap.css" rel="stylesheet"  type="text/css">
<link href="../CSS/bootstrap_csc_backend.css" rel="stylesheet"  type="text/css">
<script type="text/javascript" src="../JS/jquery-2.1.3.min.js"></script>
<script type='text/javascript' src="../JS/bootstrap.js"></script>
<script src="../JS/jquery-1.7.2.js"></script>
<script src="../JS/SCREEN.js"></script>
<script src="../JS/angular-1.3.15/angular.js"></script>
<script type='text/JavaScript' SRC='../JS/ANGULAR/SCREEN_ANGULAR.js'></script>
<script type="text/javascript" src="/hr/dwr/interface/CscCalendar.js"></script>
<script type='text/javascript' src='../JS/ICONSMENU.js'></script>
<script >setLang('<%=screen.getUProfile().get("lang")%>');</script>
<script src="../JS/VIEWCALENDAR.js"></script>
<script src='../JS/ICONSMENU.js'></script>
<script src='../JS/HOTKEY.js'></script>
<script src="../JS/DATEINPUT.js"></script>
<script src="../JS/CscBase.js"></script>
<script src="../JS/CscCalendar.js"></script>
<script>getTitleName();</script>
<script TYPE='text/JavaScript' SRC='../JS/CscCalendarV3.js'></script>
<script type="text/JavaScript">

function goHelp(helpName,inputName){
	with(document.cscform){
		var helpReturn;
		var fixcon;
		var lang = '<%=screen.getUProfile().get("lang")%>';
		if(inputName=="__branch" ){
			helpReturn="__branch:branchid,__branchdesc:tdesc";
		}
		linkHelp_Return(helpName,helpReturn);
	}
}


function goHelpBu(helpName,inputName){
	var helpReturn;
	var fixcon;
	 if(inputName=="__job" ){
		helpReturn="__bu1:bu1,__bu2:bu2,__bu3:bu3,__bu4:bu4,__bu5:bu5,__bu1_desc,__bu2_desc,__bu3_desc,__bu4_desc,__bu5_desc";
	 }else if(inputName=="__bu1" ){
		helpReturn="__bu1:bu1id,__bu1_desc:tdesc";
		fixcon = "bu1 in(select bu1 from tvacation_accrual)";
	}else if(inputName=="__bu2" ){
		helpReturn="__bu2:bu2id,__bu2_desc:tdesc";
		fixcon = "bu2 in(select bu2 from tvacation_accrual)";
	}else if(inputName=="__bu3" ){
		helpReturn="__bu3:bu3id,__bu3_desc:tdesc";
		fixcon = "bu3 in(select bu3 from tvacation_accrual)";
	}else if(inputName=="__bu4" ){
		helpReturn="__bu4:bu4id,__bu4_desc:tdesc";
		fixcon = "bu4 in(select bu4 from tvacation_accrual)";
	}else if(inputName=="__bu5" ){
		helpReturn="__bu5:bu5id,__bu5_desc:tdesc";
		fixcon = "bu5 in(select bu5 from tvacation_accrual)";
	}
	linkHelp_Return(helpName,helpReturn);
}

function GoSearch(){
	with(document.cscform){
		__cmd.value = 'search';
		submit();
	}
}

var tableToExcel = (function() {
	with(document.cscform){
		var param = "TURNOVER_EXCEL_EXPORT.jsp?__cmd=search&__groupby_bu="+__groupby_bu.value+"&__month1="+__month1.value+"&__month2="+__month2.value+"&__year1="+__year1.value+"&__year2="+__year2.value+"&__branch="+__branch.value;
		window.open(param);
	}
  });
</script>

</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
	<form name="cscform" method="post" action ="TURNOVER_EXCEL.jsp" >
	<%=screen.InitialVariable()%>
	<input type="hidden" name="__cmd" value="<%=TURNOVER_EXCEL.getParameter("__cmd")%>">
	<input type="hidden" name="__screen" value="TURNOVER_EXCEL">
	<input type="hidden" name="__help" value="">
	<input type="hidden" name="__calendar" value="">
	<script language="javascript">getInputFormatDate();</script>
	<input type="hidden" name="__companyid" value="<%=screen.getUProfile().get("companyid")%>">
	<input type="hidden" name="__filterMemployee" value="companyid='<%=screen.getUProfile().get("companyid")%>'">
	<input type="hidden" name="__referPage" value="">
	<input type="hidden" name="__temp" value="">
	<input type="hidden" name="__curDate" value="<%=new CscCalendar().getDate()%>">
	<input type="hidden" name="__confirm" value="s">
	<input type="hidden" name="__fixCon" value="">
	<input type="hidden" name="__employeeid" value="<%=screen.getUProfile().get("employeeid")%>">
	<input type="hidden" name="__language" value="<%=screen.getUProfile().get("lang")%>">
	<input type="hidden" name="__eventgrp_list" value="">
	<input type="hidden" name="__period_list" value="">

		<div align="center">
			<table height="" align="center" cellpadding="0" cellspacing="0"  border="1" class="largest">
				<tr bgcolor="#3366CC">
				  <td  height="20" class="header" colspan="4">Turn Over,<span swlang code='SW011656'></span></td>
				</tr>
				<tr>
				  <td class="blankspace" colspan="4"></td>
				</tr>
				<tr>
        	<td align="right"><span swlang code="SW000314"> branch</span></td>
          <td colspan="3">
						<input type="text" name="__branch" size="5" maxlength="5"  value="<%=branch%>" onkeypress="chkSpecialKey(event);" onkeyup="sysIsEdit();" onblur="trimValue(this);" onfocus="this.select();" alt="Company ID" onmousemver="toolTip('branch')" onmouseout="toolTip()">&nbsp;
							<a href="javascript:goHelp('MBRANCHHELP','__branch');" onmouseout="MM_swapImgRestore()" onmouseover="MM_swapImage('__branch_image','','../IMAGES/BUTTON/SWAP/SEARCH_SWAP20.gif',1)"><img src="http://localhost:8082/hr/IMAGES/BUTTON/MAIN/SEARCH20.gif" name="__branch_image" width="20" height="20" border="0" align="absmiddle"></a>
							<input type="text" name="__branchdesc" size="50" maxlength="100" value="<%=branchdesc%>" onkeypress="chkSpecialStr(event);" onkeyup="sysIsEdit();" onblur="trimValue(this);" onfocus="this.select();" alt="Desc. (Thai)" onmousemver="toolTip('Desc. (Thai)')" onmouseout="toolTip()">
					</td>
        </tr>
				<tr>
					<td align="right"><span swlang code="SW003560"> Period Month</span></td>
					<td colspan="3">
						<!-- <span>month</span> -->
						<select name="__month1">
							<%
								for(int i=1;i<=12;i++){
							%>
									<option value="<%=i%>" <%=(month1.equals(i+""))?"selected":""%>><%=i%></option>
							<%
								}
							%>
						</select>
						<!-- <span>year</span> --><span swlang code="SW000717">Year</span><input name="__year1" size="5" value="<%=year1%>">
						-
						<!-- <span>month</span> --><span swlang code="SW000800">Month</span>
						<select name="__month2">
							<%
								for(int i=1;i<=12;i++){
							%>
									<option value="<%=i%>" <%=(month2.equals(i+""))?"selected":""%>><%=i%></option>
							<%
								}
							%>
						</select>
						<!-- <span>year</span> --><span swlang code="SW000717">Year</span><input name="__year2" size="5" value="<%=year2%>">
					</td>
				</tr>
				<tr>
					<%
						ListBox listbox1 = new ListBox();
						listbox1.setUProfile(screen.getUProfile());
						listbox1.setName("groupby_bu");
						listbox1.setValidCode("GROUP_BY_BU");
						listbox1.setChecked(group_by);
					%>
					<td><div align="right" swlang code='SW000122'>Group By</div></td>
					<td colspan='3'><%=listbox1.process()%></td>
				</tr>
				<tr>
					<td  class="buttonline" colspan="7"><div align="center">
						<button type="button" class="btn btn-primary width100" swlang code="SW003537" onClick="GoSearch();">SEARCH</button>&nbsp;
						<button type="button" class="btn btn-primary width100" swlang code="SW013178" onClick="tableToExcel('export_table', 'Table');">BACK</button>
					</div>
					</td>
				</tr>

			</table>
			<table class="largest" id="export_table">
				<style>
					td {
						mso-number-format:\@;
					}
					.turnover{
						border:1px solid black;
						background:#efefef;
						text-align:right;
					}
					.turnover_rate{
						border:1px solid black;
						background:#efefef;
						text-align:right;
					}
					.bu_list{
						border:1px solid black;
						background:#D3EFFF;
					}
					.turnover_head{
						border:1px solid black;
						color:black;
						background:#3399cc;
					}
					.turnover_rate_head{
						border:1px solid black;
						color:black;
						background:#3399cc;
					}
					.bu_list_head{
						border:1px solid black;
						color:black;
						background:#3399cc;
					}
				</style>
				<%
					if(cmd.equals("search")){
						CscCalendar cs1 = new CscCalendar(year1+"-"+month1+"-1");
						CscCalendar cs2 = new CscCalendar(year2+"-"+month2+"-1");

						ArrayList total_month = new ArrayList();
						CscCalendar cs1_clone = cs1;
						CscCalendar cs2_clone = cs2;
						if(cs1_clone.beforeDate(cs2_clone)){
							while(cs1_clone.beforeEqualsDate(cs2_clone)){
								total_month.add(cs1_clone.getYYYYMMDD());
								cs1_clone.incMonth(1);
							}
						}

				%>
				<tr>
					<td align="center" rowspan="2" width="35%" class="bu_list_head"><strong>BU</strong></td>
					<td class="turnover_head" colspan="<%=total_month.size()%>" style="text-align:center;"><strong>Turnover</strong></td>
					<td class="turnover_rate_head" colspan="<%=total_month.size()%>" style="text-align:center;"><strong>Turnover rate</strong></td>
				</tr>
				<tr>
					<%
						for(int i=0;i<total_month.size();i++){
							String this_month = total_month.get(i).toString();
							String month_head = new CscCalendar(this_month).getEngShortMonth()+" "+this_month.substring(0,4);
					%>
							<td class="turnover_head" style="text-align:center;"><strong><%=month_head%></strong></td>
					<%
						}
					%>
					<%
						for(int i=0;i<total_month.size();i++){
							String this_month = total_month.get(i).toString();
							String month_head = new CscCalendar(this_month).getEngShortMonth()+" "+this_month.substring(0,4);
					%>
							<td class="turnover_rate_head" style="text-align:center;"><strong><%=month_head%></strong></td>
					<%
						}
					%>
				</tr>
				<%

					while(screen.getInquiry().next() ){ // While :::::::
							String text_group_by = "";
							if(group_by.equalsIgnoreCase("BRANCH")){
								text_group_by = screen.getInquiry().getChild("mbranch").getString("tdesc");
							}else if(group_by.equalsIgnoreCase("BU1")){
								text_group_by = screen.getInquiry().getChild("mbu1").getString("tdesc")+","+screen.getInquiry().getChild("mbranch").getString("tdesc");
							}else if(group_by.equalsIgnoreCase("BU2")){
								text_group_by = screen.getInquiry().getChild("mbu2").getString("tdesc")+","+screen.getInquiry().getChild("mbu1").getString("tdesc")+","+screen.getInquiry().getChild("mbranch").getString("tdesc");
							}else if(group_by.equalsIgnoreCase("BU3")){
								text_group_by = screen.getInquiry().getChild("mbu3").getString("tdesc")+","+screen.getInquiry().getChild("mbu2").getString("tdesc")+","+screen.getInquiry().getChild("mbu1").getString("tdesc")+","+screen.getInquiry().getChild("mbranch").getString("tdesc");
							}else if(group_by.equalsIgnoreCase("BU4")){
								text_group_by = screen.getInquiry().getChild("mbu4").getString("tdesc")+","+screen.getInquiry().getChild("mbu3").getString("tdesc")+","+screen.getInquiry().getChild("mbu2").getString("tdesc")+","+screen.getInquiry().getChild("mbu1").getString("tdesc")+","+screen.getInquiry().getChild("mbranch").getString("tdesc");
							}else if(group_by.equalsIgnoreCase("BU5")){
								text_group_by = screen.getInquiry().getChild("mbu5").getString("tdesc")+","+screen.getInquiry().getChild("mbu4").getString("tdesc")+","+screen.getInquiry().getChild("mbu3").getString("tdesc")+","+screen.getInquiry().getChild("mbu2").getString("tdesc")+","+screen.getInquiry().getChild("mbu1").getString("tdesc")+","+screen.getInquiry().getChild("mbranch").getString("tdesc");
							}
				%>
					<tr>
						<td class="bu_list"><%=text_group_by%></td>
						<%
						ArrayList turnover = new ArrayList();
						for(int i=0;i<total_month.size();i++){// for turnover
							String this_month = total_month.get(i).toString();
							String query =	" select count(employeeid) from memployee where resigndate like '"+this_month.substring(0, 8)+"%' and "+group_by+" ='"+screen.getInquiry().getString(group_by)+"' ";
							DataSet ds = new DataSet(query ,screen.getUProfile().get("dbname"), "MEMPLOYEE");
							ds.initConnection(screen.getUProfile());
							String data = "";
							if(ds.next()){
								data = ds.getString(0);
								turnover.add(data);
							}else{
								turnover.add("0");
							}
							ds.closeConnection();
					%>
							<td class="turnover"><%=(data.equals("0"))?"":data%></td>
					<%
						}// End for turnover
					%>
					<%
						for(int i=0;i<total_month.size();i++){// for turnover rate
							String this_month = total_month.get(i).toString();
							String data = "";
							if(!turnover.get(i).toString().equals("0")){
								String query =	" select count(employeeid) from memployee "+
														" where startdate <= '"+this_month.substring(0, 8)+"31' "+
														" and resigndate >'"+this_month.substring(0, 8)+"-31' and "+group_by+" ='"+screen.getInquiry().getString(group_by)+"' ";
								DataSet ds = new DataSet(query ,screen.getUProfile().get("dbname"), "MEMPLOYEE");
								ds.initConnection(screen.getUProfile());
								if(ds.next()){
									if(!ds.getString(0).equals("0")){
										Double turnover_emp = Double.parseDouble(turnover.get(i).toString());
										Double total_emp = Double.parseDouble(ds.getString(0));
										Double result = (turnover_emp/total_emp)*100;
										data = df.format(result)+"%";
									}
								}
								ds.closeConnection();
							}
					%>
							<td class="turnover_rate"><%=data%></td>
					<%
						}// End for turnover rate
					%>
					</tr>
				<%
					}// End screen.getInquiry().next()
				%>
					<tr>
						<td class="bu_list" style="text-align:center;"><strong>Total</strong></td>
				<%
					ArrayList sum_turnover = new ArrayList();
					for(int i=0;i<total_month.size();i++){// for sum turnover
							String this_month = total_month.get(i).toString();
							String query =	" select count(employeeid) from memployee where resigndate like '"+this_month.substring(0, 8)+"%'"+filter2;
							DataSet ds = new DataSet(query ,screen.getUProfile().get("dbname"), "MEMPLOYEE");
							ds.initConnection(screen.getUProfile());
							String data = "";
							if(ds.next()){
								data = ds.getString(0);
								sum_turnover.add(data);
							}else{
								sum_turnover.add("0");
							}
							ds.closeConnection();
					%>
							<td class="turnover" style="text-align:right;"><strong><%=(data.equals("0"))?"":data%></strong></td>
				<%
						}// End for sum turnover
				%>
				<%
						for(int i=0;i<total_month.size();i++){// for sum turnover rate
							String this_month = total_month.get(i).toString();
							String data = "";
							if(!sum_turnover.get(i).toString().equals("0")){
								String query =	" select count(employeeid) from memployee "+
														" where startdate <= '"+this_month.substring(0, 8)+"31' "+
														" and resigndate >'"+this_month.substring(0, 8)+"-31' "+filter2;
								DataSet ds = new DataSet(query ,screen.getUProfile().get("dbname"), "MEMPLOYEE");
								ds.initConnection(screen.getUProfile());
								if(ds.next()){
									if(!ds.getString(0).equals("0")){
										Double turnover_emp = Double.parseDouble(sum_turnover.get(i).toString());
										Double total_emp = Double.parseDouble(ds.getString(0));
										Double result = (turnover_emp/total_emp)*100;
										data = df.format(result)+"%";
									}
								}
								ds.closeConnection();
							}
					%>
							<td class="turnover_rate"><strong><%=data%></strong></td>
					<%
						}// End for sum turnover rate
					%>
					</tr>
				<%
					}// End cmd.equals("search")
				%>
				<tr>
					<td class="bottom"></td>
				</tr>
			</table>
		</div>
	</form>
</body>
</html>