Fix MRP bugs with multi organization
This commit is contained in:
parent
496aa7e25f
commit
15e1126852
|
@ -110,6 +110,7 @@ public class MPPMRP extends X_PP_MRP
|
|||
if (mrp == null)
|
||||
{
|
||||
mrp = new MPPMRP(ctx, 0, trxName);
|
||||
mrp.setAD_Org_ID(fl.getAD_Org_ID());
|
||||
mrp.setM_Forecast_ID(fl.getM_Forecast_ID());
|
||||
mrp.setM_ForecastLine_ID(fl.getM_ForecastLine_ID());
|
||||
mrp.setOrderType(MPPMRP.ORDERTYPE_Forecast);
|
||||
|
@ -189,6 +190,7 @@ public class MPPMRP extends X_PP_MRP
|
|||
if(mrp == null)
|
||||
{
|
||||
mrp = new MPPMRP(ctx, 0,trxName);
|
||||
mrp.setAD_Org_ID(ol.getAD_Org_ID());
|
||||
mrp.setC_Order_ID(ol.getC_Order_ID());
|
||||
mrp.setC_OrderLine_ID(ol.getC_OrderLine_ID());
|
||||
if (ol.getParent().isSOTrx())
|
||||
|
@ -304,6 +306,7 @@ public class MPPMRP extends X_PP_MRP
|
|||
if(mrp == null)
|
||||
{
|
||||
mrp = new MPPMRP(m_ctx, 0, trxName);
|
||||
mrp.setAD_Org_ID(o.getAD_Org_ID());
|
||||
mrp.setPP_Order_ID(o.getPP_Order_ID());
|
||||
mrp.setTypeMRP(MPPMRP.TYPEMRP_Supply);
|
||||
mrp.setOrderType(MPPMRP.ORDERTYPE_ManufacturingOrder);
|
||||
|
@ -346,6 +349,7 @@ public class MPPMRP extends X_PP_MRP
|
|||
if(mrp == null)
|
||||
{
|
||||
mrp = new MPPMRP(ctx, 0, trxName);
|
||||
mrp.setAD_Org_ID(obl.getAD_Org_ID());
|
||||
mrp.setPP_Order_BOMLine_ID(obl.getPP_Order_BOMLine_ID());
|
||||
mrp.setPP_Order_ID(o.getPP_Order_ID());
|
||||
mrp.setOrderType(MPPMRP.ORDERTYPE_ManufacturingOrder);
|
||||
|
@ -496,6 +500,7 @@ public class MPPMRP extends X_PP_MRP
|
|||
if (mrp == null)
|
||||
{
|
||||
mrp = new MPPMRP(ctx, 0, trxName);
|
||||
mrp.setAD_Org_ID(r.getAD_Org_ID());
|
||||
mrp.setM_Requisition_ID(rl.getM_Requisition_ID());
|
||||
mrp.setM_RequisitionLine_ID(rl.getM_RequisitionLine_ID());
|
||||
mrp.setOrderType(MPPMRP.ORDERTYPE_MaterialRequisition);
|
||||
|
|
|
@ -338,6 +338,7 @@ public class MPPOrder extends X_PP_Order implements DocAction
|
|||
if (PP_Product_BOM.isValidFromTo(getDateStartSchedule()))
|
||||
{
|
||||
MPPOrderBOM PP_Order_BOM = new MPPOrderBOM(PP_Product_BOM, getPP_Order_ID(), get_TrxName());
|
||||
PP_Order_BOM.setAD_Org_ID(getAD_Org_ID());
|
||||
PP_Order_BOM.saveEx();
|
||||
|
||||
for (MPPProductBOMLine PP_Product_BOMline : PP_Product_BOM.getLines())
|
||||
|
@ -348,6 +349,7 @@ public class MPPOrder extends X_PP_Order implements DocAction
|
|||
getPP_Order_ID(), PP_Order_BOM.get_ID(),
|
||||
getM_Warehouse_ID(),
|
||||
get_TrxName());
|
||||
PP_Order_BOMLine.setAD_Org_ID(getAD_Org_ID());
|
||||
PP_Order_BOMLine.setQtyOrdered(getQtyOrdered());
|
||||
PP_Order_BOMLine.saveEx();
|
||||
} // end if valid From / To
|
||||
|
@ -360,6 +362,7 @@ public class MPPOrder extends X_PP_Order implements DocAction
|
|||
if (AD_Workflow.isValidFromTo(getDateStartSchedule()))
|
||||
{
|
||||
MPPOrderWorkflow PP_Order_Workflow = new MPPOrderWorkflow(AD_Workflow, get_ID(), get_TrxName());
|
||||
PP_Order_Workflow.setAD_Org_ID(getAD_Org_ID());
|
||||
PP_Order_Workflow.saveEx();
|
||||
for (MWFNode AD_WF_Node : AD_Workflow.getNodes(false, getAD_Client_ID()))
|
||||
{
|
||||
|
@ -368,11 +371,14 @@ public class MPPOrder extends X_PP_Order implements DocAction
|
|||
MPPOrderNode PP_Order_Node = new MPPOrderNode(AD_WF_Node, PP_Order_Workflow,
|
||||
getQtyOrdered(),
|
||||
get_TrxName());
|
||||
PP_Order_Node.setAD_Org_ID(getAD_Org_ID());
|
||||
PP_Order_Node.saveEx();
|
||||
|
||||
for (MWFNodeNext AD_WF_NodeNext : AD_WF_Node.getTransitions(getAD_Client_ID()))
|
||||
{
|
||||
new MPPOrderNodeNext(AD_WF_NodeNext, PP_Order_Node, get_TrxName()).saveEx();
|
||||
MPPOrderNodeNext nodenext = new MPPOrderNodeNext(AD_WF_NodeNext, PP_Order_Node, get_TrxName());
|
||||
nodenext.setAD_Org_ID(getAD_Org_ID());
|
||||
nodenext.saveEx();
|
||||
}// for NodeNext
|
||||
}// for node
|
||||
|
||||
|
|
|
@ -158,6 +158,7 @@ public class MPPOrderBOMLine extends X_PP_Order_BOMLine
|
|||
getPP_Order_ID(), getPP_Order_BOM_ID(),
|
||||
getM_Warehouse_ID(),
|
||||
get_TrxName());
|
||||
PP_Order_BOMLine.setAD_Org_ID(getAD_Org_ID());
|
||||
PP_Order_BOMLine.setQtyOrdered(m_qtyToExplode);
|
||||
PP_Order_BOMLine.saveEx();
|
||||
}
|
||||
|
|
|
@ -139,8 +139,7 @@ public class DistributionRunOrders extends SvrProcess
|
|||
m_run.save();
|
||||
|
||||
StringBuffer sql = new StringBuffer("SELECT M_Product_ID , SUM (QtyOrdered-QtyDelivered) AS TotalQty, l.M_Warehouse_ID FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
|
||||
//sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised BETWEEN ? AND ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID");
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
|
@ -193,13 +192,12 @@ public class DistributionRunOrders extends SvrProcess
|
|||
//Create Distribution Run Line
|
||||
public boolean generateDistributionDemand()
|
||||
{
|
||||
m_run = new MDistributionRun(this.getCtx(), 0 , this.get_TrxName());
|
||||
m_run = new MDistributionRun(this.getCtx(), 0 , null);
|
||||
m_run.setName("Generate from DRP " + p_DatePromised);
|
||||
m_run.save();
|
||||
|
||||
StringBuffer sql = new StringBuffer("SELECT M_Product_ID , SUM (TargetQty) AS MinQty, SUM (QtyOrdered-QtyDelivered) AS TotalQty, l.M_Warehouse_ID FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
|
||||
//sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised BETWEEN ? AND ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
StringBuffer sql = new StringBuffer("SELECT M_Product_ID , SUM (TargetQty) AS MinQty, SUM (QtyOrdered-QtyDelivered) AS TotalQty FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
|
||||
sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? GROUP BY M_Product_ID");
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try
|
||||
|
@ -215,7 +213,7 @@ public class DistributionRunOrders extends SvrProcess
|
|||
{
|
||||
int M_Product_ID = rs.getInt("M_Product_ID");
|
||||
BigDecimal QtyAvailable = MStorage.getQtyAvailable(p_M_Warehouse_ID,0 , M_Product_ID , 0, get_TrxName());
|
||||
if(QtyAvailable.signum()< 0)
|
||||
if(QtyAvailable.signum()<= 0)
|
||||
continue;
|
||||
BigDecimal QtyToDistribute = rs.getBigDecimal("TotalQty");
|
||||
if(QtyAvailable.compareTo(QtyToDistribute) >= 0)
|
||||
|
@ -226,6 +224,9 @@ public class DistributionRunOrders extends SvrProcess
|
|||
QtyToDistribute = QtyAvailable.subtract(QtyReserved);
|
||||
}
|
||||
|
||||
//if(QtyToDistribute.equals(Env.ZERO))
|
||||
// continue;
|
||||
|
||||
MDistributionRunLine m_runLine = new MDistributionRunLine(getCtx(),0 ,get_TrxName());
|
||||
m_runLine.setM_DistributionRun_ID(m_run.getM_DistributionRun_ID());
|
||||
m_runLine.setAD_Org_ID(p_AD_Org_ID);
|
||||
|
@ -263,26 +264,7 @@ public class DistributionRunOrders extends SvrProcess
|
|||
private BigDecimal getTargetQty(int M_Product_ID)
|
||||
{
|
||||
StringBuffer sql = new StringBuffer("SELECT SUM (TargetQty) FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_Locator_ID) INNER JOIN DD_Order o ON (o.DD_Order_ID=ol.DD_Order_ID) ");
|
||||
//sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised BETWEEN ? AND ? AND l.M_Warehouse_ID=? AND ol.M_Product_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? AND ol.M_Product_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
BigDecimal qty = DB.getSQLValueBD(get_TrxName(), sql.toString(), new Object[]{p_DatePromised, p_M_Warehouse_ID, M_Product_ID});
|
||||
// SQL may return no rows or null
|
||||
if (qty == null)
|
||||
return Env.ZERO;
|
||||
|
||||
return qty;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Qty TargetQty for a Warehouse
|
||||
* @param M_Product_ID
|
||||
* @return
|
||||
*/
|
||||
private BigDecimal setTargetQty(int M_Product_ID)
|
||||
{
|
||||
StringBuffer sql = new StringBuffer("SELECT SUM(Qty) FROM PP_MRP mrp "
|
||||
+"WHERE TypeMRP='D' AND OrderType='SOO' AND DocStatus IN ('IN','CO') AND mrp.DatePromised <=? "
|
||||
+"AND mrp.M_Warehouse_ID =? AND M_Product_ID=? GROUP BY M_Product_ID, l.M_Warehouse_ID");
|
||||
sql.append(" WHERE o.DocStatus IN ('DR','IN') AND ol.DatePromised <= ? AND l.M_Warehouse_ID=? AND ol.M_Product_ID=? GROUP BY M_Product_ID");
|
||||
BigDecimal qty = DB.getSQLValueBD(get_TrxName(), sql.toString(), new Object[]{p_DatePromised, p_M_Warehouse_ID, M_Product_ID});
|
||||
// SQL may return no rows or null
|
||||
if (qty == null)
|
||||
|
@ -385,6 +367,7 @@ public class DistributionRunOrders extends SvrProcess
|
|||
String msg = "No Parameter added"; // not translated
|
||||
throw new Exception(msg,CLogger.retrieveException());
|
||||
}
|
||||
|
||||
// Execute Process
|
||||
MProcess worker = new MProcess(getCtx(),AD_Process_ID,get_TrxName());
|
||||
worker.processIt(pi, Trx.get(get_TrxName(), true));
|
||||
|
|
|
@ -262,10 +262,17 @@ public class MRP extends SvrProcess
|
|||
commit();
|
||||
|
||||
// Delete Requisition with Status Close from MRP Table
|
||||
sql = "DELETE FROM PP_MRP WHERE OrderType = 'POR' AND DocStatus='CL' AND AD_Client_ID = " + AD_Client_ID + " AND AD_Org_ID=" + AD_Org_ID+ " AND M_Warehouse_ID="+M_Warehouse_ID + " AND S_Resource_ID="+S_Resource_ID;
|
||||
sql = "DELETE FROM PP_MRP WHERE OrderType = 'POR' AND DocStatus IN ('CL','DR') AND AD_Client_ID = " + AD_Client_ID + " AND AD_Org_ID=" + AD_Org_ID+ " AND M_Warehouse_ID="+M_Warehouse_ID;
|
||||
DB.executeUpdateEx(sql, get_TrxName());
|
||||
commit();
|
||||
|
||||
//Delete Requisition with Draft Status
|
||||
|
||||
|
||||
String whereClause = "DocStatus IN ('CL','DR') AND AD_Client_ID=? AND AD_Org_ID=? AND M_Warehouse_ID=?";
|
||||
deletePO(MRequisition.Table_Name, whereClause, new Object[]{AD_Client_ID, AD_Org_ID, M_Warehouse_ID});
|
||||
commit();
|
||||
|
||||
// Delete Action Notice
|
||||
sql = "DELETE FROM AD_Note WHERE AD_Table_ID=? AND AD_Client_ID=? AND AD_Org_ID=?";
|
||||
DB.executeUpdateEx(sql, new Object[]{MPPMRP.Table_ID, AD_Client_ID, AD_Org_ID}, get_TrxName());
|
||||
|
@ -274,19 +281,17 @@ public class MRP extends SvrProcess
|
|||
if (p_IsRequiredDRP)
|
||||
{
|
||||
//Delete Distribution Order with Draft Status
|
||||
String whereClause = "DocStatus='DR' AND AD_Client_ID=? AND AD_Org_ID=?"
|
||||
whereClause = "DocStatus='DR' AND AD_Client_ID=? AND AD_Org_ID=?"
|
||||
+" AND EXISTS (SELECT 1 FROM DD_OrderLine ol INNER JOIN M_Locator l ON (l.M_Locator_ID=ol.M_LocatorTo_ID) "
|
||||
+" WHERE ol.DD_Order_ID=DD_Order.DD_Order_ID AND l.M_Warehouse_ID=?)";
|
||||
deletePO(MDDOrder.Table_Name, whereClause, new Object[]{AD_Client_ID, AD_Org_ID, M_Warehouse_ID});
|
||||
}
|
||||
|
||||
//Delete Manufacturing Order with Draft Status
|
||||
String whereClause = "DocStatus='DR' AND AD_Client_ID=? AND AD_Org_ID=? AND M_Warehouse_ID=? AND S_Resource_ID=?";
|
||||
whereClause = "DocStatus='DR' AND AD_Client_ID=? AND AD_Org_ID=? AND M_Warehouse_ID=? AND S_Resource_ID=?";
|
||||
deletePO(MPPOrder.Table_Name, whereClause, new Object[]{AD_Client_ID, AD_Org_ID, M_Warehouse_ID, S_Resource_ID});
|
||||
|
||||
//Delete Requisition with Draft Status
|
||||
whereClause = "DocStatus='DR' AND AD_Client_ID=? AND AD_Org_ID=? AND M_Warehouse_ID=?";
|
||||
deletePO(MRequisition.Table_Name, whereClause, new Object[]{AD_Client_ID, AD_Org_ID, M_Warehouse_ID});
|
||||
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -342,6 +347,9 @@ public class MRP extends SvrProcess
|
|||
String OrderType = rs.getString(MPPMRP.COLUMNNAME_OrderType);
|
||||
Timestamp DatePromised = rs.getTimestamp(MPPMRP.COLUMNNAME_DatePromised);
|
||||
Timestamp DateStartSchedule = rs.getTimestamp(MPPMRP.COLUMNNAME_DateStartSchedule);
|
||||
if(DateStartSchedule != null)
|
||||
BeforeDateStartSchedule = DateStartSchedule;
|
||||
|
||||
|
||||
// if demand is a forecast and this is minor today then is ignore this QtyGrossReq
|
||||
if (MPPMRP.TYPEMRP_Demand.equals(TypeMRP)
|
||||
|
@ -357,7 +365,7 @@ public class MRP extends SvrProcess
|
|||
//if exist QtyGrossReq of last Demand verify plan
|
||||
if (QtyGrossReqs.signum() != 0)
|
||||
{
|
||||
calculatePlan(BeforePP_MRP_ID, product, QtyGrossReqs ,BeforeDateStartSchedule);
|
||||
calculatePlan(AD_Org_ID, BeforePP_MRP_ID, product, QtyGrossReqs ,BeforeDateStartSchedule);
|
||||
QtyGrossReqs = Env.ZERO;
|
||||
}
|
||||
|
||||
|
@ -385,13 +393,12 @@ public class MRP extends SvrProcess
|
|||
if (m_product_planning == null)
|
||||
continue;
|
||||
|
||||
BeforeDateStartSchedule = DateStartSchedule;
|
||||
BeforePP_MRP_ID = rs.getInt("PP_MRP_ID");
|
||||
BeforePP_MRP_ID = rs.getInt(MPPMRP.COLUMNNAME_PP_MRP_ID);
|
||||
|
||||
// Create Notice for Demand due
|
||||
if(DatePromised.compareTo(Today) < 0)
|
||||
{
|
||||
createMRPNote("MRP-040", rs.getInt("PP_MRP_ID"), product);
|
||||
createMRPNote("MRP-040", rs.getInt(MPPMRP.COLUMNNAME_PP_MRP_ID), product);
|
||||
}
|
||||
|
||||
if (MPPProductPlanning.ORDER_POLICY_PeriodOrderQuantity.equals(m_product_planning.getOrder_Policy()))
|
||||
|
@ -405,7 +412,8 @@ public class MRP extends SvrProcess
|
|||
}
|
||||
else
|
||||
{ // if not then create new range for next period
|
||||
calculatePlan(rs.getInt("PP_MRP_ID"),product, QtyGrossReqs ,POQDateStartSchedule);
|
||||
BeforeDateStartSchedule = POQDateStartSchedule;
|
||||
calculatePlan(AD_Org_ID,rs.getInt(MPPMRP.COLUMNNAME_PP_MRP_ID),product, QtyGrossReqs ,BeforeDateStartSchedule);
|
||||
QtyGrossReqs = rs.getBigDecimal(MPPMRP.COLUMNNAME_Qty);
|
||||
DatePromisedFrom = DatePromised;
|
||||
DatePromisedTo = TimeUtil.addDays(DatePromised, m_product_planning.getOrder_Period().intValue());
|
||||
|
@ -417,7 +425,8 @@ public class MRP extends SvrProcess
|
|||
else if (MPPProductPlanning.ORDER_POLICY_LoteForLote.equals(m_product_planning.getOrder_Policy()))
|
||||
{
|
||||
QtyGrossReqs = rs.getBigDecimal(MPPMRP.COLUMNNAME_Qty);
|
||||
calculatePlan(rs.getInt("PP_MRP_ID"),product, QtyGrossReqs , rs.getTimestamp("DateStartSchedule"));
|
||||
BeforeDateStartSchedule = rs.getTimestamp(MPPMRP.COLUMNNAME_DateStartSchedule);
|
||||
calculatePlan(AD_Org_ID,rs.getInt(MPPMRP.COLUMNNAME_PP_MRP_ID),product,QtyGrossReqs,BeforeDateStartSchedule);
|
||||
continue;
|
||||
}
|
||||
} // end while
|
||||
|
@ -425,7 +434,7 @@ public class MRP extends SvrProcess
|
|||
//if exist QtyGrossReq of last Demand after finish while verify plan
|
||||
if (QtyGrossReqs.signum() != 0)
|
||||
{
|
||||
calculatePlan(BeforePP_MRP_ID , product, QtyGrossReqs ,BeforeDateStartSchedule);
|
||||
calculatePlan(AD_Org_ID,BeforePP_MRP_ID , product, QtyGrossReqs ,BeforeDateStartSchedule);
|
||||
}
|
||||
|
||||
DB.close(rs, pstmt);
|
||||
|
@ -558,7 +567,7 @@ public class MRP extends SvrProcess
|
|||
* @param Qty Qty
|
||||
* @param DemandDateStartSchedule Demand Date Start Schedule
|
||||
*/
|
||||
private void calculatePlan(int PP_MPR_ID , MProduct product , BigDecimal Qty, Timestamp DemandDateStartSchedule)
|
||||
private void calculatePlan(int AD_Org_ID , int PP_MPR_ID , MProduct product , BigDecimal Qty, Timestamp DemandDateStartSchedule)
|
||||
{
|
||||
if (m_product_planning.isCreatePlan() == false)
|
||||
return;
|
||||
|
@ -644,17 +653,17 @@ public class MRP extends SvrProcess
|
|||
// Distribution Order
|
||||
if(p_IsRequiredDRP && m_product_planning.getDD_NetworkDistribution_ID() > 0)
|
||||
{
|
||||
createDDOrder(PP_MPR_ID, product, DemandDateStartSchedule);
|
||||
createDDOrder(AD_Org_ID,PP_MPR_ID, product, DemandDateStartSchedule);
|
||||
}
|
||||
// Requisition
|
||||
else if (product.isPurchased()) // then create M_Requisition
|
||||
{
|
||||
createRequisition(PP_MPR_ID, product, DemandDateStartSchedule);
|
||||
createRequisition(AD_Org_ID,PP_MPR_ID, product, DemandDateStartSchedule);
|
||||
}
|
||||
// Manufacturing Order
|
||||
else if (product.isBOM())
|
||||
{
|
||||
createPPOrder(PP_MPR_ID, product, DemandDateStartSchedule);
|
||||
createPPOrder(AD_Org_ID, PP_MPR_ID, product, DemandDateStartSchedule);
|
||||
}
|
||||
} // end for oqf
|
||||
}
|
||||
|
@ -664,7 +673,7 @@ public class MRP extends SvrProcess
|
|||
}
|
||||
}
|
||||
|
||||
private void createDDOrder(int PP_MRP_ID, MProduct product, Timestamp DemandDateStartSchedule)
|
||||
private void createDDOrder(int AD_Org_ID, int PP_MRP_ID, MProduct product, Timestamp DemandDateStartSchedule)
|
||||
{
|
||||
|
||||
MDDNetworkDistribution network = MDDNetworkDistribution.get(getCtx(),m_product_planning.getDD_NetworkDistribution_ID());
|
||||
|
@ -786,7 +795,7 @@ public class MRP extends SvrProcess
|
|||
commit();
|
||||
}
|
||||
|
||||
private void createRequisition(int PP_MRP_ID, MProduct product, Timestamp DemandDateStartSchedule)
|
||||
private void createRequisition(int AD_Org_ID , int PP_MRP_ID, MProduct product, Timestamp DemandDateStartSchedule)
|
||||
{
|
||||
log.info("Create Requisition");
|
||||
|
||||
|
@ -795,6 +804,7 @@ public class MRP extends SvrProcess
|
|||
+ m_product_planning.getTransfertTime().intValue();
|
||||
|
||||
MRequisition req = new MRequisition(getCtx(),0, get_TrxName());
|
||||
req.setAD_Org_ID(AD_Org_ID);
|
||||
req.setAD_User_ID(m_product_planning.getPlanner_ID());
|
||||
req.setDateRequired(TimeUtil.addDays(DemandDateStartSchedule, 0 - duration));
|
||||
req.setDescription("Generate from MRP"); // TODO: add translation
|
||||
|
@ -807,6 +817,7 @@ public class MRP extends SvrProcess
|
|||
|
||||
MRequisitionLine reqline = new MRequisitionLine(req);
|
||||
reqline.setLine(10);
|
||||
reqline.setAD_Org_ID(AD_Org_ID);
|
||||
reqline.setM_Product_ID(m_product_planning.getM_Product_ID());
|
||||
reqline.setPrice();
|
||||
reqline.setPriceActual(Env.ZERO);
|
||||
|
@ -831,7 +842,7 @@ public class MRP extends SvrProcess
|
|||
commit();
|
||||
}
|
||||
|
||||
private void createPPOrder(int PP_MRP_ID, MProduct product, Timestamp DemandDateStartSchedule)
|
||||
private void createPPOrder(int AD_Org_ID, int PP_MRP_ID, MProduct product, Timestamp DemandDateStartSchedule)
|
||||
{
|
||||
log.info("PP_Product_BOM_ID" + m_product_planning.getPP_Product_BOM_ID() + "AD_Workflow_ID" + m_product_planning.getAD_Workflow_ID());
|
||||
if (m_product_planning.getPP_Product_BOM_ID() == 0 || m_product_planning.getAD_Workflow_ID() == 0)
|
||||
|
@ -841,6 +852,7 @@ public class MRP extends SvrProcess
|
|||
|
||||
log.info("Manufacturing Order Create");
|
||||
MPPOrder order = new MPPOrder(getCtx(), 0, get_TrxName());
|
||||
order.setAD_Org_ID(AD_Org_ID);
|
||||
order.setLine(10);
|
||||
order.setC_DocTypeTarget_ID(DocTypeMO);
|
||||
order.setC_DocType_ID(DocTypeMO);
|
||||
|
|
|
@ -177,7 +177,7 @@ public class MRPUpdate extends SvrProcess
|
|||
executeUpdate("DELETE FROM PP_MRP WHERE "+whereClause, params);
|
||||
|
||||
//Delete Material Requisitions Document
|
||||
whereClause = "DocStatus='DR' AND AD_Client_ID=? AND AD_Org_ID=? AND M_Warehouse_ID=?";
|
||||
whereClause = "DocStatus IN ('DR','CL') AND AD_Client_ID=? AND AD_Org_ID=? AND M_Warehouse_ID=?";
|
||||
deletePO(MRequisition.Table_Name, whereClause, params);
|
||||
// Delete Distribution Orders:
|
||||
deletePO(MDDOrder.Table_Name, whereClause, params);
|
||||
|
|
Loading…
Reference in New Issue