Commit 1bfd633a authored by gahmad's avatar gahmad

changes made at sun


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@91563 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 4b32df34
package ibase.webitm.ejb.dis;
import java.sql.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.*;
import ibase.utility.CommonConstants;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.TransIDGenerator;
import java.util.HashMap;
import java.io.*;
import java.text.SimpleDateFormat;
public class InvAllocTraceBean
{
FileWriter f = null;
public String updateInvallocTrace(HashMap invallocTraceMap, Connection conn) throws ITMException,Exception
{
try
{
f = new FileWriter("invalloc.log", true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
writeException(e);
}
String errString = "";
String errCode = "" ;
String sql = null ;
String sqlUpdate = null ;
String keyStringQuery = null ;
CommonConstants commonConstants = new CommonConstants();
String refSer = (String)invallocTraceMap.get("ref_ser");
String refId = (String)invallocTraceMap.get("ref_id");
String refLine = (String)invallocTraceMap.get("ref_line");
String siteCode = (String)invallocTraceMap.get("site_code");
String itemCode = (String)invallocTraceMap.get("item_code");
String locCode = (String)invallocTraceMap.get("loc_code");
String lotNo = (String)invallocTraceMap.get("lot_no");
String lotSl = (String)invallocTraceMap.get("lot_sl");
double allocQty = ((Double)invallocTraceMap.get("alloc_qty")).doubleValue();
String chgUser = (String)invallocTraceMap.get("chg_user");
String chgTerm = (String)invallocTraceMap.get("chg_term");
String chgWin = (String)invallocTraceMap.get("chg_win");
if(lotNo == null)
lotNo = " ";
if(lotSl == null)
lotSl = " ";
java.sql.Date chgDate = new java.sql.Date(System.currentTimeMillis());
java.sql.Date tranDate = new java.sql.Date(System.currentTimeMillis());
PreparedStatement pstmt = null ;
ResultSet rSet = null ;
Statement stmt = null ;
String tranId = null ;
try
{
keyStringQuery = "SELECT KEY_STRING, TRAN_ID_COL, REF_SER FROM TRANSETUP WHERE UPPER(TRAN_WINDOW) = 'T_ALLOCTRACE'";
System.out.println("keyStringQuery--------->>"+keyStringQuery);
stmt = conn.createStatement();
rSet = stmt.executeQuery(keyStringQuery);
System.out.println("keyString :"+rSet.toString());
String tranSer1 = "";
String keyString = "";
String keyCol = "";
if (rSet.next())
{
keyString = rSet.getString(1);
keyCol = rSet.getString(2);
tranSer1 = rSet.getString(3);
}
rSet.close();
stmt.close();
rSet = null;
stmt = null;
f.write(keyString + " " + keyCol + " " + tranSer1+ "\r\n");
System.out.println("keyString :"+ keyString);
System.out.println("keyCol :"+ keyCol);
System.out.println("tranSer1 :"+ tranSer1);
String xmlValues = "";
String tranDateStr = getCurrdateAppFormat(); //added by rajendra on 17/04/09 for tran date
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>" + tranDateStr + "</tran_date>"; //added by rajendra on 17/04/09
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);
f.write("trace tran id ... " +tranId + "\r\n");
System.out.println("tranId :"+tranId);
sql = "INSERT INTO INVALLOC_TRACE (TRAN_ID, TRAN_DATE, REF_SER, REF_ID,"
+"REF_LINE,ITEM_CODE, SITE_CODE, LOC_CODE,LOT_NO, LOT_SL, ALLOC_QTY, CHG_WIN,"
+"CHG_USER, CHG_TERM, CHG_DATE )VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
System.out.println("trans id="+ tranId);
System.out.println("tranDate="+ tranDate);
System.out.println("refSer="+ refSer);
System.out.println("refId="+ refId);
System.out.println("refLine="+ refLine);
System.out.println("itemCode="+ itemCode);
System.out.println("siteCodeShip="+ siteCode);
System.out.println("locCode="+ locCode);
System.out.println("lotNo="+ lotNo);
System.out.println("LOT_SL="+ lotSl);
System.out.println("ALLOC_QTY="+ allocQty);
System.out.println("chgWin="+ chgWin);
System.out.println("chgUser="+ chgUser);
System.out.println("chgTerm="+ chgTerm);
System.out.println("chgDate="+ chgDate);
f.write("trans id="+ tranId+"\n");
f.write("tranDate="+ tranDate+"\n");
f.write("refSer="+ refSer+"\n");
f.write("refId="+ refId+"\n");
f.write("refLine="+ refLine+"\n");
f.write("itemCode="+ itemCode+"\n");
f.write("locCode="+ locCode+"\n");
f.write("lotNo="+ lotNo+"\n");
f.write("lotSl="+ lotSl+"\n");
f.write("ALLOC_QTY="+ allocQty+"\n");
pstmt.setString(1,tranId);
pstmt.setDate(2,tranDate);
pstmt.setString(3,refSer);
pstmt.setString(4,refId);
pstmt.setString(5,refLine);
pstmt.setString(6,itemCode );
pstmt.setString(7,siteCode);
pstmt.setString(8,locCode);
pstmt.setString(9,lotNo );
pstmt.setString(10,lotSl);
pstmt.setDouble(11,allocQty);
pstmt.setString(12,chgWin);
pstmt.setString(13,chgUser);
pstmt.setString(14,chgTerm);
pstmt.setDate(15,chgDate);
pstmt.executeUpdate();
//added by msalam on 281209 start
pstmt.close();
pstmt = null;
//added by msalam on 281209 end
System.out.println("insertion of sql inside updateInvallocTrace success on date "+ chgDate);
System.out.println("Allocate trace Updated...............................");
sqlUpdate = "UPDATE STOCK SET ALLOC_QTY =(CASE WHEN ALLOC_QTY IS NULL THEN 0 ELSE ALLOC_QTY END) + ? "
+"WHERE ITEM_CODE = '"+itemCode+"' AND SITE_CODE = '"+ siteCode+"' AND LOC_CODE ='"+locCode+"' AND LOT_NO = '"+lotNo+"' AND LOT_SL = '"+lotSl+"'";
pstmt = conn.prepareStatement(sqlUpdate);
pstmt.setDouble(1,allocQty) ;
//pstmt.setString(2,itemCode.trim()) ;
//pstmt.setString(3, siteCode.trim()) ;
///pstmt.setString(4,locCode.trim()) ;
//pstmt.setString(5,lotNo.trim()) ;
//pstmt.setString(6,lotSl.trim()) ;
// if(allocQty >= 0) // Changed by Alka 14/03/2007 allocQty had to be updated in stock for any case.
// {
System.out.println("sqlUpdate "+ sqlUpdate);
int i = pstmt.executeUpdate() ;
//added by msalam on 281209 start
pstmt.close();
pstmt = null;
//added by msalam on 281209 end
System.out.println("Records updated "+ i);
if(i>0)
{
f.write("sqlUpdate="+ sqlUpdate+"\n"+"Stock update success fully........................."+i+"\n");
}
else
{
throw new ITMException(new Exception("Unable to update stock for [" + sqlUpdate + "]"));
}
// }
System.out.println("Updated End.") ;
f.write("Updated End..........");
}
catch(SQLException e)
{
f.write("TRANSATION ROLL BACK IN updateInvallocTrace"+"\n");
try{conn.rollback();}catch(Exception ee2){}
writeException(e);
System.out.println("SQLException :updateInvallocTrace : " + sqlUpdate + "\n" +e.getMessage());
System.out.println("ALLOC_QTY : " + allocQty);
System.out.println("ITEM_CODE : " + itemCode);
System.out.println("SITE_CODE : " + siteCode);
System.out.println("LOC_CODE : " + locCode);
System.out.println("LOT_NO : " + lotNo);
System.out.println("LOT_SL : " + lotSl);
errString = e.getMessage();
e.printStackTrace();
//return errString;
throw new ITMException(e);
}
catch(Exception e)
{
writeException(e);
System.out.println("Exception :updateInvallocTrace :" + sqlUpdate + "\n" +e.getMessage());
errString = e.getMessage();
e.printStackTrace();
try
{
f.write("TRANSATION ROLL BACK IN updateInvallocTrace"+"\n");
try{conn.rollback();}catch(Exception ee2){}
}
catch(Exception e1)
{
writeException(e1);
errString = e1.getMessage();
e = e1;
}
//return errString;
throw new ITMException(e);
}
finally
{
try
{
f.close();
if(conn != null)
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(stmt != null)
{
stmt.close();
stmt = null;
}
// conn.close();
// conn = null;
}
}
catch(Exception e)
{
try{conn.rollback();f.write("TRANSATION ROLL BACK IN updateInvallocTrace"+"\n");}catch(Exception ee2){}
errString = e.getMessage();
e.printStackTrace();
writeException(e);
return errString;
}
//return errString;
}
return errString;
}
private void writeException(Exception e) throws Exception
{
try
{
f.write(e.getMessage() + "\r\n");
PrintStream t = new PrintStream(new FileOutputStream(new File("C:\\invalloc.log"),true));
e.printStackTrace(t);
}
catch(Exception t){throw t;}
}
private String getCurrdateAppFormat()
{
String s = "";
GenericUtility genericUtility = GenericUtility.getInstance();
try
{
java.util.Date date = null;
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(genericUtility.getDBDateFormat());
SimpleDateFormat simpledateformat = new SimpleDateFormat(genericUtility.getDBDateFormat());
date = simpledateformat.parse(timestamp.toString());
timestamp = Timestamp.valueOf(simpledateformat.format(date).toString() + " 00:00:00.0");
s = (new SimpleDateFormat(genericUtility.getApplDateFormat())).format(timestamp).toString();
}
catch(Exception exception)
{
System.out.println("Exception in getCurrdateAppFormat " + exception.getMessage());
}
return s;
}
package ibase.webitm.ejb.dis;
import java.sql.*;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.*;
import ibase.utility.CommonConstants;
import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.TransIDGenerator;
import java.util.HashMap;
import java.io.*;
import java.text.SimpleDateFormat;
public class InvAllocTraceBean
{
FileWriter f = null;
public String updateInvallocTrace(HashMap invallocTraceMap, Connection conn) throws ITMException,Exception
{
String fileDest = "";
try
{
//changes by gulzar on 12/12/2011 to write the log file in jboss log location
//f = new FileWriter("invalloc.log", true);
fileDest = CommonConstants.JBOSSHOME + File.separator + "server" + File.separator + "default" + File.separator + "log" + File.separator + "invalloc.log";
f = new FileWriter( fileDest, true);
}
catch(Exception e)
{
System.out.println(e.getMessage());
writeException(e, fileDest );
}
String errString = "";
String errCode = "" ;
String sql = null ;
String sqlUpdate = null ;
String keyStringQuery = null ;
CommonConstants commonConstants = new CommonConstants();
String refSer = (String)invallocTraceMap.get("ref_ser");
String refId = (String)invallocTraceMap.get("ref_id");
String refLine = (String)invallocTraceMap.get("ref_line");
String siteCode = (String)invallocTraceMap.get("site_code");
String itemCode = (String)invallocTraceMap.get("item_code");
String locCode = (String)invallocTraceMap.get("loc_code");
String lotNo = (String)invallocTraceMap.get("lot_no");
String lotSl = (String)invallocTraceMap.get("lot_sl");
double allocQty = ((Double)invallocTraceMap.get("alloc_qty")).doubleValue();
String chgUser = (String)invallocTraceMap.get("chg_user");
String chgTerm = (String)invallocTraceMap.get("chg_term");
String chgWin = (String)invallocTraceMap.get("chg_win");
if(lotNo == null)
lotNo = " ";
if(lotSl == null)
lotSl = " ";
//Changed by gulzar on 12/12/2011
if ( chgUser == null || chgUser.trim().length() == 0 )
{
chgUser = "SYSTEM";
}
if ( chgTerm == null || chgTerm.trim().length() == 0 )
{
chgTerm = "SYSTEM";
}
//End changes by gulzar on 12/12/2011
java.sql.Date chgDate = new java.sql.Date(System.currentTimeMillis());
java.sql.Date tranDate = new java.sql.Date(System.currentTimeMillis());
PreparedStatement pstmt = null ;
ResultSet rSet = null ;
Statement stmt = null ;
String tranId = null ;
try
{
keyStringQuery = "SELECT KEY_STRING, TRAN_ID_COL, REF_SER FROM TRANSETUP WHERE UPPER(TRAN_WINDOW) = 'T_ALLOCTRACE'";
System.out.println("keyStringQuery--------->>"+keyStringQuery);
stmt = conn.createStatement();
rSet = stmt.executeQuery(keyStringQuery);
System.out.println("keyString :"+rSet.toString());
String tranSer1 = "";
String keyString = "";
String keyCol = "";
if (rSet.next())
{
keyString = rSet.getString(1);
keyCol = rSet.getString(2);
tranSer1 = rSet.getString(3);
}
rSet.close();
stmt.close();
rSet = null;
stmt = null;
f.write(keyString + " " + keyCol + " " + tranSer1+ "\r\n");
System.out.println("keyString :"+ keyString);
System.out.println("keyCol :"+ keyCol);
System.out.println("tranSer1 :"+ tranSer1);
String xmlValues = "";
String tranDateStr = getCurrdateAppFormat(); //added by rajendra on 17/04/09 for tran date
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>" + tranDateStr + "</tran_date>"; //added by rajendra on 17/04/09
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);
f.write("trace tran id ... " +tranId + "\r\n");
System.out.println("tranId :"+tranId);
sql = "INSERT INTO INVALLOC_TRACE (TRAN_ID, TRAN_DATE, REF_SER, REF_ID,"
+"REF_LINE,ITEM_CODE, SITE_CODE, LOC_CODE,LOT_NO, LOT_SL, ALLOC_QTY, CHG_WIN,"
+"CHG_USER, CHG_TERM, CHG_DATE )VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(sql);
System.out.println("trans id="+ tranId);
System.out.println("tranDate="+ tranDate);
System.out.println("refSer="+ refSer);
System.out.println("refId="+ refId);
System.out.println("refLine="+ refLine);
System.out.println("itemCode="+ itemCode);
System.out.println("siteCodeShip="+ siteCode);
System.out.println("locCode="+ locCode);
System.out.println("lotNo="+ lotNo);
System.out.println("LOT_SL="+ lotSl);
System.out.println("ALLOC_QTY="+ allocQty);
System.out.println("chgWin="+ chgWin);
System.out.println("chgUser="+ chgUser);
System.out.println("chgTerm="+ chgTerm);
System.out.println("chgDate="+ chgDate);
f.write("trans id="+ tranId+"\n");
f.write("tranDate="+ tranDate+"\n");
f.write("refSer="+ refSer+"\n");
f.write("refId="+ refId+"\n");
f.write("refLine="+ refLine+"\n");
f.write("itemCode="+ itemCode+"\n");
f.write("locCode="+ locCode+"\n");
f.write("lotNo="+ lotNo+"\n");
f.write("lotSl="+ lotSl+"\n");
f.write("ALLOC_QTY="+ allocQty+"\n");
pstmt.setString(1,tranId);
pstmt.setDate(2,tranDate);
pstmt.setString(3,refSer);
pstmt.setString(4,refId);
pstmt.setString(5,refLine);
pstmt.setString(6,itemCode );
pstmt.setString(7,siteCode);
pstmt.setString(8,locCode);
pstmt.setString(9,lotNo );
pstmt.setString(10,lotSl);
pstmt.setDouble(11,allocQty);
pstmt.setString(12,chgWin);
pstmt.setString(13,chgUser);
pstmt.setString(14,chgTerm);
pstmt.setDate(15,chgDate);
pstmt.executeUpdate();
//added by msalam on 281209 start
pstmt.close();
pstmt = null;
//added by msalam on 281209 end
System.out.println("insertion of sql inside updateInvallocTrace success on date "+ chgDate);
System.out.println("Allocate trace Updated...............................");
sqlUpdate = "UPDATE STOCK SET ALLOC_QTY =(CASE WHEN ALLOC_QTY IS NULL THEN 0 ELSE ALLOC_QTY END) + ? "
+"WHERE ITEM_CODE = '"+itemCode+"' AND SITE_CODE = '"+ siteCode+"' AND LOC_CODE ='"+locCode+"' AND LOT_NO = '"+lotNo+"' AND LOT_SL = '"+lotSl+"'";
pstmt = conn.prepareStatement(sqlUpdate);
pstmt.setDouble(1,allocQty) ;
//pstmt.setString(2,itemCode.trim()) ;
//pstmt.setString(3, siteCode.trim()) ;
///pstmt.setString(4,locCode.trim()) ;
//pstmt.setString(5,lotNo.trim()) ;
//pstmt.setString(6,lotSl.trim()) ;
// if(allocQty >= 0) // Changed by Alka 14/03/2007 allocQty had to be updated in stock for any case.
// {
System.out.println("sqlUpdate "+ sqlUpdate);
int i = pstmt.executeUpdate() ;
//added by msalam on 281209 start
pstmt.close();
pstmt = null;
//added by msalam on 281209 end
System.out.println("Records updated "+ i);
if(i>0)
{
f.write("sqlUpdate="+ sqlUpdate+"\n"+"Stock update success fully........................."+i+"\n");
}
else
{
throw new ITMException(new Exception("Unable to update stock for [" + sqlUpdate + "]"));
}
// }
System.out.println("Updated End.") ;
f.write("Updated End..........");
}
catch(SQLException e)
{
f.write("TRANSATION ROLL BACK IN updateInvallocTrace"+"\n");
try{conn.rollback();}catch(Exception ee2){}
writeException(e, fileDest);
System.out.println("SQLException :updateInvallocTrace : " + sqlUpdate + "\n" +e.getMessage());
System.out.println("ALLOC_QTY : " + allocQty);
System.out.println("ITEM_CODE : " + itemCode);
System.out.println("SITE_CODE : " + siteCode);
System.out.println("LOC_CODE : " + locCode);
System.out.println("LOT_NO : " + lotNo);
System.out.println("LOT_SL : " + lotSl);
errString = e.getMessage();
e.printStackTrace();
//return errString;
throw new ITMException(e);
}
catch(Exception e)
{
writeException(e, fileDest);
System.out.println("Exception :updateInvallocTrace :" + sqlUpdate + "\n" +e.getMessage());
errString = e.getMessage();
e.printStackTrace();
try
{
f.write("TRANSATION ROLL BACK IN updateInvallocTrace"+"\n");
try{conn.rollback();}catch(Exception ee2){}
}
catch(Exception e1)
{
writeException(e, fileDest);
errString = e1.getMessage();
e = e1;
}
//return errString;
throw new ITMException(e);
}
finally
{
try
{
f.close();
if(conn != null)
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(stmt != null)
{
stmt.close();
stmt = null;
}
// conn.close();
// conn = null;
}
}
catch(Exception e)
{
try{conn.rollback();f.write("TRANSATION ROLL BACK IN updateInvallocTrace"+"\n");}catch(Exception ee2){}
errString = e.getMessage();
e.printStackTrace();
writeException(e, fileDest);
return errString;
}
//return errString;
}
return errString;
}
private void writeException(Exception e, String fileDest) throws Exception
{
try
{
f.write(e.getMessage() + "\r\n");
//PrintStream t = new PrintStream(new FileOutputStream(new File("C:\\invalloc.log"),true));
PrintStream t = new PrintStream(new FileOutputStream(new File(fileDest),true));
e.printStackTrace(t);
}
catch(Exception t){throw t;}
}
private String getCurrdateAppFormat()
{
String s = "";
GenericUtility genericUtility = GenericUtility.getInstance();
try
{
java.util.Date date = null;
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(genericUtility.getDBDateFormat());
SimpleDateFormat simpledateformat = new SimpleDateFormat(genericUtility.getDBDateFormat());
date = simpledateformat.parse(timestamp.toString());
timestamp = Timestamp.valueOf(simpledateformat.format(date).toString() + " 00:00:00.0");
s = (new SimpleDateFormat(genericUtility.getApplDateFormat())).format(timestamp).toString();
}
catch(Exception exception)
{
System.out.println("Exception in getCurrdateAppFormat " + exception.getMessage());
}
return s;
}
}
\ No newline at end of file
package ibase.webitm.ejb.dis.adv;
import java.util.*;
import java.sql.*;
import java.rmi.RemoteException;
import java.text.*;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
//import javax.ejb.SessionBean;
import ibase.system.config.ConnDriver;
import ibase.utility.CommonConstants;
import ibase.webitm.servlet.RSItemChange;
import ibase.webitm.utility.ITMException;
import ibase.webitm.utility.TransIDGenerator;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ActionHandlerEJB;
import ibase.webitm.utility.*;
import ibase.utility.*;
import ibase.webitm.ejb.*;
import ibase.system.config.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.ejb.Stateless; // added for ejb3
@Stateless // added for ejb3
public class InvHoldRelConf extends ActionHandlerEJB implements InvHoldRelConfLocal , InvHoldRelConfRemote //SessionBean
{
/* public void ejbCreate() throws RemoteException,CreateException{
}
public void ejbRemove(){
}
public void ejbActivate(){
}
public void ejbPassivate(){
}
public void setSessionContext(SessionContext se){
}*/
public String confirm(String tranId,String xtraParams, String forcedFlag) throws RemoteException,ITMException
{
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "";
ConnDriver connDriver = null;
String loginEmpCode = null;
ibase.webitm.utility.GenericUtility genericUtility = null;
Document dom = null;
int count=0;
ITMDBAccessEJB itmDBAccessEJB = null;
String errString = null;
int upd = 0;
//changed by Dharmesh on 12-08-2011 [WM1ESUN004].start
String itemCode = null;
String siteCode = null;
String locCode = null;
String lotNo = null;
String lotSl = null;
String lineNoSl = null;
String tranIdTrace = null;
String tranIdHold = null;
//String lineNoHold = null;
double holdQtyStock = 0.0;
double qtyPerArt = 0.0;
double holdQtyTrace = 0.0;
double totalHoldStock = 0.0;
double relQtyTrace = 0.0;
double holdQty = 0.0;
double stockQty = 0.0;
double totalHoldTrace = 0.0;
double totalRelTrace = 0.0;
double balQtyHold = 0.0;
double qtyToHold = 0.0;
double relQty = 0.0;
int lineNoHold = 0;
String sqlUpdate = null;
String sqlHoldDet = null;
String sqlSelStck = null;
String sqlSelTrace = null;
String sqlInsert = null;
String sqlDetail = null;
String lockCode = null;
PreparedStatement pUpdate = null;
PreparedStatement pHoldDet = null;
PreparedStatement pSelStock = null;
PreparedStatement pSelTrace = null;
PreparedStatement pInsert = null;
PreparedStatement pDetail = null;
ResultSet rsHoldDet = null;
ResultSet rsSelStck = null;
ResultSet rsSelTrace = null;
ResultSet rsDetail = null;
//changed by Dharmesh on 12-08-2011 [WM1ESUN004].end
try
{
itmDBAccessEJB = new ITMDBAccessEJB();
genericUtility = ibase.webitm.utility.GenericUtility.getInstance();
connDriver = new ConnDriver();
conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
loginEmpCode = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginEmpCode");
//check if there is record in detal
int countDet = 0;
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = " select count( 1 ) cnt from inv_hold_rel_det where tran_id = '" + tranId.trim() + "' ";
pstmt = conn.prepareStatement( sql );
rs = pstmt.executeQuery();
*/
sql = "select count( 1 ) cnt from inv_hold_rel_det where tran_id = ?" ;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,tranId);
rs = pstmt.executeQuery();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
if( rs.next() )
{
countDet = rs.getInt( "cnt" );
}
pstmt.close();
pstmt = null;
rs.close();
rs = null;
if( countDet == 0 )
{
errString = itmDBAccessEJB.getErrorString("","VTNODET","","",conn);
}
if( errString == null || errString.length() == 0 )
{
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = " select count( 1 ) cnt from inv_hold_rel where tran_id = '" + tranId.trim() + "' AND CONFIRMED = 'Y' ";
pstmt = conn.prepareStatement( sql );
rs = pstmt.executeQuery();
*/
sql = "select count( 1 ) cnt from inv_hold_rel where tran_id = ? AND CONFIRMED = 'Y'";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,tranId);
rs = pstmt.executeQuery();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
if( rs.next() )
{
countDet = rs.getInt( "cnt" );
}
pstmt.close();
pstmt = null;
rs.close();
rs = null;
if( countDet > 0 )
{
errString = itmDBAccessEJB.getErrorString("","VTCONFMD","","",conn);
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to commit unconfirmed transaction.start
else
{
sqlUpdate = "UPDATE STOCK SET HOLD_QTY = ? WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ?";
pUpdate = conn.prepareStatement(sqlUpdate);
sqlSelStck = "SELECT ITEM_CODE, SITE_CODE, LOC_CODE, LOT_NO, LOT_SL, QTY_PER_ART, HOLD_QTY FROM STOCK WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ? " ;
pSelStock = conn.prepareStatement(sqlSelStck);
sqlSelTrace = "SELECT SUM( HOLD_QTY ) AS HOLD_QTY_TRACE, SUM( REL_QTY ) AS REL_QTY_TRACE FROM INV_HOLD_REL_TRACE WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ? " ;
pSelTrace = conn.prepareStatement(sqlSelTrace);
sqlInsert = " INSERT INTO INV_HOLD_REL_TRACE ( TRAN_ID, ITEM_CODE, SITE_CODE, LOC_CODE, LOT_NO, LOT_SL, REF_NO, REL_QTY, LOCK_CODE ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? ) " ;
pInsert = conn.prepareStatement(sqlInsert);
sqlHoldDet = "SELECT ITEM_CODE, SITE_CODE, LOC_CODE, LOT_NO, LOT_SL, LINE_NO_SL FROM INV_HOLD_DET WHERE TRAN_ID = ? AND LINE_NO = ?" ;
pHoldDet = conn.prepareStatement(sqlHoldDet);
sqlDetail = " SELECT HOLDDET.TRAN_ID__HOLD, HOLDDET.LINE_NO__HOLD, IHOLD.LOCK_CODE "+
" FROM INV_HOLD_REL_DET HOLDDET, INV_HOLD IHOLD "+
" WHERE HOLDDET.TRAN_ID__HOLD = IHOLD.TRAN_ID AND HOLDDET.TRAN_ID = ? ";
pDetail = conn.prepareStatement( sqlDetail );
pDetail.setString( 1,tranId );
rsDetail = pDetail.executeQuery();
pDetail.clearParameters();
while( rsDetail.next() )
{
tranIdHold = rsDetail.getString("TRAN_ID__HOLD");
lineNoHold = rsDetail.getInt("LINE_NO__HOLD");
lockCode = rsDetail.getString("LOCK_CODE");
pHoldDet.setString( 1,tranIdHold );
pHoldDet.setInt( 2,lineNoHold );
rsHoldDet = pHoldDet.executeQuery();
pHoldDet.clearParameters();
while( rsHoldDet.next() )
{
itemCode = checkNull(rsHoldDet.getString("ITEM_CODE"));
siteCode = checkNull(rsHoldDet.getString("SITE_CODE"));
locCode = checkNull(rsHoldDet.getString("LOC_CODE"));
lotNo = checkNull(rsHoldDet.getString("LOT_NO"));
lotSl = checkNull(rsHoldDet.getString("LOT_SL"));
lineNoSl = checkNull(rsHoldDet.getString("LINE_NO_SL"));
if( lineNoSl != null && lineNoSl.trim().length() > 0 ) //i.e. Line_sl is found
{
tranIdTrace = generateTranId("w_inv_hold_rel_trace", conn);
pSelStock.setString( 1, itemCode );
pSelStock.setString( 2, siteCode );
pSelStock.setString( 3, locCode );
pSelStock.setString( 4, lotNo );
pSelStock.setString( 5, lotSl );
rsSelStck = pSelStock.executeQuery();
pSelStock.clearParameters();
if( rsSelStck.next() )
{
qtyPerArt = rsSelStck.getDouble("QTY_PER_ART");
holdQtyStock = rsSelStck.getDouble("HOLD_QTY");
}
if( rsSelStck != null )
{
rsSelStck.close();
rsSelStck = null;
}
pSelTrace.setString( 1, itemCode );
pSelTrace.setString( 2, siteCode );
pSelTrace.setString( 3, locCode );
pSelTrace.setString( 4, lotNo );
pSelTrace.setString( 5, lotSl );
rsSelTrace = pSelTrace.executeQuery();
pSelTrace.clearParameters();
if( rsSelTrace.next() )
{
holdQtyTrace = rsSelTrace.getDouble("HOLD_QTY_TRACE");
relQtyTrace = rsSelTrace.getDouble("REL_QTY_TRACE");
}
if(rsSelTrace != null)
{
rsSelTrace.close();
rsSelTrace = null;
}
balQtyHold = holdQtyTrace - ( relQtyTrace + qtyPerArt );
if( balQtyHold == 0 )
{
pUpdate.setDouble( 1, balQtyHold);
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
else if ( balQtyHold < holdQtyStock )
{
balQtyHold = holdQtyStock - balQtyHold ;
pUpdate.setDouble( 1, balQtyHold);
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
pInsert.setString( 1, tranIdTrace);
pInsert.setString( 2, itemCode );
pInsert.setString( 3, siteCode );
pInsert.setString( 4, locCode );
pInsert.setString( 5, lotNo );
pInsert.setString( 6, lotSl );
pInsert.setString( 7, tranId );
pInsert.setDouble( 8, (-qtyPerArt) );
pInsert.setString( 9, lockCode );
pInsert.executeUpdate();
pInsert.clearParameters();
}//end of Line_sl present
else //i.e. line_sl is not found
{
HashMap pkKeyValMap = new HashMap();
StringBuffer sb = new StringBuffer("SELECT ITEM_CODE,SITE_CODE,LOC_CODE,LOT_NO,LOT_SL,QUANTITY, HOLD_QTY, QTY_PER_ART FROM STOCK WHERE ");
ArrayList pkList = new ArrayList();
if ( itemCode != null && itemCode.length() > 0 )
{
pkKeyValMap.put("ITEM_CODE", itemCode);
pkList.add("ITEM_CODE");
}
if ( siteCode != null && siteCode.length() > 0 )
{
pkKeyValMap.put("SITE_CODE", siteCode);
pkList.add("SITE_CODE");
}
if ( locCode != null && locCode.length() > 0 )
{
pkKeyValMap.put("LOC_CODE", locCode);
pkList.add("LOC_CODE");
}
if ( lotNo != null && lotNo.length() > 0 )
{
pkKeyValMap.put("LOT_NO", lotNo);
pkList.add("LOT_NO");
}
if ( lotSl != null && lotSl.length() > 0 )
{
pkKeyValMap.put("LOT_SL", lotSl);
pkList.add("LOT_SL");
}
System.out.println("pkKeyValMap :"+pkKeyValMap);
String key = "";
for ( int i = 0; i < pkList.size(); i++ )
{
key = pkList.get(i).toString();
sb.append(key).append(" = ? and ");
}
String stockQuery = sb.toString();
stockQuery = stockQuery.substring(0,(stockQuery.length() - 4));
System.out.println("stockQuery :"+stockQuery);
sb = null;
PreparedStatement pstmtStock = null;
ResultSet rsStock = null;
pstmtStock = conn.prepareStatement(stockQuery);
for ( int i = 0; i < pkList.size(); i++ )
{
key = pkList.get(i).toString();
if ( pkKeyValMap.containsKey(key) )
{
System.out.println("Key =["+key+ "] and Value =["+pkKeyValMap.get(key)+"]");
pstmtStock.setString(i+1, pkKeyValMap.get(key).toString());
}
}
/*
pSelTrace.setString( 1, itemCode );
pSelTrace.setString( 2, siteCode );
pSelTrace.setString( 3, locCode );
pSelTrace.setString( 4, lotNo );
pSelTrace.setString( 5, lotSl );
rsSelTrace = pSelTrace.executeQuery();
pSelTrace.clearParameters();
if(rsSelTrace.next())
{
holdQtyTrace = rsSelTrace.getDouble("HOLD_QTY_TRACE");
relQtyTrace = rsSelTrace.getDouble("REL_QTY_TRACE");
}
if( rsSelTrace != null)
{
rsSelTrace.close();
rsSelTrace = null;
}
*/
rsStock = pstmtStock.executeQuery();
pstmtStock.clearParameters();
while( rsStock.next() )
{
tranIdTrace = generateTranId("w_inv_hold_rel_trace", conn);
itemCode = checkNull(rsStock.getString("ITEM_CODE"));
siteCode = checkNull(rsStock.getString("SITE_CODE"));
locCode = checkNull(rsStock.getString("LOC_CODE"));
lotNo = checkNull(rsStock.getString("LOT_NO"));
lotSl = checkNull(rsStock.getString("LOT_SL"));
holdQtyStock = rsStock.getDouble("HOLD_QTY");
stockQty = rsStock.getDouble("QUANTITY");
System.out.println("Quantity :" + stockQty);
//Selecting sum(hold_qty) and sum(rel_qty) from trace table
pSelTrace.setString( 1, itemCode );
pSelTrace.setString( 2, siteCode );
pSelTrace.setString( 3, locCode );
pSelTrace.setString( 4, lotNo );
pSelTrace.setString( 5, lotSl );
rsSelTrace = pSelTrace.executeQuery();
pSelTrace.clearParameters();
if(rsSelTrace.next())
{
holdQtyTrace = rsSelTrace.getDouble("HOLD_QTY_TRACE");
relQtyTrace = rsSelTrace.getDouble("REL_QTY_TRACE");
}
rsSelTrace.close();
rsSelTrace = null;
//qtyToHold = totalHoldTrace - (totalRelTrace + relQtyTrace) ;
balQtyHold = holdQtyTrace - ( relQtyTrace + holdQtyStock ) ;
if( balQtyHold == 0 )
{
//holdQtyStock = holdQtyStock - relQtyTrace ;
pUpdate.setDouble( 1, balQtyHold );
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
else if ( balQtyHold < holdQtyStock )
{
balQtyHold = holdQtyStock - balQtyHold;
pUpdate.setDouble( 1, balQtyHold );
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
pInsert.setString( 1, tranIdTrace );
pInsert.setString( 2, itemCode );
pInsert.setString( 3, siteCode );
pInsert.setString( 4, locCode );
pInsert.setString( 5, lotNo );
pInsert.setString( 6, lotSl );
pInsert.setString( 7, tranId );
pInsert.setDouble( 8, (-holdQtyStock) );
pInsert.setString( 9, lockCode );
pInsert.executeUpdate();
pInsert.clearParameters();
}
pkList = null;
if(rsStock != null)
{
rsStock.close();
rsStock = null;
}
}//end of else
pHoldDet.clearParameters();
}//end of outer while()
if(rsHoldDet != null)
{
rsHoldDet.close();
rsHoldDet = null;
}
}//while( rsDetail.next() )
if(rsDetail != null)
{
rsDetail.close();
rsDetail = null;
}
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to commit unconfirmed transaction.end
}
//
if( errString == null || errString.length() == 0 )
{
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = "update inv_hold_rel set confirmed = 'Y', emp_code__aprv = '" + loginEmpCode + "', CONF_DATE = ? where tran_id = '" + tranId + "'";
pstmt = conn.prepareStatement( sql );
pstmt.setTimestamp( 1, new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.executeUpdate();
*/
sql = "update inv_hold_rel set confirmed = 'Y', emp_code__aprv = ? , CONF_DATE = ? where tran_id = ?" ;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,loginEmpCode);
pstmt.setTimestamp( 2 , new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.setString(3,tranId);
pstmt.executeUpdate();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
pstmt.close();
pstmt = null;
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = " update inv_hold_det hd set "
+" hd.hold_status = 'R', "
+" hd.STATUS_DATE = ? "
+" where (hd.tran_id, hd.line_no ) "
+" in ( select rd.tran_id__hold, rd.line_no__hold "
+" from inv_hold_rel_det rd "
+" where tran_id = '" + tranId + "' ) ";
pstmt = conn.prepareStatement( sql );
pstmt.setTimestamp( 1, new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.executeUpdate();
*/
sql = " update inv_hold_det hd set "
+" hd.hold_status = 'R', "
+" hd.STATUS_DATE = ? "
+" where (hd.tran_id, hd.line_no ) "
+" in ( select rd.tran_id__hold, rd.line_no__hold "
+" from inv_hold_rel_det rd "
+" where tran_id = ? )";
pstmt = conn.prepareStatement(sql);
pstmt.setTimestamp( 1 , new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.setString(2,tranId);
pstmt.executeUpdate();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
pstmt.close();
pstmt = null;
}
if( errString != null && errString.length() > 0 )
{
System.out.println("Returning Result "+errString);
conn.rollback();
return errString;
}
else
{
conn.commit();
errString = itmDBAccessEJB.getErrorString("","VTCNFSUCC","");
System.out.println("Returnng String From InvHoldRelConfEJB : .." + errString);
}
System.out.println("errString : "+errString);
}catch(ITMException ie)
{
System.out.println("ITMException : "+ie);
try{
conn.rollback();
}catch(Exception t){}
ie.printStackTrace();
errString = itmDBAccessEJB.getErrorString("","VTDESNCONF","","",conn);
System.out.println("Returnng String From InvHoldRelConfEJB :"+errString);
return errString;
}catch(Exception e){
System.out.println("Returnng String From InvHoldRelConfEJB :"+e);
try{
conn.rollback();
}catch(Exception t){}
e.printStackTrace();
errString = itmDBAccessEJB.getErrorString("","VTDESNCONF","","",conn);
System.out.println("Returnng String From InvHoldRelConfEJB :"+errString);
return errString;
}
finally
{
try{
if( pstmt != null )
{
pstmt.close();
}
pstmt = null;
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to close preparedStatements and to make null.start
if( pInsert != null )
{
pInsert.close();
pInsert = null;
}
if(pHoldDet != null)
{
pHoldDet.close();
pHoldDet = null;
}
if(pSelStock != null)
{
pSelStock.close();
pSelStock = null;
}
if(pUpdate != null)
{
pUpdate.close();
pUpdate = null;
}
if(pDetail != null)
{
pDetail.close();
pDetail = null;
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to close preparedStatements and to make null.end
if(conn != null)
{
conn.close();
}
conn = null;
}catch(Exception e){System.out.println("Exception : "+e);e.printStackTrace();}
}
System.out.println("InvHoldRelConfEJB :"+errString);
return errString;
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to auto genrate Transacion Id for inv_hold_rel_trace.start
public String generateTranId(String windowName,Connection conn)throws ITMException
{
PreparedStatement pstmt = null;
ResultSet rs = null;
String selSql = "";
String tranId = "";
String tranSer = "";
String keyString = "";
String keyCol = "";
String xmlValues = "";
java.sql.Date effDate = null;
try
{
selSql = "SELECT KEY_STRING, TRAN_ID_COL, REF_SER FROM TRANSETUP WHERE TRAN_WINDOW = ? ";
pstmt = conn.prepareStatement(selSql);
pstmt.setString( 1, windowName );
rs = pstmt.executeQuery();
if (rs.next())
{
keyString = rs.getString("KEY_STRING");
keyCol = rs.getString("TRAN_ID_COL");
tranSer = rs.getString("REF_SER");
}
rs.close();rs = null;
pstmt.close();pstmt = null;
System.out.println("keyString :"+keyString);
System.out.println("keyCol :"+keyCol);
System.out.println("tranSer :"+tranSer);
xmlValues ="<?xml version=\"1.0\" encoding=\"utf-8\"?><Root>";
xmlValues = xmlValues + "<Header></Header>";
xmlValues = xmlValues + "<Detail1>";
xmlValues = xmlValues + "<tran_id></tran_id>";
xmlValues = xmlValues + "</Detail1></Root>";
System.out.println("xmlValues :["+xmlValues+"]");
TransIDGenerator tg = new TransIDGenerator(xmlValues, "BASE", CommonConstants.DB_NAME);
tranId = tg.generateTranSeqID(tranSer, keyCol, keyString, conn);
System.out.println("tranId :"+tranId);
}
catch (SQLException ex)
{
System.out.println("Exception ::" +selSql+ ex.getMessage() + ":");
ex.printStackTrace();
throw new ITMException(ex);
}
catch (Exception e)
{
System.out.println("Exception ::" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if (rs != null)
{
rs.close();
rs = null;
}
if (pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
}
}
return tranId;
}//generateTranTd()
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to auto genrate Transacion Id for inv_hold_rel_trace.end
private String checkNull( String inputVal )
{
if ( inputVal == null )
{
inputVal = "";
}
return inputVal;
}
}
package ibase.webitm.ejb.dis.adv;
import java.util.*;
import java.sql.*;
import java.rmi.RemoteException;
import java.text.*;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
//import javax.ejb.SessionBean;
import ibase.system.config.ConnDriver;
import ibase.utility.CommonConstants;
import ibase.webitm.servlet.RSItemChange;
import ibase.webitm.utility.ITMException;
import ibase.webitm.utility.TransIDGenerator;
import ibase.webitm.ejb.ITMDBAccessEJB;
import ibase.webitm.ejb.ActionHandlerEJB;
import ibase.webitm.utility.*;
import ibase.utility.*;
import ibase.webitm.ejb.*;
import ibase.system.config.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.ejb.Stateless; // added for ejb3
@Stateless // added for ejb3
public class InvHoldRelConf extends ActionHandlerEJB implements InvHoldRelConfLocal , InvHoldRelConfRemote //SessionBean
{
/* public void ejbCreate() throws RemoteException,CreateException{
}
public void ejbRemove(){
}
public void ejbActivate(){
}
public void ejbPassivate(){
}
public void setSessionContext(SessionContext se){
}*/
public String confirm(String tranId,String xtraParams, String forcedFlag) throws RemoteException,ITMException
{
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "";
ConnDriver connDriver = null;
String loginEmpCode = null;
ibase.webitm.utility.GenericUtility genericUtility = null;
Document dom = null;
int count=0;
ITMDBAccessEJB itmDBAccessEJB = null;
String errString = null;
int upd = 0;
//changed by Dharmesh on 12-08-2011 [WM1ESUN004].start
String itemCode = null;
String siteCode = null;
String locCode = null;
String lotNo = null;
String lotSl = null;
String lineNoSl = null;
String tranIdTrace = null;
String tranIdHold = null;
//String lineNoHold = null;
double holdQtyStock = 0.0;
double qtyPerArt = 0.0;
double holdQtyTrace = 0.0;
double totalHoldStock = 0.0;
double relQtyTrace = 0.0;
double holdQty = 0.0;
double stockQty = 0.0;
double totalHoldTrace = 0.0;
double totalRelTrace = 0.0;
double balQtyHold = 0.0;
double qtyToHold = 0.0;
double relQty = 0.0;
int lineNoHold = 0;
String sqlUpdate = null;
String sqlHoldDet = null;
String sqlSelStck = null;
String sqlSelTrace = null;
String sqlInsert = null;
String sqlDetail = null;
String lockCode = null;
PreparedStatement pUpdate = null;
PreparedStatement pHoldDet = null;
PreparedStatement pSelStock = null;
PreparedStatement pSelTrace = null;
PreparedStatement pInsert = null;
PreparedStatement pDetail = null;
ResultSet rsHoldDet = null;
ResultSet rsSelStck = null;
ResultSet rsSelTrace = null;
ResultSet rsDetail = null;
//changed by Dharmesh on 12-08-2011 [WM1ESUN004].end
try
{
itmDBAccessEJB = new ITMDBAccessEJB();
genericUtility = ibase.webitm.utility.GenericUtility.getInstance();
connDriver = new ConnDriver();
conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false);
loginEmpCode = genericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginEmpCode");
//check if there is record in detal
int countDet = 0;
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = " select count( 1 ) cnt from inv_hold_rel_det where tran_id = '" + tranId.trim() + "' ";
pstmt = conn.prepareStatement( sql );
rs = pstmt.executeQuery();
*/
sql = "select count( 1 ) cnt from inv_hold_rel_det where tran_id = ?" ;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,tranId);
rs = pstmt.executeQuery();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
if( rs.next() )
{
countDet = rs.getInt( "cnt" );
}
pstmt.close();
pstmt = null;
rs.close();
rs = null;
if( countDet == 0 )
{
errString = itmDBAccessEJB.getErrorString("","VTNODET","","",conn);
}
if( errString == null || errString.length() == 0 )
{
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = " select count( 1 ) cnt from inv_hold_rel where tran_id = '" + tranId.trim() + "' AND CONFIRMED = 'Y' ";
pstmt = conn.prepareStatement( sql );
rs = pstmt.executeQuery();
*/
sql = "select count( 1 ) cnt from inv_hold_rel where tran_id = ? AND CONFIRMED = 'Y'";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,tranId);
rs = pstmt.executeQuery();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
if( rs.next() )
{
countDet = rs.getInt( "cnt" );
}
pstmt.close();
pstmt = null;
rs.close();
rs = null;
if( countDet > 0 )
{
errString = itmDBAccessEJB.getErrorString("","VTCONFMD","","",conn);
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to commit unconfirmed transaction.start
else
{
sqlUpdate = "UPDATE STOCK SET HOLD_QTY = ? WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ?";
pUpdate = conn.prepareStatement(sqlUpdate);
sqlSelStck = "SELECT ITEM_CODE, SITE_CODE, LOC_CODE, LOT_NO, LOT_SL, QTY_PER_ART, HOLD_QTY FROM STOCK WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ? " ;
pSelStock = conn.prepareStatement(sqlSelStck);
sqlSelTrace = "SELECT SUM( HOLD_QTY ) AS HOLD_QTY_TRACE, SUM( REL_QTY ) AS REL_QTY_TRACE FROM INV_HOLD_REL_TRACE WHERE ITEM_CODE = ? AND SITE_CODE = ? AND LOC_CODE = ? AND LOT_NO = ? AND LOT_SL = ? " ;
pSelTrace = conn.prepareStatement(sqlSelTrace);
sqlInsert = " INSERT INTO INV_HOLD_REL_TRACE ( TRAN_ID, ITEM_CODE, SITE_CODE, LOC_CODE, LOT_NO, LOT_SL, REF_NO, REL_QTY, LOCK_CODE ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ? ) " ;
pInsert = conn.prepareStatement(sqlInsert);
sqlHoldDet = "SELECT ITEM_CODE, SITE_CODE, LOC_CODE, LOT_NO, LOT_SL, LINE_NO_SL FROM INV_HOLD_DET WHERE TRAN_ID = ? AND LINE_NO = ?" ;
pHoldDet = conn.prepareStatement(sqlHoldDet);
sqlDetail = " SELECT HOLDDET.TRAN_ID__HOLD, HOLDDET.LINE_NO__HOLD, IHOLD.LOCK_CODE "+
" FROM INV_HOLD_REL_DET HOLDDET, INV_HOLD IHOLD "+
" WHERE HOLDDET.TRAN_ID__HOLD = IHOLD.TRAN_ID AND HOLDDET.TRAN_ID = ? ";
pDetail = conn.prepareStatement( sqlDetail );
pDetail.setString( 1,tranId );
rsDetail = pDetail.executeQuery();
pDetail.clearParameters();
while( rsDetail.next() )
{
tranIdHold = rsDetail.getString("TRAN_ID__HOLD");
lineNoHold = rsDetail.getInt("LINE_NO__HOLD");
lockCode = rsDetail.getString("LOCK_CODE");
System.out.println("tranIdHold =[" + tranIdHold + "]");
System.out.println("lineNoHold =[" + lineNoHold + "]");
System.out.println("lockCode =[" + lockCode + "]");
pHoldDet.setString( 1,tranIdHold );
pHoldDet.setInt( 2,lineNoHold );
rsHoldDet = pHoldDet.executeQuery();
pHoldDet.clearParameters();
while( rsHoldDet.next() )
{
itemCode = checkNull(rsHoldDet.getString("ITEM_CODE"));
siteCode = checkNull(rsHoldDet.getString("SITE_CODE"));
locCode = checkNull(rsHoldDet.getString("LOC_CODE"));
lotNo = checkNull(rsHoldDet.getString("LOT_NO"));
lotSl = checkNull(rsHoldDet.getString("LOT_SL"));
lineNoSl = checkNull(rsHoldDet.getString("LINE_NO_SL"));
if( lineNoSl != null && lineNoSl.trim().length() > 0 ) //i.e. Line_sl is found
{
tranIdTrace = generateTranId("w_inv_hold_rel_trace", conn);
pSelStock.setString( 1, itemCode );
pSelStock.setString( 2, siteCode );
pSelStock.setString( 3, locCode );
pSelStock.setString( 4, lotNo );
pSelStock.setString( 5, lotSl );
rsSelStck = pSelStock.executeQuery();
pSelStock.clearParameters();
if( rsSelStck.next() )
{
qtyPerArt = rsSelStck.getDouble("QTY_PER_ART");
holdQtyStock = rsSelStck.getDouble("HOLD_QTY");
}
if( rsSelStck != null )
{
rsSelStck.close();
rsSelStck = null;
}
pSelTrace.setString( 1, itemCode );
pSelTrace.setString( 2, siteCode );
pSelTrace.setString( 3, locCode );
pSelTrace.setString( 4, lotNo );
pSelTrace.setString( 5, lotSl );
rsSelTrace = pSelTrace.executeQuery();
pSelTrace.clearParameters();
if( rsSelTrace.next() )
{
holdQtyTrace = rsSelTrace.getDouble("HOLD_QTY_TRACE");
relQtyTrace = rsSelTrace.getDouble("REL_QTY_TRACE");
}
if(rsSelTrace != null)
{
rsSelTrace.close();
rsSelTrace = null;
}
balQtyHold = holdQtyTrace - ( Math.abs(relQtyTrace) + qtyPerArt );
if( balQtyHold == 0 )
{
pUpdate.setDouble( 1, balQtyHold);
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
else if ( balQtyHold < holdQtyStock )
{
balQtyHold = holdQtyStock - balQtyHold ;
pUpdate.setDouble( 1, balQtyHold);
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
pInsert.setString( 1, tranIdTrace);
pInsert.setString( 2, itemCode );
pInsert.setString( 3, siteCode );
pInsert.setString( 4, locCode );
pInsert.setString( 5, lotNo );
pInsert.setString( 6, lotSl );
pInsert.setString( 7, tranId );
pInsert.setDouble( 8, (-qtyPerArt) );
pInsert.setString( 9, lockCode );
pInsert.executeUpdate();
pInsert.clearParameters();
}//end of Line_sl present
else //i.e. line_sl is not found
{
HashMap pkKeyValMap = new HashMap();
StringBuffer sb = new StringBuffer("SELECT ITEM_CODE,SITE_CODE,LOC_CODE,LOT_NO,LOT_SL,QUANTITY, HOLD_QTY, QTY_PER_ART FROM STOCK WHERE ");
ArrayList pkList = new ArrayList();
if ( itemCode != null && itemCode.length() > 0 )
{
pkKeyValMap.put("ITEM_CODE", itemCode);
pkList.add("ITEM_CODE");
}
if ( siteCode != null && siteCode.length() > 0 )
{
pkKeyValMap.put("SITE_CODE", siteCode);
pkList.add("SITE_CODE");
}
if ( locCode != null && locCode.length() > 0 )
{
pkKeyValMap.put("LOC_CODE", locCode);
pkList.add("LOC_CODE");
}
if ( lotNo != null && lotNo.length() > 0 )
{
pkKeyValMap.put("LOT_NO", lotNo);
pkList.add("LOT_NO");
}
if ( lotSl != null && lotSl.length() > 0 )
{
pkKeyValMap.put("LOT_SL", lotSl);
pkList.add("LOT_SL");
}
System.out.println("pkKeyValMap :"+pkKeyValMap);
String key = "";
for ( int i = 0; i < pkList.size(); i++ )
{
key = pkList.get(i).toString();
sb.append(key).append(" = ? and ");
}
String stockQuery = sb.toString();
stockQuery = stockQuery.substring(0,(stockQuery.length() - 4));
System.out.println("stockQuery :"+stockQuery);
sb = null;
PreparedStatement pstmtStock = null;
ResultSet rsStock = null;
pstmtStock = conn.prepareStatement(stockQuery);
for ( int i = 0; i < pkList.size(); i++ )
{
key = pkList.get(i).toString();
if ( pkKeyValMap.containsKey(key) )
{
System.out.println("Key =["+key+ "] and Value =["+pkKeyValMap.get(key)+"]");
pstmtStock.setString(i+1, pkKeyValMap.get(key).toString());
}
}
/*
pSelTrace.setString( 1, itemCode );
pSelTrace.setString( 2, siteCode );
pSelTrace.setString( 3, locCode );
pSelTrace.setString( 4, lotNo );
pSelTrace.setString( 5, lotSl );
rsSelTrace = pSelTrace.executeQuery();
pSelTrace.clearParameters();
if(rsSelTrace.next())
{
holdQtyTrace = rsSelTrace.getDouble("HOLD_QTY_TRACE");
relQtyTrace = rsSelTrace.getDouble("REL_QTY_TRACE");
}
if( rsSelTrace != null)
{
rsSelTrace.close();
rsSelTrace = null;
}
*/
rsStock = pstmtStock.executeQuery();
pstmtStock.clearParameters();
while( rsStock.next() )
{
tranIdTrace = generateTranId("w_inv_hold_rel_trace", conn);
itemCode = checkNull(rsStock.getString("ITEM_CODE"));
siteCode = checkNull(rsStock.getString("SITE_CODE"));
locCode = checkNull(rsStock.getString("LOC_CODE"));
lotNo = checkNull(rsStock.getString("LOT_NO"));
lotSl = checkNull(rsStock.getString("LOT_SL"));
holdQtyStock = rsStock.getDouble("HOLD_QTY");
stockQty = rsStock.getDouble("QUANTITY");
System.out.println("Quantity =[" + stockQty + "]");
System.out.println("holdQtyStock =[" + holdQtyStock + "]");
//Selecting sum(hold_qty) and sum(rel_qty) from trace table
pSelTrace.setString( 1, itemCode );
pSelTrace.setString( 2, siteCode );
pSelTrace.setString( 3, locCode );
pSelTrace.setString( 4, lotNo );
pSelTrace.setString( 5, lotSl );
rsSelTrace = pSelTrace.executeQuery();
pSelTrace.clearParameters();
if(rsSelTrace.next())
{
holdQtyTrace = rsSelTrace.getDouble("HOLD_QTY_TRACE");
relQtyTrace = rsSelTrace.getDouble("REL_QTY_TRACE");
}
rsSelTrace.close();
rsSelTrace = null;
//qtyToHold = totalHoldTrace - (totalRelTrace + relQtyTrace) ;
System.out.println("holdQtyTrace =[" + holdQtyTrace + "]");
System.out.println("relQtyTrace =[" + relQtyTrace + "]");
balQtyHold = holdQtyTrace - ( Math.abs(relQtyTrace) + holdQtyStock ) ;
System.out.println("balQtyHold =[" + balQtyHold + "]");
if( balQtyHold == 0 )
{
//holdQtyStock = holdQtyStock - relQtyTrace ;
pUpdate.setDouble( 1, balQtyHold );
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
else if ( balQtyHold < holdQtyStock )
{
balQtyHold = holdQtyStock - balQtyHold;
pUpdate.setDouble( 1, balQtyHold );
pUpdate.setString( 2, itemCode);
pUpdate.setString( 3, siteCode);
pUpdate.setString( 4, locCode);
pUpdate.setString( 5, lotNo);
pUpdate.setString( 6, lotSl);
pUpdate.executeUpdate();
pUpdate.clearParameters();
}
pInsert.setString( 1, tranIdTrace );
pInsert.setString( 2, itemCode );
pInsert.setString( 3, siteCode );
pInsert.setString( 4, locCode );
pInsert.setString( 5, lotNo );
pInsert.setString( 6, lotSl );
pInsert.setString( 7, tranId );
pInsert.setDouble( 8, (-holdQtyStock) );
pInsert.setString( 9, lockCode );
pInsert.executeUpdate();
pInsert.clearParameters();
}
pkList = null;
if(rsStock != null)
{
rsStock.close();
rsStock = null;
}
}//end of else
pHoldDet.clearParameters();
}//end of outer while()
if(rsHoldDet != null)
{
rsHoldDet.close();
rsHoldDet = null;
}
}//while( rsDetail.next() )
if(rsDetail != null)
{
rsDetail.close();
rsDetail = null;
}
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to commit unconfirmed transaction.end
}
//
if( errString == null || errString.length() == 0 )
{
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = "update inv_hold_rel set confirmed = 'Y', emp_code__aprv = '" + loginEmpCode + "', CONF_DATE = ? where tran_id = '" + tranId + "'";
pstmt = conn.prepareStatement( sql );
pstmt.setTimestamp( 1, new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.executeUpdate();
*/
sql = "update inv_hold_rel set confirmed = 'Y', emp_code__aprv = ? , CONF_DATE = ? where tran_id = ?" ;
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,loginEmpCode);
pstmt.setTimestamp( 2 , new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.setString(3,tranId);
pstmt.executeUpdate();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
pstmt.close();
pstmt = null;
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.start
/*
sql = " update inv_hold_det hd set "
+" hd.hold_status = 'R', "
+" hd.STATUS_DATE = ? "
+" where (hd.tran_id, hd.line_no ) "
+" in ( select rd.tran_id__hold, rd.line_no__hold "
+" from inv_hold_rel_det rd "
+" where tran_id = '" + tranId + "' ) ";
pstmt = conn.prepareStatement( sql );
pstmt.setTimestamp( 1, new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.executeUpdate();
*/
sql = " update inv_hold_det hd set "
+" hd.hold_status = 'R', "
+" hd.STATUS_DATE = ? "
+" where (hd.tran_id, hd.line_no ) "
+" in ( select rd.tran_id__hold, rd.line_no__hold "
+" from inv_hold_rel_det rd "
+" where tran_id = ? )";
pstmt = conn.prepareStatement(sql);
pstmt.setTimestamp( 1 , new java.sql.Timestamp( System.currentTimeMillis() ) );
pstmt.setString(2,tranId);
pstmt.executeUpdate();
//changed by Dharmesh on 11-08-2011 [WM1ESUN004] to bind variable dynamically instead of statically.end
pstmt.close();
pstmt = null;
}
if( errString != null && errString.length() > 0 )
{
System.out.println("Returning Result "+errString);
conn.rollback();
return errString;
}
else
{
conn.commit();
errString = itmDBAccessEJB.getErrorString("","VTCNFSUCC","");
System.out.println("Returnng String From InvHoldRelConfEJB : .." + errString);
}
System.out.println("errString : "+errString);
}catch(ITMException ie)
{
System.out.println("ITMException : "+ie);
try{
conn.rollback();
}catch(Exception t){}
ie.printStackTrace();
errString = itmDBAccessEJB.getErrorString("","VTDESNCONF","","",conn);
System.out.println("Returnng String From InvHoldRelConfEJB :"+errString);
return errString;
}catch(Exception e){
System.out.println("Returnng String From InvHoldRelConfEJB :"+e);
try{
conn.rollback();
}catch(Exception t){}
e.printStackTrace();
errString = itmDBAccessEJB.getErrorString("","VTDESNCONF","","",conn);
System.out.println("Returnng String From InvHoldRelConfEJB :"+errString);
return errString;
}
finally
{
try{
if( pstmt != null )
{
pstmt.close();
}
pstmt = null;
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to close preparedStatements and to make null.start
if( pInsert != null )
{
pInsert.close();
pInsert = null;
}
if(pHoldDet != null)
{
pHoldDet.close();
pHoldDet = null;
}
if(pSelStock != null)
{
pSelStock.close();
pSelStock = null;
}
if(pUpdate != null)
{
pUpdate.close();
pUpdate = null;
}
if(pDetail != null)
{
pDetail.close();
pDetail = null;
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to close preparedStatements and to make null.end
if(conn != null)
{
conn.close();
}
conn = null;
}catch(Exception e){System.out.println("Exception : "+e);e.printStackTrace();}
}
System.out.println("InvHoldRelConfEJB :"+errString);
return errString;
}
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to auto genrate Transacion Id for inv_hold_rel_trace.start
public String generateTranId(String windowName,Connection conn)throws ITMException
{
PreparedStatement pstmt = null;
ResultSet rs = null;
String selSql = "";
String tranId = "";
String tranSer = "";
String keyString = "";
String keyCol = "";
String xmlValues = "";
java.sql.Date effDate = null;
try
{
selSql = "SELECT KEY_STRING, TRAN_ID_COL, REF_SER FROM TRANSETUP WHERE TRAN_WINDOW = ? ";
pstmt = conn.prepareStatement(selSql);
pstmt.setString( 1, windowName );
rs = pstmt.executeQuery();
if (rs.next())
{
keyString = rs.getString("KEY_STRING");
keyCol = rs.getString("TRAN_ID_COL");
tranSer = rs.getString("REF_SER");
}
rs.close();rs = null;
pstmt.close();pstmt = null;
System.out.println("keyString :"+keyString);
System.out.println("keyCol :"+keyCol);
System.out.println("tranSer :"+tranSer);
xmlValues ="<?xml version=\"1.0\" encoding=\"utf-8\"?><Root>";
xmlValues = xmlValues + "<Header></Header>";
xmlValues = xmlValues + "<Detail1>";
xmlValues = xmlValues + "<tran_id></tran_id>";
xmlValues = xmlValues + "</Detail1></Root>";
System.out.println("xmlValues :["+xmlValues+"]");
TransIDGenerator tg = new TransIDGenerator(xmlValues, "BASE", CommonConstants.DB_NAME);
tranId = tg.generateTranSeqID(tranSer, keyCol, keyString, conn);
System.out.println("tranId :"+tranId);
}
catch (SQLException ex)
{
System.out.println("Exception ::" +selSql+ ex.getMessage() + ":");
ex.printStackTrace();
throw new ITMException(ex);
}
catch (Exception e)
{
System.out.println("Exception ::" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if (rs != null)
{
rs.close();
rs = null;
}
if (pstmt != null)
{
pstmt.close();
pstmt = null;
}
}
catch(Exception e)
{
}
}
return tranId;
}//generateTranTd()
//changed by Dharmesh on 12-08-2011 [WM1ESUN004] to auto genrate Transacion Id for inv_hold_rel_trace.end
private String checkNull( String inputVal )
{
if ( inputVal == null )
{
inputVal = "";
}
return inputVal;
}
}
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