Commit 337d8f21 authored by prane's avatar prane

Mesmer- De-allocation of end customer stock on Posting(to deallocate stockist...

Mesmer- De-allocation of end customer stock on Posting(to deallocate stockist stock chargable/free product)

git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@210939 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 256689aa
...@@ -2092,8 +2092,10 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -2092,8 +2092,10 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
int updSordAllDetCnt=0; int updSordAllDetCnt=0;
String createLog=null,itemReasCode=""; String createLog=null,itemReasCode="";
String allocRef="";// added by nandkumar Gadkari on 17/04/19 String allocRef="";// added by nandkumar Gadkari on 17/04/19
//Pavan Rane 01nov19 start
String tranIdAlc="", lineNoAlc="",siteCodeAlc="", itemCodeAlc="", locCodeAlc="", lotNoAlc="",lotSlAlc="",freeProductLoc="";
double alloCnt = 0.0, sordAllocQty = 0.0, availStkQty = 0;
//Pavan Rane 01nov19 end
try try
{ {
//System.out.println("postOrder business logic starts........"); //System.out.println("postOrder business logic starts........");
...@@ -2107,7 +2109,7 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -2107,7 +2109,7 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
chgUser=userId; chgUser=userId;
chgTerm=termId; chgTerm=termId;
InvAllocTraceBean invBean = new InvAllocTraceBean(); //added by nandkumar gadkari on 24/01/19 InvAllocTraceBean invBean = new InvAllocTraceBean(); //added by nandkumar gadkari on 24/01/19
freeProductLoc = discommon.getDisparams("999999", "FREE_PRODUCT_LOCATION", conn);//Pavan Rane 01nov19 [to get free product location]
sqlstatement = "select sale_order, part_qty, price_list, price_list__clg,status,loc_group,cust_code ,order_type ,price_list__disc,pl_date,order_date,cust_code,site_code ,state_code__dlv, count_code__dlv " ; sqlstatement = "select sale_order, part_qty, price_list, price_list__clg,status,loc_group,cust_code ,order_type ,price_list__disc,pl_date,order_date,cust_code,site_code ,state_code__dlv, count_code__dlv " ;
...@@ -2539,7 +2541,187 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -2539,7 +2541,187 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
logMsg="";//Added by nandkumar gadkari on 02/05/19 logMsg="";//Added by nandkumar gadkari on 02/05/19
if(stockOpt != 0)// Condition Added by Nandkumar Gadkari on 27/06/18 for Non Inventory Item. if(stockOpt != 0)// Condition Added by Nandkumar Gadkari on 27/06/18 for Non Inventory Item.
{ {
//Pavan Rane 01nov19 start [to deallocate stockist stock chargable/free product as per sord_alloc]
tranIdAlc=""; lineNoAlc=""; siteCodeAlc=""; itemCodeAlc=""; locCodeAlc=""; lotNoAlc="";lotSlAlc="";
alloCnt = 0.0; sordAllocQty = 0.0; availStkQty = 0;
sql = "select count(*) from sord_alloc a, sord_alloc_det b where "
+ " a.tran_id = b.tran_id"
+ " and a.cust_code = ?"
+ " and B.item_code = ?"
+ " and A.site_code= ? "
+ " and b.sale_order is null"
+ " and b.quantity - b.dealloc_qty > 0";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,custCode);
pstmt.setString(2,itemCode);
pstmt.setString(3,siteCode);
rs = pstmt.executeQuery();
if(rs.next())
{
alloCnt = rs.getInt(1);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
if(alloCnt > 0)
{
sql = "select a.tran_id, b.line_no, b.site_code, b.item_code, b.loc_code, b.lot_no, b.lot_sl,b.quantity - b.dealloc_qty as quantity"
+ " from sord_alloc a, sord_alloc_det b where "
+ " a.tran_id = b.tran_id"
+ " and a.cust_code = ?"
+ " and B.item_code = ?"
+ " and b.site_code = ? ";
if(!"C".equalsIgnoreCase(nature)) //for nature !C to pick up stock as per FreePorductLoc loc_code(partial case).
{
sql = sql + " and b.loc_code = ? ";
}else {
sql = sql + " and b.loc_code <> ? ";
}
sql = sql + " and b.sale_order is null";
sql = sql + " and b.quantity - b.dealloc_qty > 0";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,custCode);
pstmt.setString(2,itemCode);
pstmt.setString(3,siteCode);
pstmt.setString(4,freeProductLoc);
rs = pstmt.executeQuery();
if(rs.next())
{
tranIdAlc = rs.getString("tran_id");
lineNoAlc = rs.getString("line_no");
siteCodeAlc = rs.getString("site_code");
itemCodeAlc = rs.getString("item_code");
locCodeAlc = rs.getString("loc_code");
lotNoAlc = rs.getString("lot_no");
lotSlAlc = rs.getString("lot_sl");
sordAllocQty = rs.getDouble("quantity");
HashMap invAllocTraceMap = new HashMap();
if(sordAllocQty > 0)
{
//System.out.println("before invTrace["+sordAllocQty+"] sordItmQty["+sordItmQty+"]");
if(sordAllocQty > sordItmQty) //to deallocate qty as per sorditem qty(if partial quantity)
{
sordAllocQty = sordItmQty;
}
System.out.println("after invTrace["+sordAllocQty+"] sordItmQty["+sordItmQty+"]");
invAllocTraceMap.put("ref_ser","S-ALC");
invAllocTraceMap.put("ref_id",tranIdAlc);
invAllocTraceMap.put("ref_line",lineNoAlc);
invAllocTraceMap.put("site_code",siteCodeAlc);
invAllocTraceMap.put("item_code",itemCodeAlc);
invAllocTraceMap.put("loc_code",locCodeAlc);
invAllocTraceMap.put("lot_no",lotNoAlc);
invAllocTraceMap.put("lot_sl",lotSlAlc);
invAllocTraceMap.put("alloc_qty",sordAllocQty *-1);
invAllocTraceMap.put("chg_user",userId);
invAllocTraceMap.put("chg_term",termId);
invAllocTraceMap.put("chg_win","W_SORDALLOC");
logMsg= tranIdAlc +" "+lineNoAlc + " "+"De-Allocation of stock from PostOrderProcess";
invAllocTraceMap.put("alloc_ref",logMsg);
merrcode = invBean.updateInvallocTrace(invAllocTraceMap,conn);
if(merrcode != null && merrcode.trim().length() > 0)
{
merrcode = itmDBAccessEJB.getErrorString("VTSTKNOAVL",merrcode,"","",conn);
return merrcode;
}
else
{
sql = "select alloc_ref from stock where item_code= ? and site_code= ? and lot_no= ? and loc_code=? and lot_sl=? ";
pstmt2 = conn.prepareStatement(sql);
pstmt2.setString(1,itemCodeAlc);
pstmt2.setString(2,siteCodeAlc);
pstmt2.setString(3,lotNoAlc);
pstmt2.setString(4,locCodeAlc);
pstmt2.setString(5,lotSlAlc);
rs2 = pstmt2.executeQuery();
if(rs2.next())
{
allocRef = rs2.getString(1);
}
rs2.close();
rs2 = null;
pstmt2.close();
pstmt2 = null;
System.out.println("allocRef["+allocRef+"]");
System.out.println("allocReflog["+logMsg+"]");
if(!allocRef.equalsIgnoreCase(logMsg))
{
merrcode = itmDBAccessEJB.getErrorString("VTSTKNOAVL",merrcode,"","",conn);
return merrcode;
}
logMsg= saleOrder + "\t" + itemCode + "\t"+locCode + "\t" +lotNo+"\t"+ lineNo +"\t"+"Inserted data in INVALLOC_TRACE";
strToWrite = strToWrite +createPostLog(saleOrder, itemCode, locCode, lotNo, lineNo, logMsg);
// To get stockist stock detail to update on stockbeans for sordalloc table
sql = " select a.lot_no, a.lot_sl, a.quantity , a.alloc_qty,a.hold_qty, ";
sql = sql + " a.exp_date, a.grade, a.mfg_date, a.site_code__mfg, a.loc_code, a.hold_qty ";
sql = sql + "from stock a, invstat b, location c ";
sql = sql + " where c.inv_stat = b.inv_stat";
sql = sql + " and c.loc_code = a.loc_code ";
sql = sql + " and a.loc_code = ? ";
sql = sql + " and a.lot_no = ? ";
sql = sql + " and a.item_code = ? ";
sql = sql + " and a.site_code = ? ";
sql = sql + " and a.quantity - (case when a.alloc_qty is null then 0 else a.alloc_qty end ) > 0 ";
sql = sql + " and b.available = 'Y' ";
if(lotSldom.trim().length() > 0) {
sql = sql + " and a.lot_sl = '"+lotSldom.trim()+"'";
}
if(locGroup.trim().length() > 0) {
sql = sql + " and c.loc_group = '"+locGroup.trim()+"'";
}
sql = sql + " order by a.partial_used, a.exp_date, a.lot_no, a.lot_sl ";
pstmt5 = conn.prepareStatement(sql);
pstmt5.setString(1,locCodeAlc);
pstmt5.setString(2,lotNoAlc);
pstmt5.setString(3,itemCode);
pstmt5.setString(4,siteCode);
rs5 = pstmt5.executeQuery();
if(rs5.next())
{
availStkQty = rs5.getDouble("quantity") - rs5.getDouble("alloc_qty");
StockBean stockBean = new StockBean();
stockBean.setLotNo(rs5.getString("lot_no"));
stockBean.setLotSl(rs5.getString("lot_sl"));
stockBean.setStockQty(rs5.getDouble("quantity"));//stockBean.setStockQty(sordAllocQty);
stockBean.setAllocQty(rs5.getDouble("alloc_qty"));
stockBean.setHoldQty(rs5.getDouble("hold_qty"));
stockBean.setExpDate(rs5.getTimestamp("exp_date"));
stockBean.setGrade(rs5.getString("grade"));
stockBean.setMfgDate(rs5.getTimestamp("mfg_date"));
stockBean.setSiteCodeMfg(rs5.getString("site_code__mfg"));
stockBean.setLocCode(rs5.getString("loc_code"));
stockBean.setStockQtyTot(availStkQty);
stockBean.setSordItemBean(sordItemBean);
stockList.add(stockBean);
}
if(tranIdAlc != null && tranIdAlc.trim().length() > 0)
{
if(sordAllocQty > 0)
{
sql = " update sord_alloc_det set dealloc_qty = dealloc_qty + ? where tran_id = ? and line_no = ? ";
pstmt2 = conn.prepareStatement(sql);
pstmt2.setDouble(1,sordAllocQty);
pstmt2.setString(2,tranIdAlc);
pstmt2.setString(3,lineNoAlc);
pstmt2.executeUpdate();
pstmt2.close();
pstmt2 = null;
}
}
}
}//end of if(sordAllocQty > 0)
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
}//if(alloCnt > 0)
System.out.println("before stock loop::> alloCnt["+alloCnt+"] sordItmQty["+sordItmQty+"] sordAllocQty["+sordAllocQty+"]");
if(sordItmQty > sordAllocQty) //If allocated stock qty is not sufficient then check stock for remaining qty]
{
//Pavan Rane 01nov19 End [to deallocate stockist stock chargable/free product]
sql = " select sum(a.quantity - case when a.alloc_qty is null then 0 else a.alloc_qty end - case when a.hold_qty is null then 0 else a.hold_qty end ) as quantity "; sql = " select sum(a.quantity - case when a.alloc_qty is null then 0 else a.alloc_qty end - case when a.hold_qty is null then 0 else a.hold_qty end ) as quantity ";
sql = sql + "from stock a, invstat b, location c "; sql = sql + "from stock a, invstat b, location c ";
sql = sql + " where c.inv_stat = b.inv_stat"; sql = sql + " where c.inv_stat = b.inv_stat";
...@@ -2570,11 +2752,17 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -2570,11 +2752,17 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
rs = null; rs = null;
pstmt.close(); pstmt.close();
pstmt = null; pstmt = null;
System.out.println("stockQtyTot >>"+stockQtyTot); System.out.println("stockQtyTot >>"+stockQtyTot);
//double allocQty1=0.0; //Pavan Rane 01nov19 start [If allocated stock qty is not sufficient then check stock for remaining qty]
if(alloCnt > 0 && sordItmQty > sordAllocQty) //if(alloCnt > 0 && sordAllocQty <= 0)
{
stockQtyTot = stockQtyTot - sordAllocQty;
sordItmQty = sordItmQty - sordAllocQty;
System.out.println("2662:: after stockQtyTot["+stockQtyTot+"] sordItmQty["+sordItmQty+"] sordAllocQty["+sordAllocQty+"]");
}//Pavan Rane 01nov19 end [If allocated stock qty is not sufficient then check stock for remaining qty]
//double allocQty1=0.0;
sql = " select a.lot_no, a.lot_sl, a.quantity , a.alloc_qty,a.hold_qty, "; sql = " select a.lot_no, a.lot_sl, a.quantity , a.alloc_qty,a.hold_qty, ";
sql = sql + " a.exp_date, a.grade, a.mfg_date, a.site_code__mfg, a.loc_code, a.hold_qty "; sql = sql + " a.exp_date, a.grade, a.mfg_date, a.site_code__mfg, a.loc_code, a.hold_qty ";
//sql = sql + "from stock a, invstat b, location c"; //sql = sql + "from stock a, invstat b, location c";
...@@ -2660,7 +2848,6 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -2660,7 +2848,6 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
//stockList.add(stockBean); //stockList.add(stockBean);
System.out.println("After while setSordItemBean ["+stockBean+"]"); System.out.println("After while setSordItemBean ["+stockBean+"]");
/*} /*}
rs5.close(); rs5.close();
rs5 = null; rs5 = null;
...@@ -3959,6 +4146,16 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -3959,6 +4146,16 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
//}//end of if(stockOpt != 0) // commented by Nandkumar Gadkari on 27/06/18 for Non Inventory Item. //}//end of if(stockOpt != 0) // commented by Nandkumar Gadkari on 27/06/18 for Non Inventory Item.
//Pavan Rane 01nov19 start [to break stock loop if alloatced stock lot fulfill sorditem Quantity]
//(so that only stockBean having qty will added in stockList).
System.out.println("sordItmQty["+sordItemBean.getSordItmQty()+"] sordAllocQty["+sordAllocQty+"]availStkQty["+availStkQty+"]");
if(sordItemBean.getSordItmQty() > sordAllocQty && sordItemBean.getSordItmQty() < availStkQty)
{
stockTot = availStkQty; // to set avail stock to ;
System.out.println("sufficient stock quantity break!!!");
break;
}
//Pavan Rane 01nov19 End [to break stock loop if alloatced stock lot fulfill sorditem Quantity]
stockList.add(stockBean); stockList.add(stockBean);
System.out.println("lotNO>>"+lotNo+"lotSl >>"+lotSl); System.out.println("lotNO>>"+lotNo+"lotSl >>"+lotSl);
...@@ -3975,7 +4172,6 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -3975,7 +4172,6 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
itemCodeOld = itemCode; itemCodeOld = itemCode;
System.out.println("Replacing value"+lineNoOld+":"+saleOrderOld+":"+itemCodeOld); System.out.println("Replacing value"+lineNoOld+":"+saleOrderOld+":"+itemCodeOld);
//changes done by PavanR on 16/JAN/18 for scheme item[End] //changes done by PavanR on 16/JAN/18 for scheme item[End]
if(stockTot >= sordItmQty) if(stockTot >= sordItmQty)
{ {
System.out.println("total stock quantity greater than sorder quantity!!!"); System.out.println("total stock quantity greater than sorder quantity!!!");
...@@ -3989,7 +4185,7 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -3989,7 +4185,7 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
pstmt5.close(); pstmt5.close();
pstmt5 = null; pstmt5 = null;
// changes by arun start 30-11-17 // changes by arun start 30-11-17
}// end of if(alloCnt > 0 && sordItmQty <= sordAllocQty) //{
}//end of if(stockOpt != 0) }//end of if(stockOpt != 0)
else // else condition by Nandkumar Gadkari on 27/06/18 for Non Inventory Item. else // else condition by Nandkumar Gadkari on 27/06/18 for Non Inventory Item.
{ {
...@@ -4136,8 +4332,10 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca ...@@ -4136,8 +4332,10 @@ public class PostOrderProcess extends ProcessEJB implements PostOrderProcessLoca
String sqlAlloc=""; String sqlAlloc="";
PreparedStatement pstmt6=null; PreparedStatement pstmt6=null;
double qtyStkAlloc =0.0, allocQtyAlloc=0.0, holdQtyAlloc=0.0, inputQtyAlloc=0.0,inputQtyTotAlloc=0.0,sordItmQtyallc=0.0,updQty=0.0; double qtyStkAlloc =0.0, allocQtyAlloc=0.0, holdQtyAlloc=0.0, inputQtyAlloc=0.0,inputQtyTotAlloc=0.0,sordItmQtyallc=0.0,updQty=0.0;
System.out.println("stockList::["+stockList+"]"); //Pavan Rane 01nov19 start [to assign sorditem qty from sordItemBean]
sordItmQtyallc = sordItmQty; //sordItmQtyallc = sordItmQty;
sordItmQtyallc = sordItemBean.getSordItmQty();
//Pavan Rane 01nov19 end [to assign sorditem qty from sordItemBean]
System.out.println("sordItmQty::["+sordItmQty+"]"); System.out.println("sordItmQty::["+sordItmQty+"]");
if(stockOpt != 0)// Condition Added by Nandkumar Gadkari on 29/06/18 for Non Inventory Item. if(stockOpt != 0)// Condition Added by Nandkumar Gadkari on 29/06/18 for Non Inventory Item.
{ {
......
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