Commit 4557bb04 authored by wansari's avatar wansari

W15GSUN003 added component for schedular


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@98828 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 0d06aee7
/*
* Author:Wasim Ansari
* Date: 13-OCT-15
* Request ID: W15GSUN003
* Description: Creating a scheduler for acknowledgement from AWMS and create or confirm stock transfer.
*/
package ibase.webitm.utility.wms;
import ibase.scheduler.utility.interfaces.Schedule;
import java.io.File;
import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.sql.*;
import javax.naming.InitialContext;
import ibase.webitm.utility.ITMException;
import ibase.webitm.utility.TransIDGenerator;
import ibase.webitm.ejb.*;
import ibase.webitm.ejb.dis.CreateDistIssue;
import ibase.webitm.ejb.dis.DistCommon;
import ibase.webitm.ejb.dis.DistOrderClubBean;
import ibase.webitm.ejb.dis.DistStkUpdLocal;
import ibase.webitm.ejb.dis.InvAllocTraceBean;
import ibase.webitm.ejb.dis.InvHoldGen;
import ibase.webitm.ejb.dis.adv.InvHoldConf;
import ibase.webitm.ejb.dis.adv.StockTransferConf;
import ibase.webitm.utility.GenericUtility;
import ibase.utility.CommonConstants;
import ibase.system.config.*;
public class ScheduleAWMSInOutTasks implements Schedule
{
GenericUtility genericUtility = GenericUtility.getInstance();
ITMDBAccessEJB itmDBAccessEJB = new ITMDBAccessEJB();
DistCommon distComm = new DistCommon();
StringBuffer failMsg = null;
/*HashMap<String,String> errMap=new HashMap<String, String>();
String errCode1=" \n Stock does not exist!\n";
String errCode2=" \n Stock does not exist for few items!\n";
String errCode3=" \n Unconfirmed Issue Exists!\n";
String errCode4=" \n All Quantity Issued.!\n";
String errCode5=" \n Unconfirmed Dist order or closed!\n";*/
String chgUser = null;
String chgTerm = null;
boolean isError = false;
public String schedulePriority(String wrkflwPriority)throws Exception
{
return "";
}
public String schedule(HashMap map)throws Exception
{
return "";
}
public String schedule(String scheduleParamXML)throws Exception
{
String siteCode = "";
ibase.utility.UserInfoBean userInfo = null;
String xtraParams = "";
try
{
System.out.println("Schedule Param ["+scheduleParamXML+"]");
userInfo = new ibase.utility.UserInfoBean(scheduleParamXML);
siteCode = userInfo.getSiteCode();
System.out.println("Site code = "+siteCode);
xtraParams = "loginCode="+userInfo.getEmpCode()+"~~chgTerm="+userInfo.getRemoteHost()+"~~loginSiteCode="+siteCode;
scheduleStockTransfer(siteCode,scheduleParamXML,xtraParams);
System.out.println("Final Return from schedular");
}
catch(Exception e)
{
throw new Exception(e);
}
return "";
}
public String scheduleStockTransfer(String siteCode , String scheduleParamXML, String xtraParams) throws RemoteException,ITMException
{
Connection conn = null;
ResultSet rs = null;
PreparedStatement pstmt = null, interfacePstmt = null;
String errString = "", sql = "",inOut = "",refSer = "",refId = "",palletRej = "";
boolean contPllt = false;
try
{
ConnDriver connDriver = new ConnDriver();
conn = connDriver.getConnectDB("DriverITM");
connDriver = null;
conn.setAutoCommit(false);
/*sql = "SELECT IN_OUT,ERR_COD,MSG_STAT,TRANS_DT_ACK,TRAN_ID,"
+ "ITEM_CODE,DESCR,UNIT,ITEM_TYPE,FAMILY_GRP,REF_SER,"
+ "LOT_NO,REF_ID,LOT_SL,QUANTITY,NO_ART,EXP_DATE,MFG_DATE,"
+ "PALLET_NO,PALLET_STATUS,LOCK_STAT,QC_TYPE,STRO_PREF,PALLET_REJ,"
+ "PALLET_REJ_DESC,REF_LINE_NO FROM INTERFACE "
+ "WHERE SYSDATE > TRANS_DT_ACK";*/
sql = "SELECT DISTINCT REF_ID,REF_SER,IN_OUT,MSG_STAT FROM INTERFACE WHERE SYSDATE > TRANS_DT_ACK";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while(rs.next())
{
HashMap interfaceHmap = new HashMap();
refSer = checkNullAndTrim(rs.getString("REF_SER"));
refId = checkNullAndTrim(rs.getString("REF_ID"));
inOut = checkNullAndTrim(rs.getString("IN_OUT"));
palletRej = checkNullAndTrim(rs.getString("MSG_STAT"));
interfaceHmap.put("REF_ID", refId);
interfaceHmap.put("REF_SER", refSer);
contPllt = checkCountPalletReq(refId,conn);
if(contPllt)
{
if("E".equalsIgnoreCase(palletRej))
{
System.out.println("Go on inventory hold");
errString = inventoryHold(interfaceHmap, siteCode,xtraParams, conn);
}
else
{
System.out.println("Going for stock transfer refId["+refId+"]refSer["+refSer+"]inOut["+inOut+"]");
errString = stockTransfer(interfaceHmap,xtraParams,conn);
/*if("I".equalsIgnoreCase(inOut))
{
errString = stockTransfer(interfaceHmap,xtraParams,conn);
}
else
{
if("O".equalsIgnoreCase(inOut))
{
if("D-SO".equalsIgnoreCase(refSer) || "S-ORD".equalsIgnoreCase(refSer))
{
errString = stockTransfer(interfaceHmap,xtraParams,conn);
}
}
}*/
}
}//End checkCountPalletReq check
}
rs.close();rs = null;
pstmt.close();pstmt = null;
}
catch(Exception e)
{
isError = true;
System.out.println("Exception caught");
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
System.out.println("isError="+isError);
if(isError)
{
conn.rollback();
}
else
{
conn.commit();
errString = itmDBAccessEJB.getErrorString("","VTCONPARM","","",conn);
}
if(pstmt != null){pstmt.close();pstmt=null;}
if(interfacePstmt != null){interfacePstmt.close();interfacePstmt=null;}
if(rs != null){rs.close();rs=null;}
}
catch(Exception se)
{
throw new ITMException(se);
}
}
System.out.println("Final return string" + errString);
return errString;
}
private String stockTransfer(HashMap interfaceMap,String xtraParams,Connection conn) throws SQLException, ITMException
{
PreparedStatement pstmt=null, pstmtHdr = null, pstmtDet = null;
ResultSet rs = null;
String sql = "",insertSql = "",tranID = "",loginSiteCode = "",userId = "",errString = "";
String refSer = "",refId = "",noArt = "",itemCode = "",lotNo = "",lotSl = "",acctCodeInv = "",cctrCodeInv = "",
palletNo = "",locCodeTo = "",locCodeFrom = "",siteCode = "";
Double quantity = 0d;
int updCnt = 0,lineNo = 0;
HashMap hashMap = new HashMap();
java.sql.Timestamp currDate = new java.sql.Timestamp( System.currentTimeMillis() );
loginSiteCode = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginSiteCode" );
userId = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginCode" );
chgTerm = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "chgTerm" );
DistStkUpdLocal distStkUpd = null;
try
{
System.out.println("Inside stock transfer");
SimpleDateFormat sdfAppl = new SimpleDateFormat(genericUtility.getApplDateFormat());
String currDateStr = sdfAppl.format(currDate);
refSer = (String) interfaceMap.get("REF_SER");
refId = (String) interfaceMap.get("REF_ID");
if("D-SO".equalsIgnoreCase(refSer))
{
sql = "SELECT ITEM_CODE,LINE_NO,QUANTITY,QTY_ALLOC,UNIT,LOT_NO,LOT_SL,MFG_DATE,EXP_DATE,LOC_CODE,SITE_CODE__MFG AS SITE_CODE"
+ " FROM DISTORDER_ALLOC WHERE DIST_ORDER = ? ";
}
else if("S-ORD".equalsIgnoreCase(refSer))
{
sql = "SELECT ITEM_CODE,LINE_NO,QUANTITY,QTY_ALLOC,UNIT__STD AS UNIT,LOT_NO,LOT_SL,MFG_DATE,EXP_DATE,LOC_CODE,SITE_CODE "
+ "FROM SORDALLOC WHERE SALE_ORDER = ? ";
}
else if("PZ".equalsIgnoreCase(refSer))
{
sql = "SELECT P.ITEM_CODE,P.LINE_NO,P.QUANTITY,S.ALLOC_QTY,S.UNIT,P.LOT_NO,P.LOT_SL,S.MFG_DATE,S.EXP_DATE,"
+ " P.LOC_CODE,P.SITE_CODE,P.PALLET_NO FROM PALLET_DET P,STOCK S WHERE TRAN_ID = ? "
+ " AND P.ITEM_CODE = S.ITEM_CODE AND P.SITE_CODE = S.SITE_CODE"
+ " AND P.LOC_CODE = S.LOC_CODE AND P.LOT_NO = S.LOT_NO AND P.LOT_SL = S.LOT_SL";
}
else if("PR".equalsIgnoreCase(refSer))
{
sql = "SELECT S.ITEM_CODE,S.QUANTITY,S.LOT_NO,S.LOT_SL,P.LOC_CODE,P.PALLET_NO,"+
" S.SITE_CODE FROM STOCK S,PALLET_REQ_DET P WHERE S.LOC_CODE = P.PALLET_NO AND S.INV_STAT = 'AWMS'" +
" AND P.TRAN_ID = ?";
}
insertSql = "INSERT INTO STOCK_TRANSFER(TRAN_ID,TRAN_DATE,SITE_CODE,REF_SER__FOR,REF_ID__FOR,"+
"REAS_CODE,ITEM_SER,CONFIRMED,"+
"EMP_CODE__APRV,CHG_DATE,CHG_TERM,CHG_USER) "+
"VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
pstmtHdr = conn.prepareStatement(insertSql);
tranID = generateTranTd("w_stock_transfer", currDateStr, loginSiteCode, conn);
pstmtHdr.setString( 1, tranID );
pstmtHdr.setTimestamp( 2, currDate );
pstmtHdr.setString( 3, loginSiteCode );
pstmtHdr.setString( 4, "XFRX");
pstmtHdr.setString( 5, refId );
pstmtHdr.setString( 6, "" );
pstmtHdr.setString( 7, "" );
pstmtHdr.setString( 8, "N" );
pstmtHdr.setString( 9, "" );
pstmtHdr.setTimestamp( 10, currDate );
pstmtHdr.setString( 11, chgTerm );
pstmtHdr.setString( 12, userId );
updCnt = pstmtHdr.executeUpdate();
pstmtHdr.close();
pstmtHdr = null;
insertSql = "INSERT INTO STOCK_TRANSFER_DET(TRAN_ID, LINE_NO, ITEM_CODE, QUANTITY, LOC_CODE__FR,"
+ " LOC_CODE__TO, LOT_NO__FR, LOT_NO__TO, LOT_SL__FR, LOT_SL__TO, ACCT_CODE__CR, ACCT_CODE__DR,"
+ " CCTR_CODE__DR, CCTR_CODE__CR, NO_ART) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
pstmtDet = conn.prepareStatement(insertSql);
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
while(rs.next())
{
itemCode = checkNullAndTrim(rs.getString("ITEM_CODE"));
quantity = rs.getDouble("QUANTITY");
lotNo = checkNullAndTrim(rs.getString("LOT_NO"));
lotSl = checkNullAndTrim(rs.getString("LOT_SL"));
siteCode = checkNullAndTrim(rs.getString("SITE_CODE"));
if("PZ".equalsIgnoreCase(refSer))
{
//locCodeFrom = checkNullAndTrim(rs.getString("LOC_CODE"));
//locCodeTo = checkNullAndTrim(rs.getString("PALLET_NO"));
locCodeFrom = checkNullAndTrim(rs.getString("PALLET_NO"));
locCodeTo = checkNullAndTrim(rs.getString("LOC_CODE"));
}
else if("PR".equalsIgnoreCase(refSer))
{
locCodeFrom = checkNullAndTrim(rs.getString("PALLET_NO"));
locCodeTo = checkNullAndTrim(rs.getString("LOC_CODE"));
}
else
{
locCodeFrom = checkNullAndTrim(rs.getString("LOC_CODE"));
locCodeTo = distComm.getDisparams("999999",refSer,conn);
}
System.out.println("Loc code to recieved="+locCodeTo);
lineNo++;
pstmtDet.setString( 1, tranID );
pstmtDet.setInt( 2, lineNo );
pstmtDet.setString( 3, itemCode );
pstmtDet.setDouble( 4, quantity );
pstmtDet.setString( 5, locCodeFrom );
pstmtDet.setString( 6, locCodeTo );
pstmtDet.setString( 7, lotNo );
pstmtDet.setString( 8, lotNo );
pstmtDet.setString( 9, lotSl );
pstmtDet.setString( 10, lotSl );
pstmtDet.setString( 11, acctCodeInv );
pstmtDet.setString( 12, acctCodeInv );
pstmtDet.setString( 13, cctrCodeInv );
pstmtDet.setString( 14, cctrCodeInv );
pstmtDet.setString( 15, noArt );
//pstmtDet.addBatch();
//pstmtDet.clearParameters();
updCnt = pstmtDet.executeUpdate();
System.out.println("UPdate in stock transfer det="+updCnt);
pstmtDet.clearParameters();
if("PR".equalsIgnoreCase(refSer))
{
System.out.println("Going for Allocation");
hashMap.put("tran_date", new java.sql.Date(System.currentTimeMillis()));
hashMap.put("ref_ser",refSer);
hashMap.put("ref_id", tranID);
hashMap.put("ref_line", String.valueOf(lineNo));
hashMap.put("item_code", itemCode);
hashMap.put("site_code", siteCode);
hashMap.put("loc_code",locCodeFrom);
hashMap.put("lot_no",lotNo);
hashMap.put("lot_sl",lotSl);
hashMap.put("alloc_qty", quantity);
hashMap.put("chg_win","W_STOCK_TRANSFER_MULTI");
hashMap.put("chg_user", userId);
hashMap.put("chg_term", chgTerm);
distStkUpd = getComponent("DistStkUpd");
if (distStkUpd.updAllocTrace(hashMap, conn) > 0)
{
System.out.println("distStkUpd.UpdAllocTrace(HashMap, Connection) : Sucessuful!");
}
}
}
//pstmtDet.executeBatch();
//pstmtDet.clearBatch();
pstmt.close();pstmt = null;
StockTransferConf stkConf = new StockTransferConf();
errString = stkConf.confirm(tranID, xtraParams, "", conn, false);
System.out.println("Return String from stock transfer="+errString);//CONFSUCC
if( errString != null && errString.indexOf( "CONFSUCC" ) > -1)
{
sql = "UPDATE INTERFACE2 SET SCHEDULE_STATUS = 'Y' WHERE REF_ID = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
int caseCount = pstmt.executeUpdate();
System.out.println("Updated ="+caseCount);
}
if("D-SO".equalsIgnoreCase(refSer))
{
System.out.println("Going for Distribution issue");
//errString = callDistIssue(refId,xtraParams,conn);//Using club
CreateDistIssue disIssue = new CreateDistIssue();
errString = disIssue.createDistIssue(loginSiteCode, "<Root><TranID>" + refId + "</TranID></Root>", xtraParams, conn);
}
else if("S-ORD".equalsIgnoreCase(refSer))
{
System.out.println("Going for Despatch");
errString = createDespatch(refId,conn);
}
}
catch(Exception e)
{
throw new ITMException(e);
}
finally
{
if(pstmt != null){pstmt.close();pstmt = null;}
if(pstmtHdr != null){pstmtHdr.close();pstmtHdr = null;}
if(pstmtDet != null){pstmtDet.close();pstmtDet = null;}
if(rs != null){rs.close();rs = null;}
}
return errString;
}
private String inventoryHold(HashMap interfaceMap,String siteCode,String xtraParams,Connection conn) throws SQLException, ITMException
{
PreparedStatement pstmt= null,pstmtHold = null,pstmtHolddet = null;
ResultSet rs = null;
String sql = "",loginSiteCode = "",userId = "";
int updCnt = 0,lineNo = 0,caseCount = 0;
String holdInsertSql = "",holddetInsertSql = "",invtranId = "",invLockDetsql = "",errString = "";
String refSer = "",refId = "",itemCode = "",locCode = "",lotNo = "",lotSl = "";
java.sql.Timestamp currDate = new java.sql.Timestamp( System.currentTimeMillis() );
loginSiteCode = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginSiteCode" );
userId = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "loginCode" );
chgTerm = genericUtility.getValueFromXTRA_PARAMS( xtraParams, "chgTerm" );
String lockCodeName = "AWMS_LOCK",lockCode = "";
try
{
System.out.println("Inside inventory hold");
lockCode = distComm.getDisparams("999999",lockCodeName,conn);
System.out.println("Lock code is ="+lockCode);
SimpleDateFormat sdfAppl = new SimpleDateFormat(genericUtility.getApplDateFormat());
String currDateStr = sdfAppl.format(currDate);
refSer = checkNullAndTrim((String) interfaceMap.get("REF_SER"));
refId = checkNullAndTrim((String) interfaceMap.get("REF_ID"));
//locCode = checkNullAndTrim((String) interfaceMap.get("PALLET_NO"));
holdInsertSql = "INSERT INTO INV_HOLD(TRAN_ID,TRAN_DATE,SITE_CODE,CONFIRMED,REF_ID,REF_SER,CHG_USER,CHG_DATE,CHG_TERM, LOCK_CODE,REF_NO) "
+ "VALUES(?,?,?,?,?,?,?,?,?,?,?)";
pstmtHold = conn.prepareStatement(holdInsertSql);
invtranId = generateTranTd("w_inv_hold",currDateStr, loginSiteCode, conn);
pstmtHold.setString( 1, invtranId );
pstmtHold.setTimestamp( 2, currDate);
pstmtHold.setString( 3, siteCode );
pstmtHold.setString( 4, "N" );
pstmtHold.setString( 5, refId );
pstmtHold.setString( 6, refSer );
pstmtHold.setString( 7, userId );
pstmtHold.setTimestamp( 8, currDate );
pstmtHold.setString( 9, chgTerm );
pstmtHold.setString( 10, lockCode );
pstmtHold.setString( 11, "" );
updCnt = pstmtHold.executeUpdate();
pstmtHold.clearParameters();
if("D-SO".equalsIgnoreCase(refSer))
{
sql = "SELECT ITEM_CODE,LINE_NO,QUANTITY,LOT_NO,LOT_SL,LOC_CODE,SITE_CODE__MFG AS SITE_CODE"
+ " FROM DISTORDER_ALLOC WHERE DIST_ORDER = ? ";
}
else if("S-ORD".equalsIgnoreCase(refSer))
{
sql = "SELECT ITEM_CODE,LINE_NO,QUANTITY,LOT_NO,LOT_SL,LOC_CODE,"
+ "SITE_CODE FROM SORDALLOC WHERE SALE_ORDER = ?";
}
else if("PZ".equalsIgnoreCase(refSer))
{
sql = "SELECT P.ITEM_CODE,P.LOT_NO,P.LOT_SL,"
+ " P.LOC_CODE,P.SITE_CODE,P.PALLET_NO FROM PALLET_DET P,STOCK S WHERE TRAN_ID = ? "
+ " AND P.ITEM_CODE = S.ITEM_CODE AND P.SITE_CODE = S.SITE_CODE"
+ " AND P.LOC_CODE = S.LOC_CODE AND P.LOT_NO = S.LOT_NO AND P.LOT_SL = S.LOT_SL";
}
else if("PR".equalsIgnoreCase(refSer))
{
sql = "SELECT S.ITEM_CODE,S.LOT_NO,S.LOT_SL,S.LOC_CODE,"+
" S.SITE_CODE FROM STOCK S,PALLET_REQ_DET P WHERE S.LOC_CODE = P.PALLET_NO AND S.INV_STAT = 'AWMS'" +
" AND P.TRAN_ID = ?";
}
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
while(rs.next())
{
itemCode = checkNullAndTrim(rs.getString("ITEM_CODE"));
//quantity = rs.getDouble("QUANTITY");
//allocQty = rs.getDouble("QTY_ALLOC");
//unit = checkNullAndTrim(rs.getString("UNIT"));
lotNo = checkNullAndTrim(rs.getString("LOT_NO"));
lotSl = checkNullAndTrim(rs.getString("LOT_SL"));
locCode = checkNullAndTrim(rs.getString("LOC_CODE"));
siteCode = checkNullAndTrim(rs.getString("SITE_CODE"));
lineNo++;
holddetInsertSql = "INSERT INTO INV_HOLD_DET(TRAN_ID,LINE_NO,ITEM_CODE,SITE_CODE,LOC_CODE,LOT_NO,LOT_SL,HOLD_STATUS,SCH_REL_DATE)"
+ " VALUES(?,?,?,?,?,?,?,?,?)";
pstmtHolddet = conn.prepareStatement(holddetInsertSql);
pstmtHolddet.setString( 1, invtranId );
pstmtHolddet.setInt( 2, lineNo );
pstmtHolddet.setString( 3, itemCode );
pstmtHolddet.setString( 4, siteCode );
pstmtHolddet.setString( 5, locCode );
pstmtHolddet.setString( 6, lotNo );
pstmtHolddet.setString( 7, lotSl );
pstmtHolddet.setString( 8, "H" );
pstmtHolddet.setTimestamp( 9, currDate);
pstmtHolddet.addBatch();
pstmtHolddet.clearParameters();
}
pstmtHolddet.executeBatch();
pstmtHolddet.clearBatch();
rs.close();rs = null;
pstmt.close();pstmt = null;
InvHoldConf invHoldConf = new InvHoldConf();
errString = invHoldConf.confirm( invtranId, xtraParams, "" , conn ,false);//VTCNFSUCC
System.out.println("Return String from inventory holdr="+errString);
if( errString != null && errString.indexOf( "VTCNFSUCC" ) > -1)
{
sql = "UPDATE INTERFACE2 SET SCHEDULE_STATUS = 'Y' WHERE REF_ID = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
caseCount = pstmt.executeUpdate();
System.out.println("Updated ="+caseCount);
}
}
catch(Exception e)
{
throw new ITMException(e);
}
finally
{
if(pstmtHold != null){pstmtHold.close();pstmtHold = null;}
if(pstmtHolddet != null){pstmtHolddet.close();pstmtHolddet = null;}
if(pstmt != null){pstmt.close();pstmt = null;}
if(rs != null){rs.close();rs = null;}
}
return errString;
}
private String generateTranTd(String windowName,String tranDate,String siteCode, Connection conn )throws ITMException
{
System.out.println("inside generateTranTd@@.........");
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "";
String tranId = "";
String newKeystring = "",tranSer1 = "",keyString = "",keyCol = "";
CommonConstants commonConstants = new CommonConstants();
try
{
sql = "SELECT KEY_STRING, TRAN_ID_COL, REF_SER FROM TRANSETUP WHERE TRAN_WINDOW = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, windowName);
rs = pstmt.executeQuery();
System.out.println("keyString :"+sql);
if (rs.next())
{
keyString = rs.getString(1);
keyCol = rs.getString(2);
tranSer1 = rs.getString(3);
}
else
{
sql = "SELECT KEY_STRING, TRAN_ID_COL, REF_SER FROM TRANSETUP WHERE TRAN_WINDOW = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "GENERAL");
rs = pstmt.executeQuery();
System.out.println("keyString :"+sql);
if (rs.next())
{
keyString = rs.getString(1);
keyCol = rs.getString(2);
tranSer1 = rs.getString(3);
}
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
System.out.println("keyString :"+keyString);
System.out.println("keyCol :"+keyCol);
System.out.println("tranSer1 :"+tranSer1);
String xmlValues = "";
xmlValues ="<?xml version=\"1.0\" encoding=\"utf-8\"?><Root>";
xmlValues = xmlValues + "<Header></Header>";
xmlValues = xmlValues + "<Detail1>";
xmlValues = xmlValues + "<tran_id></tran_id>";
xmlValues = xmlValues + "<site_code>" + siteCode + "</site_code>";
xmlValues = xmlValues + "<tran_date>"+ tranDate + "</tran_date>";
xmlValues = xmlValues + "<tran_type>"+"U"+"</tran_type>";
xmlValues = xmlValues + "</Detail1></Root>";
System.out.println("xmlValues :["+xmlValues+"]");
TransIDGenerator tg = new TransIDGenerator(xmlValues, "BASE", commonConstants.DB_NAME);
tranId = tg.generateTranSeqID(tranSer1, keyCol, keyString, conn);
System.out.println("tranId ::"+tranId);
}
catch (SQLException ex)
{
System.out.println("Exception ::" +sql+ ex.getMessage() + ":");
ex.printStackTrace();
throw new ITMException(ex);
}
catch (Exception e)
{
System.out.println("Exception ::" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
return tranId;
}
private boolean checkCountPalletReq(String refId,Connection conn) throws ITMException, Exception
{
boolean result = false;
int countWms = 0;
int countAWms = 0;
PreparedStatement pstmt=null;
ResultSet rs = null;
String sql = "",scheduleStatus = "";
try
{
sql = "SELECT SCHEDULE_STATUS FROM INTERFACE2 WHERE REF_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
if(rs.next())
{
scheduleStatus = checkNullAndTrim(rs.getString("SCHEDULE_STATUS"));
}
rs.close();rs = null;
pstmt.close();pstmt = null;
if("N".equalsIgnoreCase(scheduleStatus))
{
sql = "SELECT COUNT(*) AS COUNT FROM INTERFACE2 WHERE REF_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
if(rs.next())
{
countWms = rs.getInt("COUNT");
}
rs.close();rs = null;
pstmt.close();pstmt = null;
sql = "SELECT COUNT(*) AS COUNT FROM INTERFACE WHERE REF_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
if(rs.next())
{
countAWms = rs.getInt("COUNT");
}
rs.close();rs = null;
pstmt.close();pstmt = null;
System.out.println("Count WMS is="+countWms);
System.out.println("Count AWMS is="+countAWms);
if(countWms == countAWms)
{
return true;
}
}
}
catch(Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
finally
{
if(pstmt != null){pstmt.close();pstmt = null;}
if(rs != null){rs.close();rs = null;}
}
return result;
}
/*private String callDistIssue(String tranID,String xtraParams,Connection conn) throws ITMException, Exception
{
String retStr = "";
PreparedStatement pstmt = null;
ResultSet rs = null;
PreparedStatement pstmt1 = null;
ResultSet rs1 = null;
CreateDistIssue createDistIss = new CreateDistIssue();;
String excpMsg = null;
String sql = "";
String retString = null;
String errCode = "";
String errMsgStr = null;
String distOrdFrom = null;
String distOrdTo = null;
String fromDateStr = null;
String toDateStr = null;
Timestamp fromDate = null;
Timestamp toDate = null;
String resultStr = null;
ArrayList distOrderList = new ArrayList();
StringBuffer comXmlString = new StringBuffer("<Root>");
String clubRequired="";
String club="";
String dOrder="";
boolean isStockExist=false;
String siteCode="";
String siteCodeDlv="";
String orderType="";
String locType="";
HashMap<String, ArrayList<DistOrderClubBean>> hm = new HashMap<String,ArrayList<DistOrderClubBean>>();
String udfStr1="";
int cntIssue=0;
String rateClg = "",rateFmDistOrd="";
String tranType = "";
try
{
sql=" SELECT D.DIST_ORDER,D.LINE_NO AS LINE_NO,D.TRAN_ID__DEMAND,D.ITEM_CODE AS ITEM_CODE,D.QTY_ORDER AS QTY_ORDER,D.QTY_CONFIRM AS QTY_CONFIRM,"
+" D.QTY_RECEIVED AS QTY_RECEIVED,D.QTY_SHIPPED AS QTY_SHIPPED,D.DUE_DATE AS DUE_DATE,D.TAX_CLASS AS TAX_CLASS,D.TAX_CHAP AS TAX_CHAP,D.TAX_ENV AS TAX_ENV,D.UNIT AS UNIT,ITEM.DESCR AS ITEM_DESCR,"
+" D.SALE_ORDER AS SALE_ORDER,D.LINE_NO__SORD AS LINE_NO__SORD,D.RATE AS RATE,D.QTY_RETURN AS QTY_RETURN,D.RATE__CLG AS RATE__CLG,D.DISCOUNT AS DISCOUNT,D.REMARKS AS REMARKS,D.TOT_AMT AS TOT_AMT,D.TAX_AMT AS TAX_AMT,"
+" D.NET_AMT AS NET_AMT,D.OVER_SHIP_PERC AS OVER_SHIP_PERC,SPACE(300) AS QTY_DETAILS,D.UNIT__ALT AS UNIT__ALT,D.CONV__QTY__ALT AS CONV__QTY__ALT,"
+" D.QTY_ORDER__ALT AS QTY_ORDER__ALT,D.SHIP_DATE AS SHIP_DATE,D.PACK_INSTR AS PACK_INSTR ,"
+" ( CASE WHEN ITEM.DEPT_CODE__ISS IS NULL then ' ' else ITEM.DEPT_CODE__ISS END ) AS DEPT_CODE, "
+" H.AVALIABLE_YN AS AVALIABLE_YN, H.TRAN_TYPE AS TRAN_TYPE,ITEM.LOC_TYPE LOC_TYPE,H.SITE_CODE SITE_CODE,H.SITE_CODE__DLV,H.ORDER_TYPE "
+" FROM DISTORDER_DET D,ITEM ITEM, DISTORDER H "
+" WHERE D.DIST_ORDER = H.DIST_ORDER "
+" AND D.ITEM_CODE = ITEM.ITEM_CODE "
+" AND H.DIST_ORDER = ? "
+" AND CASE WHEN D.STATUS IS NULL THEN 'O' ELSE D.STATUS END <> 'C' "
+" ORDER BY item.dept_code__iss ASC,"
+" D.LINE_NO ASC ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, tranID);
rs = pstmt.executeQuery();
while( rs.next() )
{
dOrder=rs.getString("DIST_ORDER");
distOrderList.add(dOrder);
siteCode = rs.getString("SITE_CODE");
siteCodeDlv = rs.getString("SITE_CODE__DLV");
orderType = rs.getString("ORDER_TYPE");
locType = rs.getString("LOC_TYPE");
tranType = rs.getString("TRAN_TYPE");
rateClg = Double.toString(rs.getDouble( "RATE__CLG" ));
rateFmDistOrd = Double.toString(rs.getDouble( "RATE" ));
if (siteCode == null ) siteCode ="";
if (siteCodeDlv == null ) siteCodeDlv ="";
if (locType == null ) locType ="";
if (orderType == null ) orderType ="";
if(tranType == null) tranType="";
pstmt1=conn.prepareStatement("select udf_str1 from gencodes where fld_name='LOC_TYPE' AND fld_value=?");
pstmt1.setString(1, locType);
rs1=pstmt1.executeQuery();
if(rs1.next())
{
udfStr1=rs1.getString(1);
if (udfStr1 == null )
udfStr1 ="";
}
rs1.close();
rs1=null;
pstmt1.close();
pstmt1=null;
if((siteCode.length()>0) && (siteCodeDlv.length()>0 ) && (orderType.length() >0) && tranType.length() > 0)
{
club = siteCode.trim()+","+siteCodeDlv.trim()+","+orderType.trim()+","+udfStr1.trim()+","+tranType.trim();
}
else
{
club = siteCode+","+siteCodeDlv+","+orderType+","+udfStr1+","+tranType.trim();
}
DistOrderClubBean db = new DistOrderClubBean();
db.setSiteCode(siteCode);
db.setTranType(rs.getString("TRAN_TYPE"));
db.setAvailableYn(rs.getString("AVALIABLE_YN"));
db.setDeptCode(rs.getString("DEPT_CODE"));
db.setLineNo(rs.getInt("LINE_NO"));
db.setUnit(rs.getString("UNIT"));
db.setUnitAlt(rs.getString("UNIT__ALT"));
db.setItemCode(rs.getString("ITEM_CODE"));
db.setQtyConfirm(rs.getDouble("QTY_CONFIRM"));
db.setQtyShipped(rs.getDouble("QTY_SHIPPED"));
db.setDiscount(rs.getDouble("DISCOUNT"));
db.setDistOrdNo(dOrder);
//db.setRateFmDistOrd(rateFmDistOrd);
//db.setRateClgFmDistOrd(rateClg);
ArrayList<DistOrderClubBean> inputList =new ArrayList<DistOrderClubBean>();
inputList.add(db);
System.out.println("The content of arraylist is: " + inputList);
ArrayList<DistOrderClubBean> clubList =new ArrayList<DistOrderClubBean>();
if (hm.containsKey(club))
{
clubList= hm.get(club);
clubList.add(db);
hm.put(club,clubList);
}
else
{
hm.put(club,inputList);
}
System.out.println("The size of hm is:"+hm.size());
System.out.println("printing hm:"+hm);
} // end of while
for(int i=0;i<distOrderList.size();i++)
{
dOrder=(String) distOrderList.get(i);
if(!isStockExist( dOrder, conn ) )
{
isStockExist=false;
break;
}
else
{
isStockExist=true;
}
} // end of for
System.out.println("is stock exist::"+isStockExist);
if(isStockExist==true)
{
Set<Map.Entry<String, ArrayList<DistOrderClubBean>>> set = hm.entrySet();
for (Map.Entry<String, ArrayList<DistOrderClubBean>> me : set)
{
ArrayList<DistOrderClubBean> distOrdBean = me.getValue();
resultStr = createDistIss.createDistIssue( "",distOrdBean,xtraParams, conn,rateClg,rateFmDistOrd );
//resultStr = createDistIss.createDistIssue( "",distOrdBean,xtraParams, conn );
System.out.println("createDistIssue resultStr---"+resultStr);
if( resultStr != null && !( resultStr.toLowerCase().indexOf( "success" ) > -1 ) )
{
if(resultStr.contains("NODETAILEXIST"))
{
failMsg.append( resultStr.substring(14, resultStr.length()) + " Detail Records couldn't Inserted!\n" );
}
}
if( resultStr != null && ( resultStr.toLowerCase().indexOf( "success" ) > -1 ) )
{
resultStr = itmDBAccessEJB.getErrorString("","VTDESPCONF","BASE");
cntIssue++;
}
}
}
else
{
retString = itmDBAccessEJB.getErrorString("","VTNOSTK","BASE");//Stock not found error
}
}
catch(Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
finally
{
if(pstmt != null){pstmt.close();pstmt = null;}
if(rs != null){rs.close();rs = null;}
}
return retString;
}
private boolean isStockExist( String distOrder, Connection conn ) throws Exception
{
String locCodeDamaged = null;
String res = "";
String sql = null;
int count = 0;
PreparedStatement pstmt = null;
ResultSet rs = null;
String distOrderIss = null;
String tranIdIss = null;
String confirmed = null;
double qtyOrder = 0.0;
double quantity = 0.0;
String availableYN = null;
int countOrdItem=0;
String subSQL="";
String locGroupJwiss="";
// 28/05/09 manoharan avialable_yn added
sql = "SELECT LOC_CODE__DAMAGED, AVALIABLE_YN "
+ " FROM DISTORDER WHERE DIST_ORDER = '"+distOrder+"' ";
pstmt= conn.prepareStatement( sql );
rs = pstmt.executeQuery();
if ( rs.next() )
{
locCodeDamaged = rs.getString( "LOC_CODE__DAMAGED" );
//System.out.println("locCodeDamaged :"+locCodeDamaged);
if( locCodeDamaged == null )
{
locCodeDamaged = "";
}
// 28/05/09 manoharan available_yn added
availableYN = rs.getString( "AVALIABLE_YN" );
if( availableYN == null )
{
availableYN = "Y";
}
// end 28/05/09 manoharan available_yn added
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if ( locCodeDamaged != null && locCodeDamaged.trim().length() > 0 )
{
StringTokenizer st = new StringTokenizer( locCodeDamaged, "," );
while ( st.hasMoreTokens() )
{
res = res + "'" + st.nextToken() + "',";
}
res = res.substring( 0, res.length() - 1 );
//System.out.println("res ::" + res);
locCodeDamaged = res;
//System.out.println("locCodeDamaged After String Tockenized ::"+locCodeDamaged);
}
sql = "SELECT count( 1 ) cnt"
+" FROM STOCK A, INVSTAT B, LOCATION C "
+" WHERE C.INV_STAT = B.INV_STAT "
+" AND A.LOC_CODE = C.LOC_CODE "
+" AND ( A.ITEM_CODE, A.SITE_CODE ) in ( SELECT D.item_code, H.SITE_CODE__SHIP "
+" FROM DISTORDER H, DISTORDER_DET D "
+" WHERE h.dist_order = d.dist_order "
+" and D.DIST_ORDER = '" + distOrder + "' ) "
+" AND B.AVAILABLE = ? "
+" AND B.USABLE = ? "
+" AND B.STAT_TYPE <> 'S' "
+" AND A.QUANTITY - A.ALLOC_QTY > 0 "
+" AND NOT EXISTS (SELECT 1 FROM INV_RESTR I WHERE I.INV_STAT = B.INV_STAT AND I.REF_SER = 'D-ISS') ";
if( locCodeDamaged != null && locCodeDamaged.trim().length() > 0 )
{
sql = sql + " AND A.LOC_CODE IN (" + locCodeDamaged + ")";
}
sql="SELECT CASE WHEN LOC_GROUP__JWISS IS NULL THEN ' ' ELSE LOC_GROUP__JWISS END AS LOC_GROUP FROM DISTORDER WHERE DIST_ORDER = ? ";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, distOrder);
rs=pstmt.executeQuery();
if(rs.next())
{
locGroupJwiss=rs.getString( "LOC_GROUP" );
}
rs.close();
rs=null;
pstmt.close();
pstmt=null;
System.out.println("(locGroupJwiss.trim()).length()----"+(locGroupJwiss.trim()).length());
if((locGroupJwiss.trim()).length()>0)
{
subSQL=" AND C.LOC_GROUP ='"+locGroupJwiss+"' ";
}
else
{
subSQL="";
}
//SQL changed by manoj dtd 11/07/2013 to check stock for location froup
sql="SELECT COUNT(1) as cnt FROM DISTORDER H, DISTORDER_DET D WHERE h.dist_order = d.dist_order " +
" and D.DIST_ORDER = '" + distOrder + "' AND " +
" (D.item_code, H.SITE_CODE__SHIP) IN " +
" (SELECT A.ITEM_CODE,A.SITE_CODE FROM STOCK A, INVSTAT B, LOCATION C " +
" WHERE C.INV_STAT = B.INV_STAT AND A.LOC_CODE = C.LOC_CODE " +
" AND B.AVAILABLE = ? "+
" AND B.USABLE = ? " +
" AND B.STAT_TYPE <> 'S' " +
subSQL+
" AND A.QUANTITY - A.ALLOC_QTY > 0 " +
" AND CASE WHEN D.STATUS IS NULL THEN 'O' ELSE D.STATUS END <>'C' "+//Added by manoj dtd 24/12/2013 to exclude closed lines
" AND NOT EXISTS " +
" (SELECT 1 FROM INV_RESTR I WHERE I.INV_STAT = B.INV_STAT AND I.REF_SER = 'D-ISS')" ;
if( locCodeDamaged != null && locCodeDamaged.trim().length() > 0 )
{
sql = sql + " AND A.LOC_CODE IN (" + locCodeDamaged + ")";
}
sql=sql+" )";
pstmt= conn.prepareStatement( sql );
// 28/05/09 manoharan available_yn dynamic bind
pstmt.setString(1,availableYN);
pstmt.setString(2,availableYN);
rs = pstmt.executeQuery();
if ( rs.next() )
{
count = rs.getInt( "cnt" );
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if( count == 0 )
{
if(errMap!=null && errMap.size()>0)
{
if(errMap.containsKey(errCode1))
{
errMap.put(errCode1,errMap.get(errCode1)+","+distOrder);
}
else
{
errMap.put(errCode1, distOrder);
}
}
else
{
errMap.put(errCode1, distOrder);
}
failMsg.append( distOrder + " Stock does not exist!\n" );
}
pstmt=conn.prepareStatement("select count(1) from distorder_det where dist_order=? and status<>'C'");
pstmt.setString(1,distOrder);
rs=pstmt.executeQuery();
if(rs.next())
{
countOrdItem=rs.getInt(1);
}
rs.close();
rs=null;
pstmt.close();
pstmt=null;
Commented by manoj dtd 03/10/2013 to required to show dist order no. for which stock does not exist for few items
if(count>0)
{
if(count<countOrdItem)
{
if(errMap!=null && errMap.size()>0)
{
if(errMap.containsKey(errCode2))
{
errMap.put(errCode2,errMap.get(errCode2)+","+distOrder);
}
else
{
errMap.put(errCode2, distOrder);
}
}
else
{
errMap.put(errCode2, distOrder);
}
failMsg.append( distOrder + " Stock does not exist for all items!\n" );
}
}
int distIssCount = 0;
sql changed as it was not allowing partial processing msalam on 230609
sql = " select h.dist_order, h.tran_id, h.confirmed, DH.QTY_ORDER, D.QUANTITY "
+" from DISTORD_ISS H, distord_Issdet D, DISTORDER_DET DH "
+" where H.dist_order = '" + distOrder + "' "
+" AND H.TRAN_ID = D.TRAN_ID "
+" AND D.DIST_ORDER = DH.DIST_ORDER "
+" AND D.LINE_NO_DIST_ORDER = DH.LINE_NO ";
// 21/04/10 manoharan 1st check unconfirmed issues
sql = " select count(1) as cnt "
+" from DISTORD_ISS "
+" where dist_order = ? "
+ " and (case when confirmed is null then 'N' else confirmed end) = 'N' ";
pstmt= conn.prepareStatement( sql );
pstmt.setString( 1, distOrder );
rs = pstmt.executeQuery();
if ( rs.next() )
{
distIssCount = rs.getInt( "cnt" );
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
sql = null;
boolean issToBeGenerated = true;
if (distIssCount > 0 )
{
issToBeGenerated = false;
if( errMap!=null && errMap.size()>0)
{
if(errMap.containsKey(errCode3))
{
errMap.put(errCode3,errMap.get(errCode3)+","+distOrder);
}
else
{
errMap.put(errCode3, distOrder);
}
}
else
{
errMap.put(errCode3, distOrder);
}
failMsg.append( distOrder + " Unconfirmed Issue Exists!\n" );
}
else
{
21/04/10 manoharan wrong logic for pending order checking
sql = " select h.confirmed, D.QTY_ORDER AS QTY_ORDER, D.QUANTITY AS QUANTITY"
+" from DISTORD_ISS H, "
+" ( select sum( DH.QTY_ORDER ) QTY_ORDER, sum( D.QUANTITY ) QUANTITY "
+" from DISTORD_ISS H, distord_Issdet D, DISTORDER_DET DH "
+" where H.dist_order = ? "
+" AND H.TRAN_ID = D.TRAN_ID "
+" AND D.DIST_ORDER = DH.DIST_ORDER "
+" AND D.LINE_NO_DIST_ORDER = DH.LINE_NO "
+" ) d "
+" where H.dist_order = ? ";
//+" AND H.TRAN_ID = D.TRAN_ID ";
sql = " select sum(ord_qty) ord_qty, sum(iss_qty) iss_qty from ( "
+ " select d.line_no, d.qty_order ord_qty, "
+ " (select sum(id.quantity) from distord_issdet id where id.dist_order = d.dist_order "
+ " and id.line_no_dist_order = d.line_no ) iss_qty "
+ " from distorder_det d "
+ " where d.dist_order = ?"
+ " and CASE WHEN D.STATUS IS NULL THEN 'O' ELSE D.STATUS END<>'C' "//Added by manoj dtd 24/12/2013 to exclude closed lines
+ " ) " ;
pstmt= conn.prepareStatement( sql );
pstmt.setString( 1, distOrder );
//pstmt.setString( 2, distOrder );
rs = pstmt.executeQuery();
if ( rs.next() )
{
//confirmed = rs.getString( "confirmed" );
qtyOrder = rs.getDouble( "ord_qty" );
quantity = rs.getDouble( "iss_qty" );
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
sql = null;
if( qtyOrder - quantity <= 0 )
{
issToBeGenerated = false;
if(errMap!=null && errMap.size()>0)
{
if(errMap.containsKey(errCode4))
{
errMap.put(errCode4,errMap.get(errCode4)+","+distOrder);
}
else
{
errMap.put(errCode4, distOrder);
}
}
else
{
errMap.put(errCode4, distOrder);
}
failMsg.append( distOrder + " All Quantity Issued.!\n" );
}
}
// end 21/04/10 manoharan 1st check unconfirmed issues
//check for unconfirmed dist order not to be processed
int unConf = 0;
sql = "SELECT count( 1 ) cnt "
+" FROM DISTORDER "
+" WHERE DIST_ORDER = '" + distOrder + "' "
+" AND ( CONFIRMED = 'N' OR STATUS = 'C' ) ";
pstmt= conn.prepareStatement( sql );
rs = pstmt.executeQuery();
if ( rs.next() )
{
unConf = rs.getInt( "cnt" );
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
sql = null;
if( unConf > 0 )
{
if( errMap!=null && errMap.size()>0)
{
System.out.println("1--errMap.get(errCode5)-----"+errMap.get(errCode5));
if(errMap.containsKey(errCode5))
{
errMap.put(errCode5,errMap.get(errCode5)+","+distOrder);
}
else
{
errMap.put(errCode5, distOrder);
}
}
else
{
System.out.println("2--errMap.get(errCode5)-----"+errMap.get(errCode5));
errMap.put(errCode5, distOrder);
}
failMsg.append( distOrder + " Unconfirmed Dist order or closed!\n" );
}
// end
System.out.println("inside isstock count:"+count+"issToBeGenerated:"+issToBeGenerated+"unConf:"+unConf);
return count > 0 && issToBeGenerated && unConf == 0;
}*/
private String createDespatch(String refId,Connection conn) throws ITMException, Exception
{
String resultStr = "",sql = "",despId = "",despDetSql = "",sordItemSql = "",sordSql = "",sordDetSql = "",stockSql = "",itemSql = "",
sqlHdr = "";
String despLineNo = "",lineNoSord = "",expLev = "",itemCodeOrd = "",itemCode = "",lotNo= "",lotSl = "",
mbaseUnit = "", unit = "",unitStd = "",locCode = "",siteCode = "",partNo = "",siteCodeMfg = "",
custItemRef = "",rateClg = "",packInstr = "",siteCodeSord = "",rateStduom = "",packCode = "",lineType = "I",palletNo = "";
PreparedStatement pstmt=null,despDetPstmt = null,pstmtSordItem = null,pstmtSord = null,pstmtSordDet = null,pstmtStock = null,
pstmtItem = null,pstmtHdr = null;
ResultSet rs = null,rsSordDet = null,rsSordItem = null,rsItem = null,rsStock = null;
double quantityOrd = 0,quantity = 0,convertQty,convQtyStduom = 0,rate = 0,shipperSize = 0,grossWeight = 0,netWeight = 0,
tareWeight = 0,rateStd = 0,conRtuStduom = 0,grossWtPerArt = 0,tareWtPerArt = 0,palletWt = 0,stkRate = 0,
convFact = 1, totalGrossWeight = 0,totalTareWeight = 0,totalNetWeight = 0;
int lineNo = 0,totalNoArt = 0,noArt = 0;
Timestamp mfgDate = null,expDate = null,retestDate = null;
try
{
System.out.println("Inside createDespatch");
sql = "SELECT DESP_ID FROM DESPATCH WHERE SORD_NO = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
if(rs.next())
{
despId = checkNullAndTrim(rs.getString("DESP_ID"));
}
rs.close();rs = null;
pstmt.close();pstmt = null;
itemSql = "SELECT I.UNIT AS UNIT_STD, I.MFR_PART_NO, ILP.SHIPPER_SIZE,I.GROSS_WEIGHT,I.NET_WEIGHT FROM ITEM I , ITEM_LOT_PACKSIZE ILP "
+ " WHERE I.ITEM_CODE = ? AND I.ITEM_CODE = ILP.ITEM_CODE ";
pstmtItem = conn.prepareStatement(itemSql);
sordItemSql = "SELECT ITEM_CODE__ORD, (CASE WHEN QUANTITY IS NULL THEN 0 ELSE QUANTITY END - CASE WHEN QTY_DESP IS NULL "
+ "THEN 0 ELSE QTY_DESP END ) AS QUANTITY__ORD FROM SORDITEM WHERE SALE_ORDER = ? AND LINE_NO = ? AND LINE_TYPE = 'I' ";
pstmtSordItem = conn.prepareStatement(sordItemSql);
sordSql = "SELECT PRICE_LIST FROM SORDER WHERE SALE_ORDER = ? ";
pstmtSord = conn.prepareStatement(sordSql);
sordDetSql = "SELECT PACK_INSTR, SITE_CODE, CUST_ITEM__REF, RATE, RATE__STDUOM, RATE__CLG, UNIT, CONV__QTY_STDUOM,UNIT__STD, "
+ "RATE__STD, CONV__RTUOM_STDUOM FROM SORDDET WHERE SALE_ORDER = ? AND LINE_NO = ? ";
pstmtSordDet = conn.prepareStatement(sordDetSql);
stockSql = "SELECT (CASE WHEN GROSS_WT_PER_ART IS NULL THEN 0 ELSE GROSS_WT_PER_ART END) AS GROSS_WT_PER_ART,"
+ " (CASE WHEN TARE_WT_PER_ART IS NULL THEN 0 ELSE TARE_WT_PER_ART END) AS TARE_WT_PER_ART,"
+ " (CASE WHEN PALLET_WT IS NULL THEN 0 ELSE PALLET_WT END) AS PALLET_WT, "
+ " MFG_DATE, EXP_DATE, SITE_CODE__MFG, PACK_CODE, RETEST_DATE, RATE FROM STOCK "
+ " WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ? ";
pstmtStock = conn.prepareStatement(stockSql);
despDetSql = "INSERT INTO DESPATCHDET (DESP_ID, LINE_NO, SORD_NO, LINE_NO__SORD, EXP_LEV, " +
"ITEM_CODE__ORD, ITEM_CODE, LOT_NO, LOT_SL, QUANTITY__ORD, QUANTITY, LOC_CODE, " +
"STATUS, CONV__QTY_STDUOM, UNIT__STD, UNIT, QUANTITY__STDUOM, QUANTITY_REAL, " +
"RATE__STDUOM, PACK_INSTR, NO_ART, SITE_CODE, PACK_QTY, GROSS_WEIGHT, TARE_WEIGHT, " +
"NETT_WEIGHT, MFG_DATE, EXP_DATE, SITE_CODE__MFG, RATE__CLG, COST_RATE, LINE_TYPE, " +
"CONV__RTUOM_STDUOM, PACK_CODE, CUST_ITEM__REF, RETEST_DATE, PART_NO,PALLET_NO,RATE__STD ) " +
"VALUES (?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?,?, ?,?,?,?,?,?,?,?,?) ";
despDetPstmt = conn.prepareStatement(despDetSql);
sql = "SELECT LINE_NO,EXP_LEV,ITEM_CODE__ORD,ITEM_CODE,LOT_NO,LOT_SL,UNIT,QUANTITY,LOC_CODE,"
+ " MFG_DATE,EXP_DATE,SITE_CODE,SITE_CODE__MFG FROM SORDALLOC WHERE SALE_ORDER = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, refId);
rs = pstmt.executeQuery();
while(rs.next())
{
lineNoSord = rs.getString("LINE_NO");
expLev = checkNullAndTrim(rs.getString("EXP_LEV"));
itemCodeOrd = checkNullAndTrim(rs.getString("ITEM_CODE__ORD"));
itemCode = checkNullAndTrim(rs.getString("ITEM_CODE"));
lotNo = checkNullAndTrim(rs.getString("LOT_NO"));
lotSl = checkNullAndTrim(rs.getString("LOT_SL"));
unit = checkNullAndTrim(rs.getString("UNIT"));
quantity = rs.getDouble("QUANTITY");
locCode = checkNullAndTrim(rs.getString("LOC_CODE"));
mfgDate = rs.getTimestamp("MFG_DATE");
expDate = rs.getTimestamp("EXP_DATE");
siteCode = checkNullAndTrim(rs.getString("SITE_CODE"));
siteCodeMfg = checkNullAndTrim(rs.getString("SITE_CODE__MFG"));
despDetPstmt.setString(1, despId);
lineNo++;
despLineNo = " " + lineNo;
despLineNo = despLineNo.substring( despLineNo.length()-3 );
despDetPstmt.setString(2, despLineNo);
despDetPstmt.setString(3, refId);
despDetPstmt.setString(4, lineNoSord);
despDetPstmt.setString(5, expLev);
lineNoSord = " " + lineNoSord;
lineNoSord = lineNoSord.substring( lineNoSord.length()-3 );
if(itemCodeOrd != null && itemCodeOrd.length() > 0)
{
despDetPstmt.setString(6, itemCodeOrd);
}
else
{
despDetPstmt.setString(6, itemCode);
}
despDetPstmt.setString(7, itemCode);
despDetPstmt.setString(8, lotNo);
despDetPstmt.setString(9, lotSl);
pstmtSordItem.setString(1, refId);
pstmtSordItem.setString(2, lineNoSord);
rsSordItem = pstmtSordItem.executeQuery();
if ( rsSordItem.next() )
{
quantityOrd = rsSordItem.getDouble("QUANTITY__ORD");
}
rsSordItem.close();rsSordItem = null;
pstmtSordItem.clearParameters();
pstmtSordDet.setString(1, refId);
pstmtSordDet.setString(2, lineNoSord);
rsSordDet = pstmtSordDet.executeQuery();
if ( rsSordDet.next() )
{
packInstr = checkNull(rsSordDet.getString("PACK_INSTR"));
siteCodeSord = checkNull(rsSordDet.getString("SITE_CODE"));
custItemRef = checkNull(rsSordDet.getString("CUST_ITEM__REF"));
rateStduom = checkNull(rsSordDet.getString("RATE__STDUOM"));
rateClg = checkNull(rsSordDet.getString("RATE__CLG"));
unit = checkNull(rsSordDet.getString("UNIT"));
convQtyStduom = rsSordDet.getDouble("CONV__QTY_STDUOM");
unitStd = checkNull(rsSordDet.getString("UNIT__STD"));
rate = rsSordDet.getDouble("RATE");
rateStd = rsSordDet.getDouble("RATE__STD");
conRtuStduom = rsSordDet.getDouble("CONV__RTUOM_STDUOM");
}
rsSordDet.close();rsSordDet = null;
pstmtSordDet.clearParameters();
despDetPstmt.setDouble(10, quantityOrd);
pstmtStock.setString(1, itemCode);
pstmtStock.setString(2, siteCode);
pstmtStock.setString(3, locCode);
pstmtStock.setString(4, lotNo);
pstmtStock.setString(5, lotSl);
rsStock = pstmtStock.executeQuery();
if ( rsStock.next() )
{
grossWtPerArt = rsStock.getDouble("GROSS_WT_PER_ART");
tareWtPerArt = rsStock.getDouble("TARE_WT_PER_ART");
palletWt = rsStock.getDouble("PALLET_WT");
packCode = checkNull(rsStock.getString("PACK_CODE"));
retestDate = rsStock.getTimestamp("RETEST_DATE");
stkRate = rsStock.getDouble("RATE");
}
rsStock.close();rsStock = null;
pstmtStock.clearParameters();
pstmtItem.setString(1, itemCode);
rsItem = pstmtItem.executeQuery();
if ( rsItem.next() )
{
mbaseUnit = checkNull(rsItem.getString("UNIT_STD"));
partNo = checkNull(rsItem.getString("MFR_PART_NO"));
shipperSize = rsItem.getDouble("SHIPPER_SIZE");
grossWeight = rsItem.getDouble("GROSS_WEIGHT");
netWeight = rsItem.getDouble("NET_WEIGHT");
tareWeight = grossWeight - netWeight;
}
rsItem.close();rsItem = null;
pstmtItem.clearParameters();
noArt = (int) (quantity / shipperSize);
if(noArt == 0)
{
noArt = 1;
}
if(quantity < shipperSize)
{
grossWeight = (grossWeight * quantity);
netWeight = (netWeight * quantity);
}
else
{
grossWeight = (grossWtPerArt * noArt);
tareWeight = (tareWtPerArt * noArt);
netWeight = grossWeight - tareWeight ;
}
totalNoArt = totalNoArt + noArt;
totalGrossWeight = totalGrossWeight + grossWeight;
totalTareWeight = totalTareWeight + tareWeight ;
totalNetWeight = totalNetWeight + netWeight;
if(convQtyStduom != 0)
{
convFact = convQtyStduom;
}
ArrayList convQtyList = distComm.getConvQuantityFact(mbaseUnit, unit, itemCode, quantity, convFact,conn);
System.out.println("convQtyList = "+convQtyList);
convertQty = Double.parseDouble(convQtyList.get(1).toString());
if(convertQty == -999999999)
{
convertQty = 0;
}
despDetPstmt.setDouble(11, convertQty);
despDetPstmt.setString(12, checkNull(locCode));
despDetPstmt.setString(13," ");
despDetPstmt.setDouble(14 , convQtyStduom );
despDetPstmt.setString(15 , mbaseUnit);
despDetPstmt.setString(16 , unit);
despDetPstmt.setDouble(17 , quantity );
despDetPstmt.setDouble(18 , convertQty);
despDetPstmt.setDouble(19 , rate );
despDetPstmt.setString(20 , checkNull(packInstr) );
despDetPstmt.setDouble( 21 , noArt);
despDetPstmt.setString( 22 , checkNull(siteCode));
/*pstmtSordDet.setString(1, refId);
if(lineNoSord.length() == 2)
{
pstmtSordDet.setString(2, " "+lineNoSord);
}
else if(lineNoSord.length() == 1)
{
pstmtSordDet.setString(2, " "+lineNoSord);
}
else
{
pstmtSordDet.setString(2, lineNoSord);
}*/
despDetPstmt.setDouble( 23 , shipperSize);
despDetPstmt.setDouble( 24 , grossWeight );
despDetPstmt.setDouble( 25 , tareWeight );
despDetPstmt.setDouble( 26 , netWeight);
despDetPstmt.setTimestamp( 27 , mfgDate );
despDetPstmt.setTimestamp( 28 , expDate );
despDetPstmt.setString( 29 , checkNull(siteCodeMfg));
despDetPstmt.setString( 30 , checkNull(rateClg));
despDetPstmt.setDouble( 31 , stkRate);
despDetPstmt.setString( 32 , checkNull(lineType));
despDetPstmt.setDouble( 33 , conRtuStduom);
despDetPstmt.setString( 34 , checkNull(packCode));
despDetPstmt.setString( 35, checkNull(custItemRef));
despDetPstmt.setTimestamp( 36 ,retestDate);
despDetPstmt.setString( 37 , checkNull(partNo));
despDetPstmt.setString( 38 , checkNull(palletNo));
despDetPstmt.setDouble( 39 , rateStd);
despDetPstmt.addBatch();
despDetPstmt.clearParameters();
}
despDetPstmt.executeBatch();
despDetPstmt.clearBatch();
rs.close();rs = null;
despDetPstmt.close();despDetPstmt = null;
sqlHdr = "UPDATE DESPATCH SET GROSS_WEIGHT = ?, TARE_WEIGHT = TARE_WEIGHT + ? ,NETT_WEIGHT = ?, NO_ART = ? "
+ "WHERE DESP_ID = ? ";
pstmtHdr = conn.prepareStatement(sqlHdr);
pstmtHdr.setDouble(1, totalGrossWeight);
pstmtHdr.setDouble(2, totalTareWeight);
pstmtHdr.setDouble(3, totalNetWeight);
pstmtHdr.setInt(4, totalNoArt);
pstmtHdr.setString(5, despId);
int upctr = pstmtHdr.executeUpdate();
System.out.println("NO OF ROW UPDATED = "+upctr);
pstmtHdr.close();
pstmtHdr = null;
}
catch(Exception e)
{
throw new ITMException(e);
}
finally
{
if(despDetPstmt != null){despDetPstmt.close();despDetPstmt = null;}
if(rs != null){rs.close();rs = null;}
if(pstmtSordItem != null){pstmtSordItem.close();pstmtSordItem = null;}
if(rsSordDet != null){rsSordDet.close();rsSordDet = null;}
if(rsSordItem != null){rsSordItem.close();rsSordItem = null;}
if(pstmtSord != null){pstmtSord.close();pstmtSord = null;}
if(rsItem != null){rsItem.close();rsItem = null;}
if(pstmtSordDet != null){pstmtSordDet.close();pstmtSordDet = null;}
if(rsStock != null){rsStock.close();rsStock = null;}
if(pstmtHdr != null){pstmtHdr.close();pstmtHdr = null;}
}
return resultStr;
}
private String getError(String saleOrder,String Code,Connection conn) throws ITMException, Exception
{
String mainStr ="";
try
{
String errString = "";
errString = new ITMDBAccessEJB().getErrorString("",Code,"","",conn);
String begPart = errString.substring(0,errString.indexOf("<message>")+9);
String endDesc = errString.substring(errString.indexOf("</description>"));
mainStr= begPart+"Invalid Data"+"</message><description>";
mainStr= mainStr+"Sale Order ["+saleOrder+""+endDesc;
System.out.println("mainStr:::::::::::::::::: "+mainStr);
begPart = null;
}
catch(Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
return mainStr;
}
private DistStkUpdLocal getComponent(String componentName)throws Exception
{
DistStkUpdLocal comp = null;
try
{
System.out.println("Looking For Component.... :: " + componentName);
AppConnectParm appConnect = new AppConnectParm();
java.util.Properties p = appConnect.getProperty();
InitialContext ctx = new InitialContext(p);
comp = (DistStkUpdLocal)ctx.lookup("ibase/DistStkUpd/local"); // for ejb3
//comp = distStkUpdHome.create();
System.out.println(componentName+" Found.....");
}
catch(Exception e)
{
throw e;
}
return comp;
}
private static String checkNullAndTrim(String input)
{
if (input==null)
{
input="";
}
return input.trim();
}
private String checkNull( String input )
{
if ( input == null )
{
input = "";
}
return input;
}
}
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