Commit 5e7a0b00 authored by msharma's avatar msharma

Source received from unique


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@92395 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 2a8a7a67
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
import java.sql.*;
import java.util.HashMap;
import org.w3c.dom.*;
import javax.ejb.*;
import ibase.webitm.utility.ITMException;
import ibase.webitm.ejb.*;
import ibase.webitm.utility.GenericUtility;
import ibase.system.config.*;
import javax.ejb.Stateless; // added for ejb3
@Stateless // added for ejb3
public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal, SordAllocDefRemote
{
/*public void ejbCreate() throws RemoteException, CreateException
{
}
public void ejbRemove()
{
}
public void ejbActivate()
{
}
public void ejbPassivate()
{
}*/
public String actionHandler() throws RemoteException,ITMException
{
return "";
}
public String actionHandler(String actionType, String xmlString, String objContext, String xtraParams) throws RemoteException,ITMException
{
Document dom = null;
String retString = null;
GenericUtility genericUtility = GenericUtility.getInstance();
try
{
if (actionType.equalsIgnoreCase("Default"))
{
System.out.println("-XML- String :"+xmlString);
dom = genericUtility.parseString(xmlString);
}
retString = actionDefault(dom, xtraParams);
}
catch(Exception e)
{
System.out.println("Exception :Sorder :actionHandler(String xmlString):" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
System.out.println("returning from actionDefault actionHandler"+retString);
return (retString);
}
private String actionDefault(Document dom, String xtraParams) throws RemoteException , ITMException
{
String creditTerm = "", linenosord = "", siteCode = "", itemCode = "", lotSl = "",lotNo = "", saleOrder = "";
String errCode = "";
String errString = "";
String sql = "";
String resrvLoc = "",casePickLoc = "", activePickLoc = "", deepStoreLoc = "", partialResrvLoc = "";
boolean isActives = false;
String orderByStkStr = "";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String detCnt = "0";
int minSelfLife = 0;
NodeList parentNodeList = null;
int parentNodeListLength = 0;
double quantity = 0.0, pendingQty = 0.0, qtyAvail = 0.0,quantityP = 0.0,quantityPnd = 0.0;
StringBuffer valueXmlString = new StringBuffer("<?xml version=\"1.0\"?>\r\n<Root>\r\n");
GenericUtility genericUtility = GenericUtility.getInstance();
ConnDriver connDriver = new ConnDriver();
ITMDBAccessEJB itmDBAccess = new ITMDBAccessEJB();
try
{
DistCommon discommon = new DistCommon();
detCnt = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"detCnt"); //Will be Uncommented later - Jiten
System.out.println(" sumit detCnt ["+detCnt+"]");
if (detCnt == null || detCnt.trim().length() == 0)
{
detCnt = "0";
}
if(detCnt.equals("1"))
{
parentNodeList = dom.getElementsByTagName("Detail2");
parentNodeListLength = parentNodeList.getLength();
System.out.println("parentNodeListLength*********sumit******************************"+parentNodeListLength);
for(int row = 0; row < parentNodeListLength; row++)
{
linenosord = GenericUtility.getInstance().getColumnValueFromNode("line_no__sord", dom.getElementsByTagName("Detail2").item(row));
siteCode = GenericUtility.getInstance().getColumnValueFromNode("site_code", dom.getElementsByTagName("Detail2").item(row));
//siteDescr = GenericUtility.getInstance().getColumnValueFromNode("site_descr", dom.getElementsByTagName("Detail2").item(row));
saleOrder = GenericUtility.getInstance().getColumnValueFromNode("sale_order", dom.getElementsByTagName("Detail2").item(row));
itemCode = GenericUtility.getInstance().getColumnValueFromNode("item_code", dom.getElementsByTagName("Detail2").item(row));
lotNo = GenericUtility.getInstance().getColumnValueFromNode("lot_no", dom.getElementsByTagName("Detail2").item(row));
lotSl = GenericUtility.getInstance().getColumnValueFromNode("lot_sl", dom.getElementsByTagName("Detail2").item(row));
System.out.println("sumit quantity ["+GenericUtility.getInstance().getColumnValueFromNode("quantity", dom.getElementsByTagName("Detail2").item(row)));
//quantity = quantity + Integer.parseInt(GenericUtility.getInstance().getColumnValueFromNode("quantity", dom.getElementsByTagName("Detail2").item(row)));
quantity = Double.parseDouble(GenericUtility.getInstance().getColumnValueFromNode("quantity", dom.getElementsByTagName("Detail2").item(row)));
quantityP = Double.parseDouble(GenericUtility.getInstance().getColumnValueFromNode("pending_qty", dom.getElementsByTagName("Detail2").item(row)));
//}
System.out.println(" linenosord ["+linenosord+"] quantity ["+quantity+"] siteCode ["+siteCode+"]");
conn = connDriver.getConnectDB("DriverITM");
sql = " select MIN_SHELF_LIFE, (SORDITEM.QUANTITY - SORDITEM.QTY_DESP - SORDITEM.QTY_ALLOC) PENDING_QUANTITY from sorditem where sale_order = ? AND line_no = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, saleOrder);
pstmt.setString(2, linenosord);
rs = pstmt.executeQuery();
if(rs.next())
{
minSelfLife = rs.getInt("MIN_SHELF_LIFE");
pendingQty = rs.getDouble("PENDING_QUANTITY");
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
rs.close();rs = null;
resrvLoc = discommon.getDisparams("999999","RESERV_LOCATION",conn);
casePickLoc = discommon.getDisparams("999999","CASE_PICK_INVSTAT",conn);
activePickLoc = discommon.getDisparams("999999","ACTIVE_PICK_INVSTAT",conn);
deepStoreLoc = discommon.getDisparams("999999","DEEP_STORE_INVSTAT",conn);
partialResrvLoc = discommon.getDisparams("999999","PRSRV_INVSTAT",conn);
String sSingleLotSql = "SELECT STOCK.LOT_NO,STOCK.LOT_SL,"
+"STOCK.LOC_CODE, "
+"STOCK.UNIT, "
+"(STOCK.QUANTITY - STOCK.ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END)) AS QTY_AVAIL_ALLOC ,"
+"STOCK.GRADE,STOCK.EXP_DATE,STOCK.CONV__QTY_STDUOM,STOCK.QUANTITY, "
+"STOCK.MFG_DATE,STOCK.SITE_CODE__MFG, "
+"STOCK.NO_ART,INVSTAT.INV_STAT,ITEM.LOC_TYPE__PARENT,ITEM.LOC_TYPE,ITEM.LOC_ZONE__PREF "
+"FROM STOCK,ITEM,LOCATION,INVSTAT "
+"WHERE (ITEM.ITEM_CODE = STOCK.ITEM_CODE) "
+"AND (LOCATION.LOC_CODE = STOCK.LOC_CODE ) "
+"AND (LOCATION.INV_STAT = INVSTAT.INV_STAT) "
+"AND INVSTAT.AVAILABLE = 'Y' "
+"AND STOCK.ITEM_CODE = ? AND STOCK.SITE_CODE = ? "
//+"AND LOT_SL <> ? "
+"AND STOCK.LOT_NO IN (SELECT LOT_NO FROM STOCK WHERE ITEM_CODE =? AND SITE_CODE =? AND LOT_NO = ? "
+"GROUP BY LOT_NO HAVING SUM(QUANTITY - ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END) ) > 0) "
+"AND (MONTHS_BETWEEN(TO_DATE(STOCK.EXP_DATE),SYSDATE) > ? ) ";
//+"AND NOT EXISTS (SELECT 1 FROM INV_RESTR I WHERE I.INV_STAT = INVSTAT.INV_STAT AND I.REF_SER = 'S-DSP' ) ";
HashMap itemVolMap = getItemVoumeMap(itemCode, "", conn);
double packSize = (Double)itemVolMap.get("PACK_SIZE");
double itemWeight = (Double)itemVolMap.get("ITEM_WEIGHT");
System.out.println("itemWeight =["+itemWeight+"] packSize ["+packSize+"]");
if((pendingQty % packSize) > 0)
{
isActives = true;
orderByStkStr = "AND LOCATION.INV_STAT IN(?,?,?,?,?) ORDER BY STOCK.EXP_DATE,LOCATION.INV_STAT, STOCK.LOC_CODE ";
}
else
{
isActives = false;
orderByStkStr = "AND LOCATION.INV_STAT IN(?,?,?,?) ORDER BY STOCK.EXP_DATE, STOCK.LOC_CODE ";
}
pstmt = conn.prepareStatement(sSingleLotSql + orderByStkStr);
//pstmt.setDouble(1,quantity);
pstmt.setString(1,itemCode);
pstmt.setString(2,siteCode);
//pstmt.setString(3,lotSl);
pstmt.setString(3,itemCode);
pstmt.setString(4,siteCode);
pstmt.setString(5,lotNo);
//pstmt.setDouble(6,pendingQty);
pstmt.setInt(6,minSelfLife);
pstmt.setString(7,resrvLoc);
pstmt.setString(8,casePickLoc);
pstmt.setString(9,activePickLoc);
pstmt.setString(10,deepStoreLoc);
if(isActives)
{
pstmt.setString(11,partialResrvLoc);
}
rs = pstmt.executeQuery();
lotSl = "";
//quantity = 0.0;
quantityPnd = quantityP;
//quantityP = quantity;
while( rs.next() && quantityP >= quantity)
{
qtyAvail = rs.getDouble("QTY_AVAIL_ALLOC"); //quantity
lotSl = rs.getString("LOT_SL");
System.out.println("qtyAvail before"+qtyAvail);
System.out.println("quantity"+qtyAvail);
/*if((quantityP - quantity) >= qtyAvail )
{
quantity = quantity + qtyAvail;
}
else
{
qtyAvail = quantityP - quantity ;
quantity = quantity + qtyAvail;
//quantity = 0;
}*/
if(quantity > qtyAvail)
{
quantity = quantity - qtyAvail;
}
else
{
qtyAvail = quantity;
quantity = 0;
}
System.out.println("quantity"+quantity);
System.out.println("qtyAvail after"+qtyAvail);
valueXmlString.append("<Detail>\r\n");
valueXmlString.append("<sale_order>").append("<![CDATA[").append(saleOrder).append("]]>").append("</sale_order>\r\n");
valueXmlString.append("<line_no__sord>").append("<![CDATA[").append(linenosord).append("]]>").append("</line_no__sord>\r\n");
valueXmlString.append("<exp_lev>").append("<![CDATA[").append(GenericUtility.getInstance().getColumnValueFromNode("exp_lev", dom.getElementsByTagName("Detail2").item(row))).append("]]>").append("</exp_lev>\r\n");
valueXmlString.append("<site_code>").append("<![CDATA[").append(siteCode).append("]]>").append("</site_code>\r\n");
valueXmlString.append("<site_descr>").append("<![CDATA[").append(GenericUtility.getInstance().getColumnValueFromNode("site_descr", dom.getElementsByTagName("Detail2").item(row))).append("]]>").append("</site_descr>\r\n");
valueXmlString.append("<item_code>").append("<![CDATA[").append(itemCode).append("]]>").append("</item_code>\r\n");
//valueXmlString.append("<item_descr>").append("<![CDATA[").append(itemDescr).append("]]>").append("</item_descr>\r\n");
valueXmlString.append("<lot_no>").append("<![CDATA[").append(lotNo).append("]]>").append("</lot_no>\r\n");
valueXmlString.append("<lot_sl>").append("<![CDATA[").append(lotSl).append("]]>").append("</lot_sl>\r\n");
valueXmlString.append("<loc_code>").append("<![CDATA[").append(rs.getString("LOC_CODE")).append("]]>").append("</loc_code>\r\n");
valueXmlString.append("<quantity>").append("<![CDATA[").append(qtyAvail).append("]]>").append("</quantity>\r\n");
valueXmlString.append("<pending_qty>").append("<![CDATA[").append(quantityPnd).append("]]>").append("</pending_qty>\r\n");
valueXmlString.append("<dealloc_qty>").append("<![CDATA[").append("0").append("]]>").append("</dealloc_qty>\r\n");
valueXmlString.append("</Detail>\r\n");
quantityPnd = quantityPnd - qtyAvail;
System.out.println(" quantity ["+quantity+"] quantityP ["+quantityP+"]");
/*System.out.println(" quantity ["+quantity+"] quantityP ["+quantityP+"]");
if(quantityP == quantity )
{
break;
}*/
if(quantity <= 0)
{
break;
}
}
rs.close();rs = null;
pstmt.close(); pstmt = null;
System.out.println("CASE_PICK_INVSTAT"+casePickLoc+"ACTIVE_PICK_INVSTAT"+activePickLoc+"RESERV_LOCATION"+resrvLoc+"PARTIAL RESERVE LOC["+partialResrvLoc+"]");
/*valueXmlString.append("<Detail2>\r\n");
valueXmlString.append("<sale_order>").append("<![CDATA[").append(saleOrder).append("]]>").append("</sale_order>\r\n");
valueXmlString.append("<line_no__sord>").append("<![CDATA[").append(linenosord).append("]]>").append("</line_no__sord>\r\n");
//valueXmlString.append("<exp_lev>").append("<![CDATA[").append(expLev).append("]]>").append("</exp_lev>\r\n");
valueXmlString.append("<site_code>").append("<![CDATA[").append(siteCode).append("]]>").append("</site_code>\r\n");
//valueXmlString.append("<site_descr>").append("<![CDATA[").append(siteDescr).append("]]>").append("</site_descr>\r\n");
valueXmlString.append("<item_code>").append("<![CDATA[").append(itemCode).append("]]>").append("</item_code>\r\n");
//valueXmlString.append("<item_descr>").append("<![CDATA[").append(itemDescr).append("]]>").append("</item_descr>\r\n");
valueXmlString.append("<lot_no>").append("<![CDATA[").append(lotSl).append("]]>").append("</lot_no>\r\n");
valueXmlString.append("<quantity>").append("<![CDATA[").append(qtyAvail).append("]]>").append("</quantity>\r\n");
valueXmlString.append("<pending_qty>").append("<![CDATA[").append("").append("]]>").append("</pending_qty>\r\n");
valueXmlString.append("<dealloc_qty>").append("<![CDATA[").append("").append("]]>").append("</dealloc_qty>\r\n");
valueXmlString.append("</Detail2>\r\n");*/
//}
//valueXmlString.append("</Root>\r\n");
}
valueXmlString.append("</Root>\r\n");
System.out.println("valueXmlString["+valueXmlString.toString()+"]");
}
else
{
errCode = "VTDETCNT";
}
if (!errCode.equals(""))
{
errString = itmDBAccess.getErrorString("",errCode,"","",conn);
return errString;
}
}
catch(SQLException e)
{
System.out.println("Exception : Sorder : actionVoucher " +e.getMessage());
throw new ITMException(e);
}
catch(Exception e)
{
System.out.println("Exception : Sorder : actionHandler " +e.getMessage());
throw new ITMException(e);
}
finally
{
try{
conn.close();
}catch(Exception e){}
}
System.out.println("valueXmlString.toString() "+valueXmlString.toString());
return valueXmlString.toString();
}
private HashMap getItemVoumeMap(String itemCode,String lotNo,Connection con)throws Exception
{
double packSize = 0,itemSize = 0,lotSize = 0;
PreparedStatement pstmt = null;
String sql="";
ResultSet rs = null;
double itmLen = 0,itmWidth = 0,itmHeight = 0,itemWeight = 0,lotLen = 0 ,lotHeight = 0,lotWidth = 0,lotWeight = 0;
HashMap dataVolumeMap = new HashMap();
try {
sql = "SELECT I.LENGTH ITEM_LEN,I.WIDTH ITEM_WID,I.HEIGHT ITEM_HEIGHT,I.GROSS_WEIGHT ITEM_WEIGHT,"
+" L.LENGTH LITEM_LEN,L.WIDTH LITEM_WID,L.HEIGHT LITEM_HEIGHT,L.SHIPPER_SIZE SHIPSIZE,L.GROSS_WEIGHT LOT_WEIGHT FROM"
+" ITEM I,ITEM_LOT_PACKSIZE L"
+" WHERE I.ITEM_CODE = L.ITEM_CODE"
+" AND L.LOT_NO__FROM <= ? AND L.LOT_NO__TO >= ?"
+" AND I.ITEM_CODE = ?";
pstmt = con.prepareStatement(sql);
if(lotNo != null && lotNo.length() > 0)
{
pstmt.setString(1, lotNo);
pstmt.setString(2, lotNo);
}
else
{
pstmt.setString(1, "00");
pstmt.setString(2, "ZZ");
}
pstmt.setString(3, itemCode);
rs = pstmt.executeQuery();
if(rs.next())
{
itmLen = rs.getDouble("ITEM_LEN");
itmWidth = rs.getDouble("ITEM_WID");
itmHeight = rs.getDouble("ITEM_HEIGHT");
itemWeight = rs.getDouble("ITEM_WEIGHT");
lotLen = rs.getDouble("LITEM_LEN");
lotWidth = rs.getDouble("LITEM_WID");
lotHeight = rs.getDouble("LITEM_HEIGHT");
packSize = rs.getDouble("SHIPSIZE");
lotWeight = rs.getDouble("LOT_WEIGHT");
}
//packSize = (lotHeight * lotWidth * lotLen)/(itmLen * itmWidth * itmHeight);
/*itemSize = Math.floor(itmLen * itmWidth * itmHeight);
lotSize = Math.floor((lotHeight * lotWidth * lotLen));*/
itemSize = itmLen * itmWidth * itmHeight;
lotSize = lotHeight * lotWidth * lotLen;
dataVolumeMap.put("PACK_SIZE", packSize);
dataVolumeMap.put("ITEM_SIZE", itemSize);
dataVolumeMap.put("LOT_SIZE", lotSize);
dataVolumeMap.put("ITEM_WEIGHT", itemWeight);
dataVolumeMap.put("PACK_WEIGHT", lotWeight);
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
} catch (Exception e) {
// TODO: handle exception
throw e;
}
finally
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
}
return dataVolumeMap;
}
}
\ No newline at end of file
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
//import javax.ejb.EJBObject;
import ibase.webitm.utility.ITMException;
import ibase.webitm.ejb.ActionHandlerLocal;
import javax.ejb.Local; // added for ejb3
@Local // added for ejb3
public interface SordAllocDefLocal extends ActionHandlerLocal//,EJBObject
{
public String actionHandler() throws RemoteException,ITMException;
public String actionHandler(String actionType, String xmlString, String objContext, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
package ibase.webitm.ejb.dis;
import java.rmi.RemoteException;
//import javax.ejb.EJBObject;
import ibase.webitm.utility.ITMException;
import ibase.webitm.ejb.ActionHandlerRemote;
import javax.ejb.Remote; // added for ejb3
@Remote // added for ejb3
public interface SordAllocDefRemote extends ActionHandlerRemote//,EJBObject
{
public String actionHandler() throws RemoteException,ITMException;
public String actionHandler(String actionType, String xmlString, String objContext, String xtraParams) throws RemoteException,ITMException;
}
\ No newline at end of file
...@@ -633,9 +633,16 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto ...@@ -633,9 +633,16 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
String locCode = ""; String locCode = "";
String locDescr = ""; String locDescr = "";
String lotNo = "";//added by sumit on 19/12/12
boolean isActives = false;
String orderByStkStr = "";
String resrvLoc = "",casePickLoc = "", activePickLoc = "", deepStoreLoc = "", partialResrvLoc = "", singleLot = "";
String sSQL = "",sSingleLotSql = "",lineNo = "";
int minSelfLife = 0;
int ctr = 0; int ctr = 0;
int currentFormNo = 0; int currentFormNo = 0;
double pendingQty = 0.0; double pendingQty = 0.0,qtyAvail = 0.0;
//Changes by Sumit end
Connection conn = null; Connection conn = null;
PreparedStatement pstmt = null; PreparedStatement pstmt = null;
...@@ -644,6 +651,7 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto ...@@ -644,6 +651,7 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
ConnDriver connDriver = new ConnDriver(); ConnDriver connDriver = new ConnDriver();
try try
{ {
DistCommon discommon = new DistCommon();
conn = connDriver.getConnectDB("DriverITM"); conn = connDriver.getConnectDB("DriverITM");
conn.setAutoCommit(false); conn.setAutoCommit(false);
connDriver = null; connDriver = null;
...@@ -799,19 +807,41 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto ...@@ -799,19 +807,41 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
{ {
valueXmlString.append("<line_no__sord>").append("<![CDATA[" + lineNoSord + "]]>").append("</line_no__sord>"); valueXmlString.append("<line_no__sord>").append("<![CDATA[" + lineNoSord + "]]>").append("</line_no__sord>");
} }
if (saleOrder.trim().length() > 0 && lineNoSord.trim().length() > 0 && expLev.trim().length() > 0 ) //if (saleOrder.trim().length() > 0 && lineNoSord.trim().length() > 0 && expLev.trim().length() > 0 )
if (saleOrder.trim().length() > 0 && lineNoSord.trim().length() > 0 )
{ {
sql = "SELECT ITEM_CODE,(CASE WHEN quantity IS NULL THEN 0 ELSE quantity END - CASE WHEN qty_alloc IS NULL THEN 0 ELSE qty_alloc END - CASE WHEN qty_desp IS NULL THEN 0 ELSE qty_desp END )" /*sql = "SELECT ITEM_CODE,(CASE WHEN quantity IS NULL THEN 0 ELSE quantity END - CASE WHEN qty_alloc IS NULL THEN 0 ELSE qty_alloc END - CASE WHEN qty_desp IS NULL THEN 0 ELSE qty_desp END )"
+ " FROM SORDITEM WHERE SALE_ORDER = ? AND LINE_NO = ? AND EXP_LEV = ? "; + " FROM SORDITEM WHERE SALE_ORDER = ? AND LINE_NO = ? AND EXP_LEV = ? ";
pstmt = conn.prepareStatement(sql); pstmt = conn.prepareStatement(sql);
pstmt.setString(1,saleOrder); pstmt.setString(1,saleOrder);
pstmt.setString(2,lineNoSord); pstmt.setString(2,lineNoSord);
pstmt.setString(3,expLev); pstmt.setString(3,expLev);
rs = pstmt.executeQuery();*/
if(expLev.trim().length() > 0)
{
sql = "SELECT ITEM_CODE,(CASE WHEN quantity IS NULL THEN 0 ELSE quantity END - CASE WHEN qty_alloc IS NULL THEN 0 ELSE qty_alloc END - CASE WHEN qty_desp IS NULL THEN 0 ELSE qty_desp END )"
+ ", EXP_LEV FROM SORDITEM WHERE SALE_ORDER = ? AND LINE_NO = ? AND EXP_LEV = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,saleOrder);
pstmt.setString(2,lineNoSord);
pstmt.setString(3,expLev);
}
else
{
sql = "SELECT ITEM_CODE,(CASE WHEN quantity IS NULL THEN 0 ELSE quantity END - CASE WHEN qty_alloc IS NULL THEN 0 ELSE qty_alloc END - CASE WHEN qty_desp IS NULL THEN 0 ELSE qty_desp END )"
+ ", EXP_LEV FROM SORDITEM WHERE SALE_ORDER = ? AND LINE_NO = ? ";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,saleOrder);
pstmt.setString(2,lineNoSord);
}
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
if(rs.next()) if(rs.next())
{ {
itemCode = rs.getString("ITEM_CODE"); itemCode = rs.getString("ITEM_CODE");
pendingQty = rs.getDouble(2); pendingQty = rs.getDouble(2);
//Changed by sumit
expLev = rs.getString("EXP_LEV");
} }
rs.close(); rs.close();
rs = null; rs = null;
...@@ -821,8 +851,226 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto ...@@ -821,8 +851,226 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
valueXmlString.append("<item_code>").append("<![CDATA[" + itemCode + "]]>").append("</item_code>"); valueXmlString.append("<item_code>").append("<![CDATA[" + itemCode + "]]>").append("</item_code>");
itemDescr = findValue(conn, "descr" ,"item", "item_code", itemCode); itemDescr = findValue(conn, "descr" ,"item", "item_code", itemCode);
valueXmlString.append("<item_descr>").append("<![CDATA[" + itemDescr + "]]>").append("</item_descr>"); valueXmlString.append("<item_descr>").append("<![CDATA[" + itemDescr + "]]>").append("</item_descr>");
valueXmlString.append("<exp_lev>").append("<![CDATA[" + expLev + "]]>").append("</exp_lev>");
}
}
else if(currentColumn.trim().equalsIgnoreCase("lot_no"))
{
lotNo = checkNull(genericUtility.getColumnValue("lot_no", dom));
saleOrder = checkNull(genericUtility.getColumnValue("sale_order", dom));
lineNoSord = checkNull(genericUtility.getColumnValue("line_no__sord", dom));
itemCode = checkNull(genericUtility.getColumnValue("item_code", dom));
System.out.println(" saleOrder ["+saleOrder+"] lot no ["+lotNo+"] itemCode["+itemCode+"]");
String getDataSql =" SELECT SORDER.CUST_CODE, CUSTOMER.CUST_NAME,SORDDET.LINE_NO, "
+"SORDER.SALE_ORDER,SORDER.DUE_DATE,SORDITEM.ITEM_CODE,"
+"ITEM.DESCR,SORDITEM.QUANTITY,"
+"(SORDITEM.QUANTITY - SORDITEM.QTY_DESP - SORDITEM.QTY_ALLOC) PENDING_QUANTITY,"
+"SORDITEM.QTY_ALLOC,SORDDET.PACK_INSTR,"
+"SORDER.SITE_CODE,SORDITEM.EXP_LEV, "
+"SORDER.PART_QTY AS PART_QTY, CUSTOMER.SINGLE_LOT AS SINGLE_LOT, SORDITEM.MIN_SHELF_LIFE AS MIN_SHELF_LIFE "//Gulzar 5/13/2012
//Chnged by Rohan 0n 22/06/12
//Changed by sumit 20/08/12 getting column data start.
//+",SORDER.ALLOC_FLAG AS ALLOC_FLAG "
//+"FROM SORDDET,SORDER,SORDITEM,CUSTOMER,ITEM "
+" ,SORDER.ALLOC_FLAG AS ALLOC_FLAG , WAVE_TYPE.MASTER_PACK_ALLOW , WAVE_TYPE.ACTIVE_PICK_ALLOW , WAVE_TYPE.STOCK_TO_DOCK_ALLOW "
+"FROM SORDDET,SORDER,SORDITEM,CUSTOMER,ITEM , WAVE_TYPE "
//Changed by sumit 20/08/12 getting column data end.
+"WHERE ( SORDER.SALE_ORDER = SORDDET.SALE_ORDER ) AND "
+"( SORDITEM.SALE_ORDER = SORDER.SALE_ORDER ) AND "
+"( SORDDET.LINE_NO = SORDITEM.LINE_NO ) AND "
+"( SORDITEM.ITEM_CODE = ITEM.ITEM_CODE ) AND "
+"( SORDER.CUST_CODE = CUSTOMER.CUST_CODE ) AND "
+"( SORDDET.SITE_CODE = SORDITEM.SITE_CODE ) AND "
//Changed by sumit on 20/08/12 join customer with wave_type
+"( CUSTOMER.WAVE_TYPE = WAVE_TYPE.WAVE_TYPE(+)) AND "
//+" SORDER.SITE_CODE = ? AND "
+" SORDER.SALE_ORDER = ? "
+" AND SORDITEM.LINE_NO = ? "
+"AND CASE WHEN SORDDET.STATUS IS NULL THEN 'P' ELSE SORDDET.STATUS end <> 'C' "
+"AND CASE WHEN SORDER.STATUS IS NULL THEN 'P' ELSE SORDER.STATUS end = 'P' "
//Changed by sumit on 12/09/12 considering hold_flag from sorddet
+" AND CASE WHEN SORDDET.HOLD_FLAG IS NULL THEN 'N' ELSE SORDDET.HOLD_FLAG end <> 'Y'"
//Chnaged by Rohan on 11/07/12 revert Changes of Manual Stock Allocation
//Changed by Rohan on 22/06/12
//+"AND SORDITEM.QUANTITY - SORDITEM.QTY_DESP - SORDITEM.QTY_ALLOC > 0 "
//+"AND (SORDITEM.QUANTITY - SORDITEM.QTY_DESP - SORDITEM.QTY_ALLOC > 0 OR SORDER.ALLOC_FLAG='M' )"
//Changed by sumit on 13/08/12 as per manual stock allocation start.
//+"AND SORDITEM.QUANTITY - SORDITEM.QTY_DESP - SORDITEM.QTY_ALLOC > 0 "
+" AND ((SORDITEM.QUANTITY - SORDITEM.QTY_DESP - SORDITEM.QTY_ALLOC > 0 ) "
+" OR (FN_CHECK_MANUAL_STOCK_ALLOC(SORDER.SALE_ORDER, SORDDET.LINE_NO) = 0 ) )"
+"AND SORDITEM.LINE_TYPE = 'I'";
pstmt = conn.prepareStatement(getDataSql);
pstmt.setString(1, saleOrder);
pstmt.setString(2, lineNoSord);
rs = pstmt.executeQuery();
if( rs.next())
{
singleLot = rs.getString("SINGLE_LOT");
minSelfLife = rs.getInt("MIN_SHELF_LIFE");
pendingQty = rs.getInt("PENDING_QUANTITY");
}
System.out.println(" singleLot ["+singleLot+"] minSelfLife ["+minSelfLife+"] pendingQty ["+pendingQty+"]");
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
resrvLoc = discommon.getDisparams("999999","RESERV_LOCATION",conn);
casePickLoc = discommon.getDisparams("999999","CASE_PICK_INVSTAT",conn);
activePickLoc = discommon.getDisparams("999999","ACTIVE_PICK_INVSTAT",conn);
deepStoreLoc = discommon.getDisparams("999999","DEEP_STORE_INVSTAT",conn);
partialResrvLoc = discommon.getDisparams("999999","PRSRV_INVSTAT",conn);
System.out.println("CASE_PICK_INVSTAT"+casePickLoc+"ACTIVE_PICK_INVSTAT"+activePickLoc+"RESERV_LOCATION"+resrvLoc+"PARTIAL RESERVE LOC["+partialResrvLoc+"]");
/*sSQL = "SELECT STOCK.LOT_NO,STOCK.LOT_SL,"
+"STOCK.LOC_CODE, "
+"STOCK.UNIT, "
+"(STOCK.QUANTITY - STOCK.ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END)) AS QTY_AVAIL_ALLOC ,"
+"STOCK.GRADE,STOCK.EXP_DATE,STOCK.CONV__QTY_STDUOM,STOCK.QUANTITY, "
//Changed By Pragyan
// +"STOCK.MFG_DATE,STOCK.SITE_CODE__MFG "
+"STOCK.MFG_DATE,STOCK.SITE_CODE__MFG, "
+"STOCK.NO_ART,INVSTAT.INV_STAT,ITEM.LOC_TYPE__PARENT,ITEM.LOC_TYPE,ITEM.LOC_ZONE__PREF " //Changes done by chandni 08-06-12(instead of loc_type, loc_type__parent should be selected)
+"FROM STOCK,ITEM,LOCATION,INVSTAT "
+"WHERE (ITEM.ITEM_CODE = STOCK.ITEM_CODE) "
+"AND (LOCATION.LOC_CODE = STOCK.LOC_CODE ) "
+"AND (LOCATION.INV_STAT = INVSTAT.INV_STAT) "
+"AND INVSTAT.AVAILABLE = 'Y' "
+"AND STOCK.ITEM_CODE = ? AND STOCK.SITE_CODE = ? "
+"AND (STOCK.QUANTITY - STOCK.ALLOC_QTY - CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END) > 0 " // 25/06/12 manoharan
+"AND (MONTHS_BETWEEN(TO_DATE(STOCK.EXP_DATE),SYSDATE) > ? ) " ;
//+"AND NOT EXISTS (SELECT 1 FROM INV_RESTR I WHERE I.INV_STAT = INVSTAT.INV_STAT AND I.REF_SER = 'S-DSP' ) ";
*/
/*String sSingleLotSql = "SELECT SUM(STOCK.QUANTITY - STOCK.ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END ) ), "
+"SUM(STOCK.HOLD_QTY ) "
+"FROM STOCK,ITEM,LOCATION,INVSTAT "
+"WHERE (ITEM.ITEM_CODE = STOCK.ITEM_CODE) "
+"AND (LOCATION.LOC_CODE = STOCK.LOC_CODE ) "
+"AND (LOCATION.INV_STAT = INVSTAT.INV_STAT) "
+"AND INVSTAT.AVAILABLE = ? "
+"AND STOCK.ITEM_CODE = ? "
+"AND STOCK.SITE_CODE = ? "
+"AND STOCK.LOT_NO IN (SELECT LOT_NO FROM STOCK WHERE ITEM_CODE =? AND SITE_CODE =? "
+"GROUP BY LOT_NO HAVING SUM(QUANTITY - ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END) ) >= ?) "
+"AND (MONTHS_BETWEEN(TO_DATE(STOCK.EXP_DATE),SYSDATE) > ? ) ";*/
sSingleLotSql = "SELECT STOCK.LOT_NO,STOCK.LOT_SL,"
+"STOCK.LOC_CODE, "
+"STOCK.UNIT, "
+"(STOCK.QUANTITY - STOCK.ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END)) AS QTY_AVAIL_ALLOC ,"
+"STOCK.GRADE,STOCK.EXP_DATE,STOCK.CONV__QTY_STDUOM,STOCK.QUANTITY, "
+"STOCK.MFG_DATE,STOCK.SITE_CODE__MFG, "
+"STOCK.NO_ART,INVSTAT.INV_STAT,ITEM.LOC_TYPE__PARENT,ITEM.LOC_TYPE,ITEM.LOC_ZONE__PREF,LOCATION.DESCR "
+"FROM STOCK,ITEM,LOCATION,INVSTAT "
+"WHERE (ITEM.ITEM_CODE = STOCK.ITEM_CODE) "
+"AND (LOCATION.LOC_CODE = STOCK.LOC_CODE ) "
+"AND (LOCATION.INV_STAT = INVSTAT.INV_STAT) "
+"AND INVSTAT.AVAILABLE = 'Y' "
+"AND STOCK.ITEM_CODE = ? AND STOCK.SITE_CODE = ? "
+"AND STOCK.LOT_NO IN (SELECT LOT_NO FROM STOCK WHERE ITEM_CODE =? AND SITE_CODE =? AND LOT_NO = ? "
+"GROUP BY LOT_NO HAVING SUM(QUANTITY - ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END) ) >= ?) "
+"AND (MONTHS_BETWEEN(TO_DATE(STOCK.EXP_DATE),SYSDATE) > ? ) ";
//+"AND NOT EXISTS (SELECT 1 FROM INV_RESTR I WHERE I.INV_STAT = INVSTAT.INV_STAT AND I.REF_SER = 'S-DSP' ) ";
HashMap itemVolMap = getItemVoumeMap(itemCode, "", conn);
double packSize = (Double)itemVolMap.get("PACK_SIZE");
double itemWeight = (Double)itemVolMap.get("ITEM_WEIGHT");
System.out.println("itemWeight =["+itemWeight+"] packSize ["+packSize+"]");
if((pendingQty % packSize) > 0)
{
isActives = true;
orderByStkStr = "AND LOCATION.INV_STAT IN(?,?,?,?,?) ORDER BY STOCK.EXP_DATE,LOCATION.INV_STAT, STOCK.LOC_CODE ";
}
else
{
isActives = false;
orderByStkStr = "AND LOCATION.INV_STAT IN(?,?,?,?) ORDER BY STOCK.EXP_DATE, STOCK.LOC_CODE ";
}
/*if ( singleLot.trim().length() > 0 && singleLot.trim().equalsIgnoreCase("Y") )
{*/
//sSingleLotSql = sSingleLotSql + orderByStkStr;
/*pstmt = conn.prepareStatement(sSingleLotSql + orderByStkStr);
pstmt.setString(1,"Y");
pstmt.setString(2,itemCode);
pstmt.setString(3,siteCode);
pstmt.setString(4,lotNo);
//pstmt.setString(5,siteCode);
pstmt.setDouble(5,pendingQty);
pstmt.setInt(6,minSelfLife);
pstmt.setString(7,resrvLoc);
pstmt.setString(8,casePickLoc);
pstmt.setString(9,activePickLoc);
pstmt.setString(10,deepStoreLoc);
if(isActives)
{
pstmt.setString(11,partialResrvLoc);
}*/
pstmt = conn.prepareStatement(sSingleLotSql + orderByStkStr);
pstmt.setString(1,itemCode);
pstmt.setString(2,siteCode);
pstmt.setString(3,itemCode);
pstmt.setString(4,siteCode);
pstmt.setString(5,lotNo);
pstmt.setDouble(6,pendingQty);
pstmt.setInt(7,minSelfLife);
pstmt.setString(8,resrvLoc);
pstmt.setString(9,casePickLoc);
pstmt.setString(10,activePickLoc);
pstmt.setString(11,deepStoreLoc);
if(isActives)
{
pstmt.setString(12,partialResrvLoc);
}
rs = pstmt.executeQuery();
String lotSl = "";
locCode = "";
locDescr = "";
if( rs.next())
{
qtyAvail = rs.getDouble("QTY_AVAIL_ALLOC"); //quantity
lotSl = rs.getString("LOT_SL");
locCode = rs.getString("LOC_CODE");
locDescr = rs.getString("DESCR");
}
if(pendingQty < qtyAvail)
{
qtyAvail = pendingQty;
}
valueXmlString.append("<quantity>").append("<![CDATA[" + qtyAvail + "]]>").append("</quantity>");
valueXmlString.append("<lot_sl>").append("<![CDATA[" + lotSl + "]]>").append("</lot_sl>");
valueXmlString.append("<loc_code>").append("<![CDATA[" + locCode + "]]>").append("</loc_code>");
valueXmlString.append("<location_descr>").append("<![CDATA[" + locDescr + "]]>").append("</location_descr>");
if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
} }
} }
else if(currentColumn.trim().equalsIgnoreCase("quantity"))
{
String quantityset = checkNull(genericUtility.getColumnValue("quantity", dom));
System.out.println("Set Quantity ["+quantityset+"]");
valueXmlString.append("<quantity>").append("<![CDATA[" + quantityset + "]]>").append("</quantity>");
}
valueXmlString.append("</Detail2>"); valueXmlString.append("</Detail2>");
break; break;
...@@ -1024,5 +1272,100 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto ...@@ -1024,5 +1272,100 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
} }
//Changed by sumit on 21/08/12 checking duplicate deatil end. //Changed by sumit on 21/08/12 checking duplicate deatil end.
private HashMap getItemVoumeMap(String itemCode,String lotNo,Connection con)throws Exception
{
double packSize = 0,itemSize = 0,lotSize = 0;
PreparedStatement pstmt = null;
String sql="";
ResultSet rs = null;
double itmLen = 0,itmWidth = 0,itmHeight = 0,itemWeight = 0,lotLen = 0 ,lotHeight = 0,lotWidth = 0,lotWeight = 0;
HashMap dataVolumeMap = new HashMap();
try {
sql = "SELECT I.LENGTH ITEM_LEN,I.WIDTH ITEM_WID,I.HEIGHT ITEM_HEIGHT,I.GROSS_WEIGHT ITEM_WEIGHT,"
+" L.LENGTH LITEM_LEN,L.WIDTH LITEM_WID,L.HEIGHT LITEM_HEIGHT,L.SHIPPER_SIZE SHIPSIZE,L.GROSS_WEIGHT LOT_WEIGHT FROM"
+" ITEM I,ITEM_LOT_PACKSIZE L"
+" WHERE I.ITEM_CODE = L.ITEM_CODE"
+" AND L.LOT_NO__FROM <= ? AND L.LOT_NO__TO >= ?"
+" AND I.ITEM_CODE = ?";
pstmt = con.prepareStatement(sql);
if(lotNo != null && lotNo.length() > 0)
{
pstmt.setString(1, lotNo);
pstmt.setString(2, lotNo);
}
else
{
pstmt.setString(1, "00");
pstmt.setString(2, "ZZ");
}
pstmt.setString(3, itemCode);
rs = pstmt.executeQuery();
if(rs.next())
{
itmLen = rs.getDouble("ITEM_LEN");
itmWidth = rs.getDouble("ITEM_WID");
itmHeight = rs.getDouble("ITEM_HEIGHT");
itemWeight = rs.getDouble("ITEM_WEIGHT");
lotLen = rs.getDouble("LITEM_LEN");
lotWidth = rs.getDouble("LITEM_WID");
lotHeight = rs.getDouble("LITEM_HEIGHT");
packSize = rs.getDouble("SHIPSIZE");
lotWeight = rs.getDouble("LOT_WEIGHT");
}
//packSize = (lotHeight * lotWidth * lotLen)/(itmLen * itmWidth * itmHeight);
/*itemSize = Math.floor(itmLen * itmWidth * itmHeight);
lotSize = Math.floor((lotHeight * lotWidth * lotLen));*/
itemSize = itmLen * itmWidth * itmHeight;
lotSize = lotHeight * lotWidth * lotLen;
dataVolumeMap.put("PACK_SIZE", packSize);
dataVolumeMap.put("ITEM_SIZE", itemSize);
dataVolumeMap.put("LOT_SIZE", lotSize);
dataVolumeMap.put("ITEM_WEIGHT", itemWeight);
dataVolumeMap.put("PACK_WEIGHT", lotWeight);
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
} catch (Exception e) {
// TODO: handle exception
throw e;
}
finally
{
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
if(rs != null)
{
rs.close();
rs = null;
}
}
return dataVolumeMap;
}
} }
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