Commit b35f3790 authored by bmarathe's avatar bmarathe

UPDATE BY SUMIT ON 07/01/13 SCM ISSUE TARCKER POINT NO 71


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@92488 ce508802-f39f-4f6c-b175-0d175dae99d5
parent ec01696b
......@@ -54,7 +54,7 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
}
catch(Exception e)
{
System.out.println("Exception :Sorder :actionHandler(String xmlString):" + e.getMessage() + ":");
System.out.println("Exception :SordAllocDef :actionHandler(String xmlString):" + e.getMessage() + ":");
e.printStackTrace();
throw new ITMException(e);
}
......@@ -70,7 +70,7 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
String sql = "";
String resrvLoc = "",casePickLoc = "", activePickLoc = "", deepStoreLoc = "", partialResrvLoc = "";
boolean isActives = false;
String orderByStkStr = "";
String orderByStkStr = "",updateFlag = "";
Connection conn = null;
PreparedStatement pstmt = null;
......@@ -78,6 +78,7 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
String detCnt = "0";
int minSelfLife = 0;
NodeList parentNodeList = null;
Node parentNode = null;
int parentNodeListLength = 0;
double quantity = 0.0, pendingQty = 0.0, qtyAvail = 0.0,quantityP = 0.0,quantityPnd = 0.0;
......@@ -88,6 +89,7 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
try
{
DistCommon discommon = new DistCommon();
System.out.println(" sys sys xtraParams ["+xtraParams+"]");
detCnt = genericUtility.getValueFromXTRA_PARAMS(xtraParams,"detCnt"); //Will be Uncommented later - Jiten
System.out.println(" sumit detCnt ["+detCnt+"]");
conn = connDriver.getConnectDB("DriverITM");
......@@ -103,6 +105,13 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
System.out.println("parentNodeListLength*********sumit******************************"+parentNodeListLength);
for(int row = 0; row < parentNodeListLength; row++)
{
parentNode = parentNodeList.item(row);
updateFlag = getAttribValue(parentNode,"attribute", "updateFlag"); //(parentNode, "attribute", "status"));
//System.out.println(" updateFlag ---- > "+updateFlag);
if( !"D".equalsIgnoreCase(updateFlag) && !"N".equalsIgnoreCase(updateFlag) && !"E".equalsIgnoreCase(updateFlag))
{
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));
......@@ -284,6 +293,7 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
//valueXmlString.append("</Root>\r\n");
}
}
valueXmlString.append("</Root>\r\n");
System.out.println("valueXmlString["+valueXmlString.toString()+"]");
}
......@@ -299,12 +309,12 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
}
catch(SQLException e)
{
System.out.println("Exception : Sorder : actionVoucher " +e.getMessage());
System.out.println("Exception : SordAllocDef : actionVoucher " +e.getMessage());
throw new ITMException(e);
}
catch(Exception e)
{
System.out.println("Exception : Sorder : actionHandler " +e.getMessage());
System.out.println("Exception : SordAllocDef : actionHandler " +e.getMessage());
throw new ITMException(e);
}
finally
......@@ -413,4 +423,53 @@ public class SordAllocDef extends ActionHandlerEJB implements SordAllocDefLocal,
return dataVolumeMap;
}
private String getAttribValue(Node detailNode, String nodeName, String attribStr)
{
String attribValue = "";
try
{
String domStr = GenericUtility.getInstance().serializeDom(detailNode);
Document dom = GenericUtility.getInstance().parseString(domStr);
if( dom != null /*&& dom.getAttributes() != null*/)
{
Node attributeNode = dom.getElementsByTagName( nodeName ).item(0);
attribValue = getAttribValue(attributeNode, attribStr);
}
}
catch(Exception e)
{
System.out.println("Exception : getAttribValue :" + e.getMessage());
}
return attribValue;
}
private String getAttribValue(Node detailNode, String attribStr)
{
String attribValue = "";
try
{
if( detailNode != null && detailNode.getAttributes() != null)
{
Node attribNode = detailNode.getAttributes().getNamedItem( attribStr );
if( attribNode != null )
{
attribValue = checkNull( attribNode.getNodeValue() );
}
}
}
catch(Exception e)
{
System.out.println("Exception : getAttribValue :" + e.getMessage());
}
return attribValue;
}
private String checkNull(String str)
{
if( str == null)
{
str = "";
}
return str;
}
}
\ No newline at end of file
......@@ -887,11 +887,31 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
rs = null;
pstmt.close();
pstmt = null;
valueXmlString.append("<pending_qty>").append("<![CDATA[" + pendingQty + "]]>").append("</pending_qty>");
valueXmlString.append("<item_code>").append("<![CDATA[" + itemCode + "]]>").append("</item_code>");
itemDescr = findValue(conn, "descr" ,"item", "item_code", itemCode);
valueXmlString.append("<item_descr>").append("<![CDATA[" + itemDescr + "]]>").append("</item_descr>");
valueXmlString.append("<exp_lev>").append("<![CDATA[" + expLev + "]]>").append("</exp_lev>");
//Changed by sumit on 07/01/13 start
Map stockDeatil = new HashMap();
stockDeatil = getStockDetail(siteCode, saleOrder, lineNoSord, conn, itemCode);
/**
* stockDetail.put("qtyAvail", qtyAvail);
* stockDetail.put("lotNo", lotNo);
stockDetail.put("lotSl", lotSl);
stockDetail.put("locCode", locCode);
stockDetail.put("locDescr", locDescr);
*/
System.out.println(" test "+stockDeatil.get("locCode"));
valueXmlString.append("<quantity>").append("<![CDATA[" + stockDeatil.get("qtyAvail") + "]]>").append("</quantity>");
valueXmlString.append("<lot_no>").append("<![CDATA[" + stockDeatil.get("lotNo") + "]]>").append("</lot_no>");
valueXmlString.append("<lot_sl>").append("<![CDATA[" + stockDeatil.get("lotSl") + "]]>").append("</lot_sl>");
valueXmlString.append("<loc_code>").append("<![CDATA[" + stockDeatil.get("locCode") + "]]>").append("</loc_code>");
valueXmlString.append("<location_descr>").append("<![CDATA[" + stockDeatil.get("locDescr") + "]]>").append("</location_descr>");
//Changed by sumit on 07/01/13 end
}
}
else if(currentColumn.trim().equalsIgnoreCase("lot_no"))
......@@ -1244,6 +1264,7 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
String domID = "";
Map detailMap = new HashMap();
boolean isDupDetail = false;
String updateFlag = "";// added by sumit on 07/01/13
try {
parentNodeList = allDom.getElementsByTagName("Detail2");
......@@ -1257,12 +1278,22 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
for (int col = 0; col < childNodeList.getLength(); col++) {
childNode = childNodeList.item(col);
domID = parentNode.getAttributes().getNamedItem("domID").getNodeValue();
if (childNode.getNodeType() == childNode.ELEMENT_NODE)
{
childNodeName = childNode.getNodeName();
//domID = parentNode.getAttributes().getNamedItem("domID").getNodeValue();
//System.out.println("=======--======== ["+domID+"]");
//System.out.println("childNodeNamechildNodeName ** ["+childNodeName+"]");
if ( "attribute".equalsIgnoreCase( childNodeName ) )
{
//System.out.println(" natribute ");
updateFlag = childNode.getAttributes().getNamedItem("updateFlag").getNodeValue();
System.out.println(" updateFlag suit ["+updateFlag+"]");
}
if( !"D".equalsIgnoreCase(updateFlag))
{
if ("item_code".equalsIgnoreCase(childNodeName))
{
itemCode = childNode.getFirstChild().getNodeValue().trim();
......@@ -1287,6 +1318,7 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
tempMap.put("lot_sl", childNode.getFirstChild().getNodeValue().trim());*/
}
}
}
}
/*tempList.add(tempMap);
......@@ -1421,6 +1453,7 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
String sql = "";
PreparedStatement pstmt = null;
ResultSet rs = null;
String updateFlag = "";//added by sumit on 07/01/13
try {
parentNodeList = allDom.getElementsByTagName("Detail2");
......@@ -1434,11 +1467,19 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
for (int col = 0; col < childNodeList.getLength(); col++)
{
childNode = childNodeList.item(col);
if (childNode.getNodeType() == childNode.ELEMENT_NODE)
{
childNodeName = childNode.getNodeName();
System.out.println("childNodeNamechildNodeName ** ["+childNodeName+"]");
if ( "attribute".equalsIgnoreCase( childNodeName ) )
{
//System.out.println(" natribute ");
updateFlag = childNode.getAttributes().getNamedItem("updateFlag").getNodeValue();
System.out.println(" updateFlag suit ["+updateFlag+"]");
}
if( !"D".equalsIgnoreCase(updateFlag))
{
if ("quantity".equalsIgnoreCase(childNodeName))
{
//arryList.add(childNode.getFirstChild().getNodeValue().trim());
......@@ -1448,6 +1489,7 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
}
}
}
}
sql = "SELECT (QUANTITY - QTY_ALLOC) AS AVILQTY FROM SORDITEM WHERE SALE_ORDER = ? AND LINE_NO = ?";
pstmt = conn.prepareStatement(sql);
......@@ -1477,4 +1519,198 @@ public class StockAllocIc extends ValidatorEJB implements StockAllocIcLocal, Sto
return result;
}
//Changed by sumit on 21/12/12 quantity checking in all present deatil end.
//Changed by sumit on 07/03/13 getting value after sale order and line_no_sord start
private Map getStockDetail(String siteCode, String saleOrder, String lineNoSord, Connection conn, String itemCode) throws ITMException
{
String singleLot = "";
String resrvLoc = "";
String casePickLoc = "", activePickLoc = "", deepStoreLoc = "", partialResrvLoc = "";
String locCode = "";
String locDescr = "";
String lotNo = "";
String sSingleLotSql = "";
String orderByStkStr = "";
int minSelfLife = 0, pendingQty = 0;
double qtyAvail = 0.0;
boolean isActives = false;
PreparedStatement pstmt = null;
ResultSet rs = null;
Map stockDetail = new HashMap();
DistCommon discommon = new DistCommon();
try
{
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
+" ,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+"]");
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.QUANTITY - STOCK.ALLOC_QTY - (CASE WHEN STOCK.HOLD_QTY IS NULL THEN 0 ELSE STOCK.HOLD_QTY END) > 0) "
//+"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 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) ) > 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.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(5,minSelfLife);
pstmt.setString(6,resrvLoc);
pstmt.setString(7,casePickLoc);
pstmt.setString(8,activePickLoc);
pstmt.setString(9,deepStoreLoc);
if(isActives)
{
pstmt.setString(10,partialResrvLoc);
}
rs = pstmt.executeQuery();
String lotSl = "";
locCode = "";
locDescr = "";
if( rs.next())
{
qtyAvail = rs.getDouble("QTY_AVAIL_ALLOC"); //quantity
lotNo = rs.getString("LOT_NO");
lotSl = rs.getString("LOT_SL");
locCode = rs.getString("LOC_CODE");
locDescr = rs.getString("DESCR");
}
rs.close(); rs = null;
pstmt.close(); pstmt = null;
if(pendingQty < qtyAvail)
{
qtyAvail = pendingQty;
}
stockDetail.put("qtyAvail", qtyAvail);
stockDetail.put("lotNo", lotNo);
stockDetail.put("lotSl", lotSl);
stockDetail.put("locCode", locCode);
stockDetail.put("locDescr", locDescr);
//System.out.println(" stock detail :->"+stockDetail);
}
catch(Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if(rs != null)
{
rs.close(); rs = null;
}
if( pstmt != null)
{
pstmt.close(); pstmt = null;
}
}
catch(Exception ex)
{
ex.printStackTrace();
throw new ITMException(ex);
}
}
return stockDetail;
}
}
......@@ -94,7 +94,7 @@ public class StockAllocPrc extends ActionHandlerEJB implements StockAllocPrcLoca
pstmt1.clearParameters();
System.out.println("["+rs.getDouble(3)+"] SUM(QUANTITY) in sord_alloc_det and avilqty ["+availQty+"]");
if( rs.getDouble(3) < availQty )
if( rs.getDouble(3) <= availQty )
{
errString = this.sorderAllocate(tranId,xtraParams,conn);
}
......
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