Commit a8a78456 authored by Ketan Patil's avatar Ketan Patil

Upload New File

parent d497e438
package ibase.webitm.ejb.dwh;
import java.io.File;
import java.io.FileWriter;
//package ibase.webitm.ejb.adm;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import ibase.scheduler.utility.interfaces.Schedule;
import ibase.system.config.ConnDriver;
import ibase.utility.E12GenericUtility;
import ibase.utility.UserInfoBean;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.ejb.dis.DistCommon;
import ibase.webitm.ejb.fin.FinCommon;
//import ibase.webitm.ejb.dwh.FinCommon;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException;
public class DwhEmpBehaviour extends ValidatorEJB implements Schedule{
String userInfoXml = "";
UserInfoBean userInfo = null;
private String siteCodes="";
private String logFileNames="";
private String logDires="";
String userId="";
String logPath = "";
private String loginCode="";
public String schedulePriority(String wrkflwPriority) throws Exception {
System.out.println("schedulePriority..1");
return "";
}
public String schedule(HashMap map) throws Exception {
System.out.println("schedulePriority..2");
return "";
}
public String schedule(String scheduleParamXML) throws ITMException, Exception {
String flag = "PWC";
String reultString = "";
try {
System.out.println("schedulePriority..3");
reultString = performOp(scheduleParamXML);
} catch (Exception e) {
e.printStackTrace();
}
return reultString;
}
public String performOp(String scheduleParamXML)throws ITMException
{
String retString = "";
ConnDriver connDriver = new ConnDriver();
Connection conn = null;
PreparedStatement pstmt = null,pstmt1=null;
ResultSet rs=null;
boolean isError = false;
String loginSiteCode="";
String siteCode="";
GenericUtility genericUtility = GenericUtility.getInstance();
Document dom=genericUtility.parseString(scheduleParamXML);
userId = genericUtility.getColumnValue("user_id", dom);
loginCode = genericUtility.getColumnValue("loginCode", dom);
loginSiteCode = genericUtility.getColumnValue("siteCode", dom);
siteCode=genericUtility.getColumnValue("site_code", dom);
siteCodes=siteCode;
Timestamp currDt = null;
currDt = new java.sql.Timestamp(System.currentTimeMillis());
try
{
this.userInfoXml = scheduleParamXML;
userInfo = new UserInfoBean(this.userInfoXml);
String transDB = userInfo.getTransDB();
System.out.println("get TransDB connection in updateStatus : " + transDB);
if ((transDB != null) && (transDB.trim().length() > 0))
{
conn = connDriver.getConnectDB(transDB);
}
else
{
// conn = connDriver.getConnectDB("DriverITM");
conn = connDriver.getConnectDB("Driver");
}
//conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
System.out.println("**STARTED***"+currDt);
retString = performOp(scheduleParamXML, conn);
System.out.println("retString :"+retString);
System.out.println("**ENDED***"+currDt);
}
catch(Exception e)
{
isError = true;
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if(conn != null)
{
if(isError)
{
conn.rollback();
}
else
{
conn.commit();
}
conn.close();
conn = null;
}
}
catch(Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
}
return retString;
}
public String performOp(String scheduleParamXML,Connection conn)throws ITMException
{
String sql ="";
String errString="";
int empCount = 0;
PreparedStatement pstmt = null,pstmt1=null,pstmt2=null,pstmt3=null,pstmt4=null,pstmt5=null;
ResultSet rs = null,rs1=null,rs2=null,rs3=null,rs4=null ;
String emp_code="", prvMonth = "";
Timestamp chgDate = null,effDate= null,workDate= null, joinDate=null,prdLstDate = null;
Timestamp currDate = null;
currDate = new java.sql.Timestamp(System.currentTimeMillis());
HashMap<String, String> map = null;
DistCommon disCom = new DistCommon();
E12GenericUtility genericUtility = new E12GenericUtility();
String dwhPeriod="",dwhPeriod1="";
int insertCnt=0;
int insertFailCnt=0;
try{
SimpleDateFormat sdf1 = new SimpleDateFormat(genericUtility.getApplDateFormat());
SimpleDateFormat sdf= new SimpleDateFormat("dd-MMM-yy");
String prsql="select to_date from period where code='"+dwhPeriod+"' ";
pstmt=conn.prepareStatement(prsql);
rs4=pstmt.executeQuery();
while(rs4.next()){
prdLstDate= rs4.getTimestamp("to_date");
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if (rs4 != null)
{
rs4.close();
rs4 = null;
}
if(prdLstDate!=null)
{
dwhPeriod = sdf.format(prdLstDate);
}
String bussType="";
NodeList parentNodeList = null,childNodeList = null;
Node parentNode = null,childNode = null;
int childNodeListLength = 0;
String childNodeName = null;
Document dom=genericUtility.parseString(scheduleParamXML);
parentNodeList = dom.getElementsByTagName("ACTUALPARAMETERS");
parentNode = parentNodeList.item(0);
childNodeList = parentNode.getChildNodes();
childNodeListLength = childNodeList.getLength();
String transDB = "";
for(int ctr = 0; ctr < childNodeListLength; ctr++)
{
childNode = childNodeList.item(ctr);
childNodeName = childNode.getNodeName();
if(childNodeName!=null && !"#text".equalsIgnoreCase(childNodeName))
{
// if(ctr==0)
// {
// dwhPeriod1 = checkNull(childNode.getFirstChild().getNodeValue());
// }
if(ctr==0)
{
transDB = checkNull(childNode.getFirstChild().getNodeValue());
System.out.println("transDB>>>>>"+ transDB);
}
else if(ctr==1)
{
bussType = checkNull(childNode.getFirstChild().getNodeValue());
System.out.println("bussType>>>>>"+ bussType);
}
else if(ctr==2)
{
prvMonth = checkNull(childNode.getFirstChild().getNodeValue());
System.out.println("prvMonth>>>>>"+ prvMonth);
}
}
}
FinCommon finCommon= new FinCommon();
logPath = finCommon.getFinparams("999999", "ALF_LOG_PATH", conn);
int rowCnt=0;
System.out.println("bussType==>"+bussType);
//dwhPeriod1 = getPrvMonth(dwhPeriod1,prvMonth);
prvMonth = "-"+prvMonth;
System.out.println("prvMonth>>>>>"+ prvMonth);
prsql="select count(1) from dwh_emp_behaviour where prd_code= to_char(to_date(add_months( sysdate,"+prvMonth+" ) ), 'YYYYMM') and business_type=?";
//prsql="select count(1) from dwh_emp_behaviour where prd_code= to_char(to_date(add_months( sysdate, ? ) ), 'YYYYMM') and business_type=?";
pstmt=conn.prepareStatement(prsql);
//pstmt.setString(1, prvMonth);
pstmt.setString(1, bussType);
rs=pstmt.executeQuery();
System.out.println("prsql>>>>>" + prsql);
if(rs.next())
{
rowCnt=rs.getInt(1);
}
printLog("total selected row is====:["+rowCnt+"]");
System.out.println("total selected row is====>["+rowCnt+"]");
pstmt.close();
pstmt=null;
rs.close();
rs=null;
// prsql="delete from dwh_emp_behaviour where prd_code= to_char(to_date(add_months( sysdate, ? ) ), 'YYYYMM') and business_type=?";
prsql="delete from dwh_emp_behaviour where prd_code= to_char(to_date(add_months( sysdate,"+prvMonth+" ) ), 'YYYYMM') and business_type=?";
pstmt=conn.prepareStatement(prsql);
// pstmt.setString(1, prvMonth);
pstmt.setString(1, bussType);
int dltcount=pstmt.executeUpdate();
System.out.println("prsql>>>>>" + prsql);
if(dltcount > 0)
{
conn.commit();
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
System.out.println("delete record====>["+dltcount+"]");
printLog("Total Deleted Record is=====:["+dltcount+"]");
sql="SELECT S.ITEM_SER AS DIV, E.EMP_CODE FROM SALES_PERS S, EMPLOYEE E, EMPLOYEE FLM, EMPLOYEE SLM,"
+ "EMPLOYEE TLM WHERE S.SALES_PERS = E.EMP_CODE AND E.RELIEVE_DATE IS NULL AND "
+ "E.WITH_HELD= 'N' AND E.REPORT_TO= FLM.EMP_CODE(+) AND FLM.REPORT_TO= SLM.EMP_CODE(+) AND "
+ "SLM.REPORT_TO= TLM.EMP_CODE(+) and trim(S.ITEM_SER) IN (select trim(Udf_Str1) from gencodes where "
+ "mod_name='SFAREPORT' and active='Y' and UDF_STR2 =?) ORDER BY S.ITEM_SER, S.SALES_PERS";
System.out.println("sql>>>>>"+ sql);
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, bussType);
rs=pstmt.executeQuery();
while(rs.next()){
try
{
emp_code=rs.getString("EMP_CODE");
empCount++;
//
sql="INSERT INTO dwh_emp_behaviour (\r\n"
+ " prd_code,\r\n"
+ " emp_code,\r\n"
+ " emp_name,\r\n"
+ " doj,\r\n"
+ " dol,\r\n"
+ " dept,\r\n"
+ " dept_descr,\r\n"
+ " item_ser,\r\n"
+ " item_ser_descr,\r\n"
+ " designation,\r\n"
+ " flm_code,\r\n"
+ " flm_name,\r\n"
+ " slm_code,\r\n"
+ " slm_name,\r\n"
+ " tlm_code,\r\n"
+ " tlm_name,\r\n"
+ " so_hq,\r\n"
+ " locality_code,\r\n"
+ " locality_descr,\r\n"
+ " state_code,\r\n"
+ " state_descr,\r\n"
+ " beh01_wrk_hrs_count,\r\n"
+ " beh02_stagnant_sls,\r\n"
+ " beh03_rptlock_count,\r\n"
+ " beh04_drcall_variance,\r\n"
+ " beh05_eod_count,\r\n"
+ " beh06_promo_issue_qty,\r\n"
+ " beh07_stagnant_sls_focused,\r\n"
+ " beh08_miss_call_variance,\r\n"
+ " beh09_area_doc_coverage,\r\n"
+ " beh10_non_listed,\r\n"
+ " business_type,\r\n"
+ " udf_str1,\r\n"
+ " udf_str2,\r\n"
+ " udf_str3,\r\n"
+ " chg_user,\r\n"
+ " chg_date,\r\n"
+ " chg_term,\r\n"
+ " beh06_promo_dis_qty\r\n"
+ " ) \r\n"
+ "\r\n"
+ "\r\n"
+ " \r\n"
+ " WITH prd AS (\r\n"
+ " SELECT\r\n"
+ " fr_date,\r\n"
+ " to_date,\r\n"
+ " code\r\n"
+ " FROM\r\n"
+ " period\r\n"
+ " WHERE\r\n"
+ " code = to_char(to_date(add_months(sysdate,"+prvMonth+")), 'YYYYMM')\r\n"
+ " ), data AS (\r\n"
+ " SELECT\r\n"
+ " a.sales_pers,\r\n"
+ " a.work_date,\r\n"
+ " a.grade,\r\n"
+ " ddf_smkt_gen_det(a.sales_pers, NULL, NULL, NULL, 'HQ_STN_DESC') AS so_hq,\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " ddf_smkt_min_in_time(MIN(ddf_smkt_time_in_min(b.doctor_visit_time)))\r\n"
+ " FROM\r\n"
+ " dr_main aa,\r\n"
+ " dr_doctor_visit b\r\n"
+ " WHERE\r\n"
+ " aa.sales_pers = b.sales_pers\r\n"
+ " AND aa.work_date = b.work_date\r\n"
+ " AND aa.confirmation_flag = 'Y'\r\n"
+ " and b.sc_type = 'C'\r\n"
+ " AND aa.sales_pers = a.sales_pers\r\n"
+ " AND aa.work_date = a.work_date\r\n"
+ " ) AS doc_start,\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " ddf_smkt_min_in_time(MAX(ddf_smkt_time_in_min(b.doctor_visit_time)))\r\n"
+ " FROM\r\n"
+ " dr_main aa,\r\n"
+ " dr_doctor_visit b\r\n"
+ " WHERE\r\n"
+ " aa.sales_pers = b.sales_pers\r\n"
+ " AND aa.work_date = b.work_date\r\n"
+ " AND aa.confirmation_flag = 'Y'\r\n"
+ " and b.sc_type = 'C'\r\n"
+ " AND aa.sales_pers = a.sales_pers\r\n"
+ " AND aa.work_date = a.work_date\r\n"
+ " ) AS doc_end\r\n"
+ " FROM\r\n"
+ " dr_main a,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " a.confirmation_flag = 'Y'\r\n"
+ " AND a.sales_pers = ?\r\n"
+ " AND a.work_date BETWEEN prd.fr_date AND prd.to_date\r\n"
+ " )\r\n"
+ " , data1 AS (\r\n"
+ " SELECT\r\n"
+ " sales_pers,\r\n"
+ " work_date,\r\n"
+ " so_hq,\r\n"
+ " CASE\r\n"
+ " WHEN doc_start IS NOT NULL THEN\r\n"
+ " to_char(to_date(('01/08/2012'\r\n"
+ " || ' '\r\n"
+ " || doc_start), 'DD/MM/YY HH:MI AM'), 'HH24.MI')\r\n"
+ " ELSE\r\n"
+ " ''\r\n"
+ " END start_time,\r\n"
+ " 'doc_start' start_type,\r\n"
+ " CASE\r\n"
+ " WHEN doc_end IS NOT NULL THEN\r\n"
+ " to_char(to_date(('01/08/2012'\r\n"
+ " || ' '\r\n"
+ " || doc_end), 'DD/MM/YY HH:MI AM'), 'HH24.MI')\r\n"
+ " ELSE\r\n"
+ " ''\r\n"
+ " END end_time,\r\n"
+ " 'doc_end' end_type\r\n"
+ " FROM\r\n"
+ " data\r\n"
+ " ),\r\n"
+ " data2 AS (\r\n"
+ " SELECT\r\n"
+ " sales_pers,\r\n"
+ " to_char(to_date(work_date), 'YYYYMM') AS period,\r\n"
+ " so_hq,\r\n"
+ " work_date,\r\n"
+ " MIN(start_time) AS start_time,\r\n"
+ " MAX(end_time) AS end_time,\r\n"
+ " ( MAX(end_time) - MIN(start_time) ) AS time_spent,\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " nvl(SUM(a.noof_doct), 0)\r\n"
+ " FROM\r\n"
+ " dr_doctor_visit a,\r\n"
+ " dr_main b\r\n"
+ " WHERE\r\n"
+ " a.sales_pers = b.sales_pers\r\n"
+ " AND a.work_date = b.work_date\r\n"
+ " AND a.sc_type = 'N'\r\n"
+ " AND b.confirmation_flag = 'Y'\r\n"
+ " AND a.sales_pers = data1.sales_pers\r\n"
+ " AND a.work_date = data1.work_date\r\n"
+ " ) AS non_listed_call\r\n"
+ " FROM\r\n"
+ " data1\r\n"
+ " GROUP BY\r\n"
+ " sales_pers,\r\n"
+ " work_date,\r\n"
+ " so_hq,\r\n"
+ " to_char(to_date(work_date), 'YYYYMM')\r\n"
+ " ),\r\n"
+ " missed_call AS (\r\n"
+ " SELECT\r\n"
+ " sales_pers,\r\n"
+ " (SELECT SUM(strg_series.no_visit) FROM STRG_SERIES WHERE SALES_PERS=A.SALES_PERS AND STATUS='Y') AS no_visit,\r\n"
+ " SUM(actual_visit) AS actual_visit,\r\n"
+ " (SELECT SUM(\r\n"
+ " CASE\r\n"
+ " WHEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) > MAX(DR_DOCTOR_VISIT.NO_VISIT+1)\r\n"
+ " THEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) -MAX(DR_DOCTOR_VISIT.NO_VISIT+1) \r\n"
+ " ELSE 0\r\n"
+ " END) AS EXCESS_VST\r\n"
+ " FROM DR_DOCTOR_VISIT,prd\r\n"
+ " WHERE DR_DOCTOR_VISIT.SALES_PERS = a.sales_pers\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE >= prd.fr_date\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE <= prd.to_date\r\n"
+ " AND DR_DOCTOR_VISIT.SC_CODE < 'ZZZZZZZZZZ'\r\n"
+ " AND DR_DOCTOR_VISIT.SC_TYPE = 'C'\r\n"
+ " AND DDF_SMKT_GEN_DET(DR_DOCTOR_VISIT.SALES_PERS,NULL,DR_DOCTOR_VISIT.WORK_DATE,NULL,'DAR_CONF_FLAG') = 'Y'\r\n"
+ " GROUP BY DR_DOCTOR_VISIT.SC_CODE) as excess_visit,\r\n"
+ " \r\n"
+ " nvl((\r\n"
+ " SELECT\r\n"
+ " SUM((\r\n"
+ " CASE\r\n"
+ " WHEN fieldactivity.activity_code IN(\r\n"
+ " '22', '36', '58', '61'\r\n"
+ " ) THEN\r\n"
+ " .5\r\n"
+ " ELSE\r\n"
+ " 1\r\n"
+ " END\r\n"
+ " )) AS xx\r\n"
+ " FROM\r\n"
+ " employee, nsrno, fieldactivity, prd\r\n"
+ " WHERE\r\n"
+ " employee.emp_code = a.sales_pers\r\n"
+ " AND nsrno.adate >= prd.fr_date\r\n"
+ " AND nsrno.adate <= prd.to_date\r\n"
+ " AND fieldactivity.activity_code = nvl(ddf_smkt_planner_details(employee.emp_code, nsrno.adate, 'A', 'ACT_CODE'\r\n"
+ " ), 999999)\r\n"
+ " AND fieldactivity.activity_type = 'FW'\r\n"
+ " ), 0) AS field_work,\r\n"
+ " round((SUM(actual_visit)- (SELECT SUM(\r\n"
+ " CASE\r\n"
+ " WHEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) > MAX(DR_DOCTOR_VISIT.NO_VISIT+1)\r\n"
+ " THEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) -MAX(DR_DOCTOR_VISIT.NO_VISIT+1) \r\n"
+ " ELSE 0\r\n"
+ " END) AS EXCESS_VST\r\n"
+ " FROM DR_DOCTOR_VISIT,prd\r\n"
+ " WHERE DR_DOCTOR_VISIT.SALES_PERS = a.sales_pers\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE >= prd.fr_date\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE <= prd.to_date\r\n"
+ " AND DR_DOCTOR_VISIT.SC_CODE < 'ZZZZZZZZZZ'\r\n"
+ " AND DR_DOCTOR_VISIT.SC_TYPE = 'C'\r\n"
+ " AND DDF_SMKT_GEN_DET(DR_DOCTOR_VISIT.SALES_PERS,NULL,DR_DOCTOR_VISIT.WORK_DATE,NULL,'DAR_CONF_FLAG') = 'Y'\r\n"
+ " GROUP BY DR_DOCTOR_VISIT.SC_CODE))\r\n"
+ " / nvl((\r\n"
+ " SELECT\r\n"
+ " SUM((\r\n"
+ " CASE\r\n"
+ " WHEN fieldactivity.activity_code IN(\r\n"
+ " '22', '36', '58', '61'\r\n"
+ " ) THEN\r\n"
+ " .5\r\n"
+ " ELSE\r\n"
+ " 1\r\n"
+ " END\r\n"
+ " )) AS xx\r\n"
+ " FROM\r\n"
+ " employee, nsrno, fieldactivity, prd\r\n"
+ " WHERE\r\n"
+ " employee.emp_code = a.sales_pers\r\n"
+ " AND nsrno.adate >= prd.fr_date\r\n"
+ " AND nsrno.adate <= prd.to_date\r\n"
+ " AND fieldactivity.activity_code = nvl(ddf_smkt_planner_details(employee.emp_code, nsrno.adate, 'A', 'ACT_CODE'\r\n"
+ " ), 999999)\r\n"
+ " AND fieldactivity.activity_type = 'FW'\r\n"
+ " ), 0), 2) avg_doctor,\r\n"
+ " (SELECT SUM(strg_series.no_visit) FROM STRG_SERIES WHERE SALES_PERS=A.SALES_PERS AND STATUS='Y') - (SUM(actual_visit)- (SELECT SUM(\r\n"
+ " CASE\r\n"
+ " WHEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) > MAX(DR_DOCTOR_VISIT.NO_VISIT+1)\r\n"
+ " THEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) -MAX(DR_DOCTOR_VISIT.NO_VISIT+1) \r\n"
+ " ELSE 0\r\n"
+ " END) AS EXCESS_VST\r\n"
+ " FROM DR_DOCTOR_VISIT,prd\r\n"
+ " WHERE DR_DOCTOR_VISIT.SALES_PERS = a.sales_pers\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE >= prd.fr_date\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE <= prd.to_date\r\n"
+ " AND DR_DOCTOR_VISIT.SC_CODE < 'ZZZZZZZZZZ'\r\n"
+ " AND DR_DOCTOR_VISIT.SC_TYPE = 'C'\r\n"
+ " AND DDF_SMKT_GEN_DET(DR_DOCTOR_VISIT.SALES_PERS,NULL,DR_DOCTOR_VISIT.WORK_DATE,NULL,'DAR_CONF_FLAG') = 'Y'\r\n"
+ " GROUP BY DR_DOCTOR_VISIT.SC_CODE)) AS diff,\r\n"
+ " 100 - (SUM(actual_visit)- (SELECT SUM(\r\n"
+ " CASE\r\n"
+ " WHEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) > MAX(DR_DOCTOR_VISIT.NO_VISIT+1)\r\n"
+ " THEN SUM(DR_DOCTOR_VISIT.NOOF_DOCT) -MAX(DR_DOCTOR_VISIT.NO_VISIT+1) \r\n"
+ " ELSE 0\r\n"
+ " END) AS EXCESS_VST\r\n"
+ " FROM DR_DOCTOR_VISIT,prd\r\n"
+ " WHERE DR_DOCTOR_VISIT.SALES_PERS = a.sales_pers\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE >= prd.fr_date\r\n"
+ " AND DR_DOCTOR_VISIT.WORK_DATE <= prd.to_date\r\n"
+ " AND DR_DOCTOR_VISIT.SC_CODE < 'ZZZZZZZZZZ'\r\n"
+ " AND DR_DOCTOR_VISIT.SC_TYPE = 'C'\r\n"
+ " AND DDF_SMKT_GEN_DET(DR_DOCTOR_VISIT.SALES_PERS,NULL,DR_DOCTOR_VISIT.WORK_DATE,NULL,'DAR_CONF_FLAG') = 'Y'\r\n"
+ " GROUP BY DR_DOCTOR_VISIT.SC_CODE)) / (SELECT SUM(strg_series.no_visit) FROM STRG_SERIES WHERE SALES_PERS=A.SALES_PERS AND STATUS='Y') * 100 AS diff_perc\r\n"
+ " FROM\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " dr_doctor_visit.sales_pers,\r\n"
+ " sc_code,\r\n"
+ " no_visit,\r\n"
+ " COUNT(sc_code) AS actual_visit\r\n"
+ " FROM\r\n"
+ " dr_doctor_visit,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " dr_doctor_visit.sales_pers = ?\r\n"
+ " and dr_doctor_visit.sc_type = 'C'\r\n"
+ " AND work_date BETWEEN prd.fr_date AND prd.to_date\r\n"
+ " GROUP BY\r\n"
+ " dr_doctor_visit.sales_pers,\r\n"
+ " sc_code,\r\n"
+ " no_visit\r\n"
+ " ) a\r\n"
+ " GROUP BY\r\n"
+ " sales_pers\r\n"
+ " )\r\n"
+ "\r\n"
+ " , report_block AS (\r\n"
+ " SELECT\r\n"
+ " ser_req_typ.descr,\r\n"
+ " substr(substr(ser_complaint.comp_det, instr(ser_complaint.comp_det, '(', 1, 1), 7), 2) AS emp_code,\r\n"
+ " COUNT(ser_req_typ.descr) AS sub_count\r\n"
+ " FROM\r\n"
+ " ser_complaint,\r\n"
+ " ser_req_typ,\r\n"
+ " ser_complaint_fb,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " ser_complaint.req_type = ser_req_typ.req_type\r\n"
+ " AND ser_complaint.ticket_no = ser_complaint_fb.ticket_no (+)\r\n"
+ " AND substr(substr(ser_complaint.comp_det, instr(ser_complaint.comp_det, '(', 1, 1), 7), 2) = TRIM(?)\r\n"
+ " AND ser_complaint.ticket_date BETWEEN prd.fr_date AND prd.to_date\r\n"
+ " AND ser_req_typ.descr = 'REPORT UNLOCK'\r\n"
+ " GROUP BY\r\n"
+ " ser_req_typ.descr,\r\n"
+ " substr(substr(ser_complaint.comp_det, instr(ser_complaint.comp_det, '(', 1, 1), 7), 2)\r\n"
+ " )\r\n"
+ " , doc_coverage AS (\r\n"
+ " SELECT\r\n"
+ " dr_doctor_visit.sales_pers,\r\n"
+ " COUNT(DISTINCT CASE WHEN DR_DOCTOR_VISIT.SC_CODE IN STRG_SERIES.SC_CODE THEN dr_doctor_visit.sc_code END) actual_dr,\r\n"
+ " COUNT(DISTINCT strg_series.sc_code) plan_dr,\r\n"
+ " COUNT(DISTINCT CASE WHEN DR_DOCTOR_VISIT.SC_CODE IN STRG_SERIES.SC_CODE THEN dr_doctor_visit.sc_code END) / COUNT(DISTINCT strg_series.sc_code) * 100 AS area_doc_coverage\r\n"
+ " FROM\r\n"
+ " dr_doctor_visit,\r\n"
+ " strg_series,\r\n"
+ " PRD\r\n"
+ " WHERE\r\n"
+ " strg_series.sales_pers=dr_doctor_visit.sales_pers\r\n"
+ " AND dr_doctor_visit.work_date BETWEEN prd.fr_date AND prd.to_date\r\n"
+ " AND strg_series.sales_pers = ?\r\n"
+ " AND strg_series.status = 'Y'\r\n"
+ " GROUP BY\r\n"
+ " dr_doctor_visit.sales_pers\r\n"
+ " ),\r\n"
+ "\r\n"
+ "sales_data AS (\r\n"
+ " SELECT\r\n"
+ " org_structure.emp_code,\r\n"
+ " round(SUM(cust_stock_det.sales_value), 2) AS sales_value,\r\n"
+ " cust_stock.prd_code\r\n"
+ " FROM\r\n"
+ " cust_stock,\r\n"
+ " cust_stock_det,\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " org_structure.pos_code,\r\n"
+ " org_structure.emp_code,\r\n"
+ " C.CUST_CODE\r\n"
+ " FROM\r\n"
+ " org_structure,\r\n"
+ " org_structure_cust C,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " org_structure.version_id = c.version_id\r\n"
+ " AND org_structure.table_no = c.table_no\r\n"
+ " AND org_structure.pos_code = c.pos_code\r\n"
+ " AND org_structure.emp_code = ?\r\n"
+ " AND prd.to_date BETWEEN C.eff_date AND C.valid_upto\r\n"
+ " AND TRIM(org_structure.version_id) = (\r\n"
+ " CASE\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 04 AND 06 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q1'\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 07 AND 09 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q2'\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 10 AND 12 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q3'\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 01 AND 03 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q4'\r\n"
+ " END\r\n"
+ " )\r\n"
+ " ) org_structure,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " cust_stock.tran_id = cust_stock_det.tran_id\r\n"
+ " AND cust_stock.item_ser = cust_stock_det.item_ser\r\n"
+ " AND org_structure.pos_code = cust_stock.pos_code\r\n"
+ " AND cust_stock.prd_code = prd.code\r\n"
+ " AND cust_stock.cust_code=org_structure.CUST_CODE\r\n"
+ " GROUP BY\r\n"
+ " org_structure.emp_code,\r\n"
+ " cust_stock.prd_code\r\n"
+ "),\r\n"
+ "\r\n"
+ " sales_data_focused AS (\r\n"
+ " SELECT\r\n"
+ " org_structure.emp_code,\r\n"
+ " round(SUM(cust_stock_det.sales_value), 2) AS sales_value,\r\n"
+ " cust_stock.prd_code\r\n"
+ " \r\n"
+ " FROM\r\n"
+ " cust_stock,\r\n"
+ " cust_stock_det,\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " org_structure.pos_code,\r\n"
+ " org_structure.emp_code,\r\n"
+ " C.CUST_CODE\r\n"
+ " FROM\r\n"
+ " org_structure,\r\n"
+ " org_structure_cust C,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " org_structure.version_id = c.version_id\r\n"
+ " AND org_structure.table_no = c.table_no\r\n"
+ " AND org_structure.pos_code = c.pos_code\r\n"
+ " AND org_structure.emp_code = ?\r\n"
+ " AND prd.to_date BETWEEN C.eff_date AND C.valid_upto\r\n"
+ " AND TRIM(org_structure.version_id) = (\r\n"
+ " CASE\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 04 AND 06 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q1'\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 07 AND 09 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q2'\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 10 AND 12 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q3'\r\n"
+ " WHEN to_char(to_date(prd.fr_date), 'MM') BETWEEN 01 AND 03 THEN\r\n"
+ " substr(EXTRACT(YEAR FROM add_months(prd.fr_date, - 3)), 3, 2)\r\n"
+ " || substr(EXTRACT(YEAR FROM add_months(prd.fr_date, 9)), 3, 2)\r\n"
+ " || 'Q4'\r\n"
+ " END\r\n"
+ " )\r\n"
+ " ) org_structure,\r\n"
+ " prd,dwh_focus_brand\r\n"
+ " WHERE\r\n"
+ " cust_stock.tran_id = cust_stock_det.tran_id\r\n"
+ " AND cust_stock.item_ser = cust_stock_det.item_ser\r\n"
+ " AND org_structure.pos_code = cust_stock.pos_code\r\n"
+ " AND cust_stock.prd_code = prd.code\r\n"
+ " AND cust_stock.cust_code=org_structure.CUST_CODE\r\n"
+ " AND TRIM(cust_stock_det.item_code) = TRIM(dwh_focus_brand.item_code)\r\n"
+ " AND dwh_focus_brand.active = 'Y'\r\n"
+ " GROUP BY\r\n"
+ " org_structure.emp_code,\r\n"
+ " cust_stock.prd_code\r\n"
+ " ),\r\n"
+ " gift_data AS (\r\n"
+ " SELECT\r\n"
+ " a.sundry_code AS emp_code,\r\n"
+ " d.item_ser,\r\n"
+ " a.item_code,\r\n"
+ " b.descr,\r\n"
+ " b.item_usage,\r\n"
+ " SUM((\r\n"
+ " CASE\r\n"
+ " WHEN a.ref_ser = 'S-AISS'\r\n"
+ " AND 1 = nvl((\r\n"
+ " SELECT\r\n"
+ " 1\r\n"
+ " FROM\r\n"
+ " sample_iss_det x\r\n"
+ " WHERE\r\n"
+ " x.tran_id = a.ref_id\r\n"
+ " AND x.item_code = a.item_code\r\n"
+ " AND x.reas_code = 'MPQ'\r\n"
+ " GROUP BY\r\n"
+ " 1\r\n"
+ " ), 0) THEN\r\n"
+ " 0\r\n"
+ " WHEN a.ref_ser IN(\r\n"
+ " 'S-DISS', 'S-DRCP'\r\n"
+ " ) THEN\r\n"
+ " 0\r\n"
+ " ELSE\r\n"
+ " a.eff_qty\r\n"
+ " END\r\n"
+ " )) AS issue_qty,\r\n"
+ " to_char(a.tran_date, 'YYYYMM') AS dis_mon,\r\n"
+ " SUM((\r\n"
+ " CASE\r\n"
+ " WHEN a.ref_ser IN(\r\n"
+ " 'S-DISS', 'S-DRCP'\r\n"
+ " ) THEN\r\n"
+ " - 0 - a.eff_qty\r\n"
+ " ELSE\r\n"
+ " 0\r\n"
+ " END\r\n"
+ " )) AS dist_qty\r\n"
+ " FROM\r\n"
+ " sample_invtrace a,\r\n"
+ " sales_pers sp,\r\n"
+ " item b,\r\n"
+ " itemser d,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " a.sundry_code = sp.sales_pers\r\n"
+ " AND a.item_code = b.item_code\r\n"
+ " AND b.item_ser = sp.item_ser\r\n"
+ " AND sp.item_ser = d.item_ser\r\n"
+ " AND a.sundry_code = ?\r\n"
+ " AND a.tran_date >= prd.fr_date\r\n"
+ " AND a.tran_date <= prd.to_date\r\n"
+ " AND a.sundry_type = 'E'\r\n"
+ " AND a.ref_ser IS NOT NULL\r\n"
+ " AND 1 = (\r\n"
+ " CASE\r\n"
+ " WHEN b.item_usage = 'G' THEN\r\n"
+ " 1\r\n"
+ " WHEN 'A' = 'G' THEN\r\n"
+ " 1\r\n"
+ " ELSE\r\n"
+ " 0\r\n"
+ " END\r\n"
+ " )\r\n"
+ " GROUP BY\r\n"
+ " a.sundry_code,\r\n"
+ " d.item_ser,\r\n"
+ " a.item_code,\r\n"
+ " b.descr,\r\n"
+ " b.item_usage,\r\n"
+ " to_char(a.tran_date, 'YYYYMM'),\r\n"
+ " b.purc_rate,\r\n"
+ " b.denominator_unit\r\n"
+ " )\r\n"
+ "\r\n"
+ " , gift_data1 AS (\r\n"
+ " SELECT\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " z.sh_descr\r\n"
+ " FROM\r\n"
+ " itemser z\r\n"
+ " WHERE\r\n"
+ " z.item_ser = d.item_ser\r\n"
+ " ) AS div,\r\n"
+ " d.emp_code,\r\n"
+ " d.item_code,\r\n"
+ " d.descr,\r\n"
+ " d.item_usage,\r\n"
+ " ddf_get_gift_dis_dtl('STATUS', d.emp_code, d.item_code, NULL, NULL) AS status,\r\n"
+ " ddf_get_gift_dis_dtl('ISSUE_DATE', d.emp_code, d.item_code, prd.fr_date, prd.to_date) AS issue_date,\r\n"
+ " nvl(d.issue_qty, 0) AS issue_qty,\r\n"
+ " nvl(d.dist_qty, 0) AS dist_qty\r\n"
+ " FROM\r\n"
+ " gift_data d,\r\n"
+ " employee e,\r\n"
+ " sprs_item f,\r\n"
+ " prd\r\n"
+ " WHERE\r\n"
+ " e.emp_code = d.emp_code\r\n"
+ " AND d.emp_code = f.sales_pers (+)\r\n"
+ " AND d.item_code = f.item_code (+)\r\n"
+ " AND 1 = (\r\n"
+ " CASE\r\n"
+ " WHEN nvl(f.status, 'X') = 'A' THEN\r\n"
+ " 1\r\n"
+ " WHEN 'A' = 'A' THEN\r\n"
+ " 1\r\n"
+ " ELSE\r\n"
+ " 0\r\n"
+ " END\r\n"
+ " )\r\n"
+ " AND 1 = (\r\n"
+ " CASE\r\n"
+ " WHEN nvl(d.dist_qty, 0) = 0 THEN\r\n"
+ " 1\r\n"
+ " WHEN nvl(d.dist_qty, 0) <> 0\r\n"
+ " AND 1 = (\r\n"
+ " SELECT\r\n"
+ " 1\r\n"
+ " FROM\r\n"
+ " sprs_item a\r\n"
+ " WHERE\r\n"
+ " a.sales_pers = d.emp_code\r\n"
+ " AND a.item_code = d.item_code\r\n"
+ " ) THEN\r\n"
+ " 1\r\n"
+ " ELSE\r\n"
+ " 0\r\n"
+ " END\r\n"
+ " )\r\n"
+ "), gift_data2 AS (\r\n"
+ " SELECT\r\n"
+ " div,\r\n"
+ " emp_code,\r\n"
+ " SUM(issue_qty) AS issue_qty,\r\n"
+ " SUM(dist_qty) AS dis_qty,\r\n"
+ " round(\r\n"
+ " CASE\r\n"
+ " WHEN SUM(issue_qty) = 0 THEN\r\n"
+ " 0\r\n"
+ " ELSE\r\n"
+ " SUM(dist_qty) / SUM(issue_qty) * 100\r\n"
+ " END, 2) AS perc\r\n"
+ " FROM\r\n"
+ " gift_data1\r\n"
+ " GROUP BY\r\n"
+ " div,\r\n"
+ " emp_code\r\n"
+ ")\r\n"
+ "SELECT\r\n"
+ " data2.period,\r\n"
+ " data2.sales_pers AS emp_code,\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname AS emp_name,\r\n"
+ " e.date_join AS doj,\r\n"
+ " e.relieve_date AS dol,\r\n"
+ " e.dept_code AS dept,\r\n"
+ " department.descr AS dept_descr,\r\n"
+ " s.item_ser AS item_ser,\r\n"
+ " itemser.sh_descr AS item_ser_descr,\r\n"
+ " ddf_smkt_gen_det(data2.sales_pers, NULL, NULL, NULL, 'DESG') AS designation,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " e.emp_code\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_code\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_code\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_code\r\n"
+ " ELSE\r\n"
+ " 'VC0001'\r\n"
+ " END\r\n"
+ " ) AS flm_code,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_lname\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_lname\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_lname\r\n"
+ " ELSE\r\n"
+ " 'V A C A N T'\r\n"
+ " END\r\n"
+ " ) AS flm_name,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " e.emp_code\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_code\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_code\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_code\r\n"
+ " ELSE\r\n"
+ " 'VC0001'\r\n"
+ " END\r\n"
+ " ) AS slm_code,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_lname\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_lname\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_lname\r\n"
+ " ELSE\r\n"
+ " 'V A C A N T'\r\n"
+ " END\r\n"
+ " ) AS slm_name,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " e.emp_code\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_code\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_code\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_code\r\n"
+ " ELSE\r\n"
+ " 'VC0001'\r\n"
+ " END\r\n"
+ " ) AS tlm_code,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_lname\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_lname\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_lname\r\n"
+ " ELSE\r\n"
+ " 'V A C A N T'\r\n"
+ " END\r\n"
+ " ) AS tlm_name,\r\n"
+ " data2.so_hq AS so_hq,\r\n"
+ " '' AS locality_code,\r\n"
+ " '' AS locality_descr,\r\n"
+ " (\r\n"
+ " SELECT\r\n"
+ " c.state_code\r\n"
+ " FROM\r\n"
+ " employee a,\r\n"
+ " station b,\r\n"
+ " state c\r\n"
+ " WHERE\r\n"
+ " a.stan_code__hq = b.stan_code\r\n"
+ " AND b.state_code = c.state_code\r\n"
+ " AND a.emp_code = data2.sales_pers\r\n"
+ " ) AS state_code,\r\n"
+ " ddf_smkt_gen_det(data2.sales_pers, NULL, NULL, NULL, 'HQ_STATE_DESC') AS state_descr,\r\n"
+ " SUM(\r\n"
+ " CASE\r\n"
+ " WHEN data2.time_spent <= 5 THEN\r\n"
+ " 1\r\n"
+ " ELSE\r\n"
+ " 0\r\n"
+ " END\r\n"
+ " ) AS beh01_wrk_hrs_count,\r\n"
+ " MAX(sales_data.sales_value) beh02_stagnant_sls,\r\n"
+ " MAX(report_block.sub_count) AS beh03_rptlock_count,\r\n"
+ " MAX(missed_call.avg_doctor) AS beh04_drcall_variance,\r\n"
+ " SUM(\r\n"
+ " CASE\r\n"
+ " WHEN data2.end_time <= 15 THEN\r\n"
+ " 1\r\n"
+ " ELSE\r\n"
+ " 0\r\n"
+ " END\r\n"
+ " ) AS beh05_eod_count,\r\n"
+ " round(MAX(gift_data2.issue_qty), 2) AS beh06_promo_issue_qty,\r\n"
+ " MAX(sales_data_focused.sales_value) beh07_stagnant_sls_focused,\r\n"
+ " round(MAX(missed_call.diff_perc), 2) AS beh08_miss_call_variance,\r\n"
+ " round(MAX(doc_coverage.area_doc_coverage), 2) AS beh09_area_doc_coverage,\r\n"
+ " SUM(data2.non_listed_call) AS beh10_non_listed,\r\n"
+ " 'INDBUS' AS business_type,\r\n"
+ " '' AS udf_str1,\r\n"
+ " '' AS udf_str2,\r\n"
+ " '' AS udf_str3,\r\n"
+ " '' AS chg_user,\r\n"
+ " '' AS chg_date,\r\n"
+ " '' AS chg_term,\r\n"
+ " round(MAX(gift_data2.dis_qty), 2) AS beh06_promo_dis_qty\r\n"
+ "FROM\r\n"
+ " data2,\r\n"
+ " missed_call,\r\n"
+ " report_block,\r\n"
+ " doc_coverage,\r\n"
+ " sales_data,\r\n"
+ " sales_data_focused,\r\n"
+ " gift_data2,\r\n"
+ " sales_pers s,\r\n"
+ " itemser,\r\n"
+ " department,\r\n"
+ " employee e,\r\n"
+ " employee flm,\r\n"
+ " employee slm,\r\n"
+ " employee tlm\r\n"
+ "WHERE\r\n"
+ " data2.sales_pers = missed_call.sales_pers\r\n"
+ " AND data2.sales_pers = doc_coverage.sales_pers (+)\r\n"
+ " AND TRIM(data2.sales_pers) = report_block.emp_code (+)\r\n"
+ " AND data2.sales_pers = sales_data.emp_code (+)\r\n"
+ " AND data2.sales_pers = sales_data_focused.emp_code (+)\r\n"
+ " AND data2.sales_pers = gift_data2.emp_code (+)\r\n"
+ " AND data2.sales_pers = s.sales_pers\r\n"
+ " AND s.item_ser = itemser.item_ser\r\n"
+ " AND s.sales_pers = e.emp_code\r\n"
+ " AND e.dept_code = department.dept_code\r\n"
+ " AND e.report_to = flm.emp_code (+)\r\n"
+ " AND flm.report_to = slm.emp_code (+)\r\n"
+ " AND slm.report_to = tlm.emp_code (+)\r\n"
+ " AND E.date_join < add_months(sysdate,-15)\r\n"
+ " and ddf_smkt_gen_det(data2.sales_pers, NULL, NULL, NULL, 'DESG')='SE'\r\n"
+ "GROUP BY\r\n"
+ " data2.sales_pers,\r\n"
+ " data2.period,\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname,\r\n"
+ " e.date_join,\r\n"
+ " e.relieve_date,\r\n"
+ " s.item_ser,\r\n"
+ " itemser.sh_descr,\r\n"
+ " e.dept_code,\r\n"
+ " department.descr,\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " e.emp_code\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_code\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_code\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_code\r\n"
+ " ELSE\r\n"
+ " 'VC0001'\r\n"
+ " END\r\n"
+ " ),\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_lname\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_lname\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '219',\r\n"
+ " '223',\r\n"
+ " '229',\r\n"
+ " '227'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_lname\r\n"
+ " ELSE\r\n"
+ " 'V A C A N T'\r\n"
+ " END\r\n"
+ " ),\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " e.emp_code\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_code\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_code\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_code\r\n"
+ " ELSE\r\n"
+ " 'VC0001'\r\n"
+ " END\r\n"
+ " ),\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_lname\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_lname\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '220',\r\n"
+ " '224',\r\n"
+ " '226',\r\n"
+ " '228'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_lname\r\n"
+ " ELSE\r\n"
+ " 'V A C A N T'\r\n"
+ " END\r\n"
+ " ),\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " e.emp_code\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_code\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_code\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_code\r\n"
+ " ELSE\r\n"
+ " 'VC0001'\r\n"
+ " END\r\n"
+ " ),\r\n"
+ " (\r\n"
+ " CASE\r\n"
+ " WHEN e.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " e.emp_fname\r\n"
+ " || ' '\r\n"
+ " || e.emp_mname\r\n"
+ " || ' '\r\n"
+ " || e.emp_lname\r\n"
+ " WHEN flm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " flm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || flm.emp_lname\r\n"
+ " WHEN slm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " slm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || slm.emp_lname\r\n"
+ " WHEN tlm.grade IN (\r\n"
+ " '179',\r\n"
+ " '180',\r\n"
+ " '181'\r\n"
+ " ) THEN\r\n"
+ " tlm.emp_fname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_mname\r\n"
+ " || ' '\r\n"
+ " || tlm.emp_lname\r\n"
+ " ELSE\r\n"
+ " 'V A C A N T'\r\n"
+ " END\r\n"
+ " ),\r\n"
+ " data2.so_hq";
pstmt3=conn.prepareStatement(sql);
pstmt3.setString(1, emp_code);
pstmt3.setString(2, emp_code);
pstmt3.setString(3, emp_code);
pstmt3.setString(4, emp_code);
pstmt3.setString(5, emp_code);
pstmt3.setString(6, emp_code);
pstmt3.setString(7, emp_code);
int a= pstmt3.executeUpdate();
if(a==0){
insertFailCnt++;
System.out.println("Failed To INSERT ..................");
conn.rollback();
}
else{
insertCnt++;
conn.commit();
System.out.println("Sucessfully INSERTED..................");
}
pstmt3.close();
pstmt3=null;
}
catch(Exception e)
{
e.printStackTrace();
pstmt3.close();
pstmt3=null;
}
}
rs.close();
rs=null;
pstmt.close();
pstmt=null;
}
catch (SQLException e)
{
System.out.println("sql Exception :Dwh Scheduler ):" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
catch (Exception e)
{
System.out.println("Exception :Dwh Scheduler ):" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if (rs != null)
{
rs.close();
rs = null;
}
if(pstmt1!=null){
pstmt1.close();
pstmt1 = null;
}
if (rs1 != null)
{
rs1.close();
rs1 = null;
}
if(pstmt2!=null){
pstmt2.close();
pstmt2 = null;
}
if (rs2 != null)
{
rs2.close();
rs2 = null;
}
if(pstmt3!=null){
pstmt3.close();
pstmt3 = null;
}
if (rs3 != null)
{
rs3.close();
rs3 = null;
}
if(pstmt4!=null){
pstmt4.close();
pstmt4 = null;
}
if(pstmt5!=null){
pstmt5.close();
pstmt5 = null;
}
}
catch(Exception e)
{
System.err.println("Exception :DBAccessEJB :getITMVersion :\n"+e.getMessage());
e.printStackTrace();
throw new ITMException(e);
}
}
System.out.println("totel Not inserted row is====>["+insertFailCnt+"]");
printLog("totel Not inserted row is====:["+insertFailCnt+"]");
System.out.println("totel inserted row is====>["+insertCnt+"]");
printLog("totel inserted row is====:["+insertCnt+"]");
System.out.println("totel emp Count is====>["+empCount+"]");
return errString;
}
private String checkNull(String input) {
if (input == null) {
input = " ";
return input;
}
if (input.equalsIgnoreCase("")) {
input = " ";
return input;
}
return input.trim();
}
private String getPrvMonth(String pdate,String pMonth)
{
String prvMonth = "";
try
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
Date now1 =sdf.parse(pdate);
System.out.println("now1 > "+sdf.format(now1));
Calendar cal = Calendar.getInstance();
cal.setTime(now1);
System.out.println("cal before > "+sdf.format(cal.getTime()));
int pmnth = Integer.parseInt(pMonth);
cal.add(Calendar.MONTH, - pmnth);
System.out.println("cal after > "+sdf.format(cal.getTime()));
prvMonth = sdf.format(cal.getTime());
}
catch(Exception e)
{
e.printStackTrace();
prvMonth = "";
}
return prvMonth;
}
private void printLog(String msg) throws ITMException {
String logFile = "";
String logDir = "";
File logFileDir = null;
FileWriter fileWriter = null;
try {
String logFileName = "";
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
logFileName = "dwh" + "_" + sdf.format(new Date());
System.out.println("Inside the print log method");
logDir = logPath + File.separator;
System.out.println("Log direction: " + logDir);
logFileDir = new File(logDir);
if (!logFileDir.exists()) {
logFileDir.mkdirs();
}
logFile = logDir + File.separator + logFileName + ".log";
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
java.util.Date now = new java.util.Date();
String strDate = sdfDate.format(now);
fileWriter = new FileWriter(logFile, true);
fileWriter.write("\r\n");
fileWriter.write(strDate +" " + msg);
} catch (Exception e) {
e.printStackTrace();
throw new ITMException(e);
} finally {
try {
if (fileWriter != null) {
fileWriter.flush();
fileWriter.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment