From e4bee4874b2d9ec0bc033422324b67c6d9fbca25 Mon Sep 17 00:00:00 2001 From: vpj-cd Date: Tue, 14 Oct 2008 19:03:46 +0000 Subject: [PATCH] [ 2151963 ] When you update the qty in sales order the MO should be update http://sourceforge.net/tracker/?func=detail&atid=879332&aid=2151963&group_id=176962 --- .../org/eevolution/model/LiberoValidator.java | 6 +- base/src/org/eevolution/model/MPPMRP.java | 160 ++++++----- base/src/org/eevolution/model/MPPOrder.java | 269 ++++++++++++------ .../src/org/eevolution/model/MPPOrderBOM.java | 2 +- .../eevolution/model/MPPOrderWorkflow.java | 8 - base/src/org/eevolution/process/CRP.java | 3 +- base/src/org/eevolution/process/MRP.java | 4 +- 7 files changed, 291 insertions(+), 161 deletions(-) diff --git a/base/src/org/eevolution/model/LiberoValidator.java b/base/src/org/eevolution/model/LiberoValidator.java index 6a2984ad99..bec30f885a 100644 --- a/base/src/org/eevolution/model/LiberoValidator.java +++ b/base/src/org/eevolution/model/LiberoValidator.java @@ -97,8 +97,10 @@ public class LiberoValidator implements ModelValidator { MOrderLine ol = (MOrderLine)po; MOrder order = ol.getParent(); - if(order.getDocStatus().equals(MOrder.DOCSTATUS_InProgress) || order.getDocStatus().equals(MOrder.DOCSTATUS_Completed)) - MPPMRP.C_OrderLine(ol, false); + if(!order.isSOTrx()) + { + MPPMRP.C_OrderLine(ol, false); + } } if (po.get_TableName().equals(MOrderLine.Table_Name) && type == TYPE_BEFORE_DELETE) { diff --git a/base/src/org/eevolution/model/MPPMRP.java b/base/src/org/eevolution/model/MPPMRP.java index c0bf4f1053..3807a940f3 100644 --- a/base/src/org/eevolution/model/MPPMRP.java +++ b/base/src/org/eevolution/model/MPPMRP.java @@ -175,19 +175,33 @@ public class MPPMRP extends X_PP_MRP return; } - if (o.is_ValueChanged(MOrder.COLUMNNAME_DocStatus) - || o.is_ValueChanged(MOrder.COLUMNNAME_C_BPartner_ID) - ) - { - List list = new Query(o.getCtx(), MPPMRP.Table_Name, whereClause, trxName) - .setParameters(params) - .list(); - for (MPPMRP mrp : list) + MDocType dt = MDocType.get(o.getCtx(), o.getC_DocType_ID()); + String DocSubTypeSO = dt.getDocSubTypeSO(); + + if(MDocType.DOCSUBTYPESO_StandardOrder.equals(DocSubTypeSO) || !o.isSOTrx()) + { + if((o.getDocStatus().equals(MOrder.DOCSTATUS_InProgress) || o.getDocStatus().equals(MOrder.DOCSTATUS_Completed)) || !o.isSOTrx()) { - mrp.setC_Order(o); - mrp.saveEx(); + for(MOrderLine line : o.getLines()) + { + C_OrderLine(line , false); + } } - } + + if (o.is_ValueChanged(MOrder.COLUMNNAME_DocStatus) + || o.is_ValueChanged(MOrder.COLUMNNAME_C_BPartner_ID) + ) + { + List list = new Query(o.getCtx(), MPPMRP.Table_Name, whereClause, trxName) + .setParameters(params) + .list(); + for (MPPMRP mrp : list) + { + mrp.setC_Order(o); + mrp.saveEx(); + } + } + } } /** @@ -236,68 +250,84 @@ public class MPPMRP extends X_PP_MRP mrp.setM_Warehouse_ID(ol.getM_Warehouse_ID()); mrp.saveEx(); - MPPOrder order = new Query(ctx, MPPOrder.Table_Name, whereClause, trxName) - .setParameters(params) - .first(); - if (order == null) + MOrder o = ol.getParent(); + MDocType dt = MDocType.get(o.getCtx(), o.getC_DocTypeTarget_ID()); + String DocSubTypeSO = dt.getDocSubTypeSO(); + if(MDocType.DOCSUBTYPESO_StandardOrder.equals(DocSubTypeSO)) { - MProduct product = MProduct.get(ctx,ol.getM_Product_ID()); - MPPProductBOM bom = MPPProductBOM.getDefault(product, trxName); - if (bom != null) + MPPOrder order = new Query(ctx, MPPOrder.Table_Name, whereClause, trxName) + .setParameters(params) + .first(); + if (order == null) { - if (bom.getBOMType().equals(MPPProductBOM.BOMTYPE_Make_To_Order)) - { - String WhereClause = "ManufacturingResourceType = 'PT' AND IsManufacturingResource = 'Y' AND AD_Client_ID = ? AND M_Warehouse_ID = ?"; - MResource m_resource = (MResource)MTable.get(ctx,MResource.Table_ID).getPO(WhereClause, new Object[]{ ol.getAD_Client_ID(),ol.getM_Warehouse_ID()}, trxName); - MWorkflow m_workflow = MWorkflow.get(ctx, MWorkflow.getWorkflowSearchKey(ctx, product)); - if (m_resource != null && m_workflow != null) + String where = MPPProductBOM.COLUMNNAME_BOMType + "='" + + MPPProductBOM.BOMTYPE_Make_To_Order + "' AND "+ + MPPProductBOM.COLUMNNAME_M_Product_ID + "=?"; + MPPProductBOM bom = new Query(ctx, MPPProductBOM.Table_Name, where, trxName) + .setParameters(new Object[]{ol.getM_Product_ID()}) + .first(); + + if (bom != null) + { + MProduct product = MProduct.get(ctx,ol.getM_Product_ID()); + String WhereClause = "ManufacturingResourceType = 'PT' AND IsManufacturingResource = 'Y' AND AD_Client_ID = ? AND M_Warehouse_ID = ?"; + MResource m_resource = (MResource)MTable.get(ctx,MResource.Table_ID).getPO(WhereClause, new Object[]{ ol.getAD_Client_ID(),ol.getM_Warehouse_ID()}, trxName); + MWorkflow m_workflow = MWorkflow.get(ctx, MWorkflow.getWorkflowSearchKey(ctx, product)); + if (m_resource != null && m_workflow != null) + { + MDocType[] doc = MDocType.getOfDocBaseType(ctx, X_C_DocType.DOCBASETYPE_ManufacturingOrder); + int C_DocType_ID = doc[0].getC_DocType_ID(); + + order = new MPPOrder(ctx, 0 , trxName); + order.setC_OrderLine_ID(ol.getC_OrderLine_ID()); + order.setS_Resource_ID(m_resource.get_ID()); + order.setM_Warehouse_ID(ol.getM_Warehouse_ID()); + order.setM_Product_ID(ol.getM_Product_ID()); + order.setM_AttributeSetInstance_ID(ol.getM_AttributeSetInstance_ID()); + order.setPP_Product_BOM_ID(bom.get_ID()); + order.setAD_Workflow_ID(m_workflow.get_ID()); + order.setPlanner_ID(ol.getParent().getSalesRep_ID()); + order.setLine(10); + order.setQtyDelivered(Env.ZERO); + order.setQtyReject(Env.ZERO); + order.setQtyScrap(Env.ZERO); + order.setDateOrdered(ol.getDateOrdered()); + order.setDatePromised(ol.getDatePromised()); + order.setDateStartSchedule(TimeUtil.addDays(ol.getDatePromised(), (MPPMRP.getDays(ctx,m_resource.getS_Resource_ID(),m_workflow.getAD_Workflow_ID(), ol.getQtyOrdered(),ol.get_TrxName())).negate().intValue())); + order.setDateFinishSchedule(ol.getDatePromised()); + order.setC_UOM_ID(ol.getC_UOM_ID()); + order.setQty(ol.getQtyEntered()); + order.setPosted(false); + order.setProcessed(false); + order.setC_DocTypeTarget_ID(C_DocType_ID); + order.setC_DocType_ID(C_DocType_ID); + order.setPriorityRule(MPPOrder.PRIORITYRULE_High); + order.saveEx(); + order.prepareIt(); + order.setDocAction(MPPOrder.DOCSTATUS_Completed); + order.saveEx(); + + } + } + } + else + { + if (!order.isProcessed()) + { + if(order.getQtyEntered().compareTo(ol.getQtyEntered()) != 0) + { + order.setQty(ol.getQtyEntered()); + order.saveEx(); + } + if(order.getDatePromised().compareTo(ol.getDatePromised()) != 0) { - MDocType[] doc = MDocType.getOfDocBaseType(ctx, X_C_DocType.DOCBASETYPE_ManufacturingOrder); - int C_DocType_ID = doc[0].getC_DocType_ID(); - - order = new MPPOrder(ctx, 0 , trxName); - order.setC_OrderLine_ID(ol.getC_OrderLine_ID()); - order.setS_Resource_ID(m_resource.get_ID()); - order.setM_Warehouse_ID(ol.getM_Warehouse_ID()); - order.setM_Product_ID(ol.getM_Product_ID()); - order.setM_AttributeSetInstance_ID(ol.getM_AttributeSetInstance_ID()); - order.setPP_Product_BOM_ID(bom.get_ID()); - order.setAD_Workflow_ID(m_workflow.get_ID()); - //order.setPlanner_ID(SupplyPlanner_ID); - order.setLine(10); - order.setQtyDelivered(Env.ZERO); - order.setQtyReject(Env.ZERO); - order.setQtyScrap(Env.ZERO); - order.setDateOrdered(ol.getDateOrdered()); order.setDatePromised(ol.getDatePromised()); - order.setDateStartSchedule(TimeUtil.addDays(ol.getDatePromised(), (MPPMRP.getDays(ctx,m_resource.getS_Resource_ID(),m_workflow.getAD_Workflow_ID(), ol.getQtyOrdered(),ol.get_TrxName())).negate().intValue())); - order.setDateFinishSchedule(ol.getDatePromised()); - order.setQtyEntered(ol.getQtyEntered()); - order.setQtyOrdered(ol.getQtyOrdered()); - order.setC_UOM_ID(ol.getC_UOM_ID()); - order.setPosted(false); - order.setProcessed(false); - order.setC_DocTypeTarget_ID(C_DocType_ID); - order.setC_DocType_ID(C_DocType_ID); - order.setPriorityRule(MPPOrder.PRIORITYRULE_High); - order.saveEx(); - order.prepareIt(); - order.setDocAction(MPPOrder.DOCSTATUS_Completed); order.saveEx(); } - } + } } } - else - { - if (!order.isProcessed()) - { - order.setQtyEntered(ol.getQtyEntered()); - order.setDatePromised(ol.getDatePromised()); - order.saveEx(); - } - } - + return; } diff --git a/base/src/org/eevolution/model/MPPOrder.java b/base/src/org/eevolution/model/MPPOrder.java index 923e893127..c3ee644742 100644 --- a/base/src/org/eevolution/model/MPPOrder.java +++ b/base/src/org/eevolution/model/MPPOrder.java @@ -34,6 +34,7 @@ import org.compiere.model.MProject; import org.compiere.model.MResource; import org.compiere.model.MStorage; import org.compiere.model.MTable; +import org.compiere.model.MUOM; import org.compiere.model.MWarehouse; import org.compiere.model.ModelValidationEngine; import org.compiere.model.ModelValidator; @@ -63,6 +64,8 @@ import org.compiere.wf.MWorkflow; public class MPPOrder extends X_PP_Order implements DocAction { private static final long serialVersionUID = 1L; + /** Product */ + private MProduct m_product = null; /** * Create new Order by copying @@ -293,90 +296,46 @@ public class MPPOrder extends X_PP_Order implements DocAction { return false; } + + if( is_ValueChanged(MPPOrder.COLUMNNAME_QtyEntered) && + getDocStatus().equals(MPPOrder.DOCSTATUS_Drafted)) + { + for(MPPOrderBOMLine line : getLines()) + { + line.deleteEx(true); + } + MPPOrderBOM bom = getMPPOrderBOM(); + if(bom != null) + bom.deleteEx(true, get_TrxName()); + + MPPOrderWorkflow PP_Order_Workflow = getMPPOrderWorkflow(); + if (PP_Order_Workflow != null) + { + PP_Order_Workflow.setPP_Order_Node_ID(0); + PP_Order_Workflow.saveEx(); + for(MPPOrderNode node : PP_Order_Workflow.getNodes(true, getAD_Client_ID())) + { + for(MPPOrderNodeNext next : node.getTransitions(getAD_Client_ID())) + { + next.deleteEx(true); + } + node.deleteEx(true); + } + PP_Order_Workflow.deleteEx(true); + } + explotion(); + } + if( is_ValueChanged(MPPOrder.COLUMNNAME_QtyEntered) && !getDocStatus().equals(MPPOrder.DOCSTATUS_Drafted)) + { + throw new AdempiereException("Cannot Change Quantity, Only is allow with Draft Status"); // TODO: Create Message for Translation + } + if (!newRecord) { return success; } - - // Create BOM Head - MPPProductBOM PP_Product_BOM = MPPProductBOM.get(getCtx(), getPP_Product_BOM_ID()); - 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()) - { - if (PP_Product_BOMline.isValidFromTo(getDateStartSchedule())) - { - MPPOrderBOMLine PP_Order_BOMLine = new MPPOrderBOMLine(PP_Product_BOMline, - 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 - } // end Create Order BOM - - } // end if From / To parent - - // Create Workflow (Routing & Process - MWorkflow AD_Workflow = MWorkflow.get(getCtx(), getAD_Workflow_ID()); - 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())) - { - if (AD_WF_Node.isValidFromTo(getDateStartSchedule())) - { - 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())) - { - 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 - - } - // Update transitions nexts and set first node - PP_Order_Workflow.loadNodes(); - for (MPPOrderNode orderNode : PP_Order_Workflow.getNodes(false, getAD_Client_ID())) - { - // set workflow start node - if (PP_Order_Workflow.getAD_WF_Node_ID() == orderNode.getAD_WF_Node_ID()) { - PP_Order_Workflow.setPP_Order_Node_ID(orderNode.getPP_Order_Node_ID()); - } - // set node next - for (MPPOrderNodeNext next : orderNode.getTransitions(getAD_Client_ID())) - { - next.setPP_Order_Next_ID(); - next.saveEx(); - } - } - PP_Order_Workflow.saveEx(); - - BigDecimal QtyBatchs = null; - BigDecimal QtyBatchSize = PP_Order_Workflow.getQtyBatchSize().setScale(0, RoundingMode.UP); - - if (QtyBatchSize.signum()==0) - QtyBatchs = Env.ONE; - else - QtyBatchs = getQtyEntered().divide(QtyBatchSize , 0, BigDecimal.ROUND_UP); - - setQtyBatchs(QtyBatchs); - setQtyBatchSize(QtyBatchSize); - - } // workflow valid from/to + + explotion(); return true; } // beforeSave @@ -853,6 +812,156 @@ public class MPPOrder extends X_PP_Order implements DocAction } } + /** + * Set Qty Entered/Ordered. + * Use this Method if the Line UOM is the Product UOM + * @param Qty QtyOrdered/Entered + */ + public void setQty (BigDecimal Qty) + { + super.setQtyEntered (Qty); + super.setQtyOrdered (getQtyEntered()); + } // setQty + + /** + * Set Qty Entered - enforce entered UOM + * @param QtyEntered + */ + public void setQtyEntered (BigDecimal QtyEntered) + { + if (QtyEntered != null && getC_UOM_ID() != 0) + { + int precision = MUOM.getPrecision(getCtx(), getC_UOM_ID()); + QtyEntered = QtyEntered.setScale(precision, BigDecimal.ROUND_HALF_UP); + } + super.setQtyEntered (QtyEntered); + } // setQtyEntered + + /** + * Set Qty Ordered - enforce Product UOM + * @param QtyOrdered + */ + public void setQtyOrdered (BigDecimal QtyOrdered) + { + MProduct product = getProduct(); + if (QtyOrdered != null && product != null) + { + int precision = product.getUOMPrecision(); + QtyOrdered = QtyOrdered.setScale(precision, BigDecimal.ROUND_HALF_UP); + } + super.setQtyOrdered(QtyOrdered); + } // setQtyOrdered + + /** + * Get Product + * @return product or null + */ + public MProduct getProduct() + { + if (m_product == null && getM_Product_ID() != 0) + m_product = MProduct.get (getCtx(), getM_Product_ID()); + return m_product; + } // getProduct + + public MPPOrderBOM getMPPOrderBOM() + { + final String whereClause = MPPOrderBOM.COLUMNNAME_PP_Order_ID+"=?"; + return new Query(getCtx(), MPPOrderBOM.Table_Name, whereClause, get_TrxName()) + .setParameters(new Object[]{getPP_Order_ID()}) + .first(); + } + + public MPPOrderWorkflow getMPPOrderWorkflow() + { + final String whereClause = MPPOrderWorkflow.COLUMNNAME_PP_Order_ID+"=?"; + return new Query(getCtx(), MPPOrderWorkflow.Table_Name, whereClause, get_TrxName()) + .setParameters(new Object[]{getPP_Order_ID()}) + .first(); + } + + public void explotion() + { + // Create BOM Head + MPPProductBOM PP_Product_BOM = MPPProductBOM.get(getCtx(), getPP_Product_BOM_ID()); + 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()) + { + if (PP_Product_BOMline.isValidFromTo(getDateStartSchedule())) + { + MPPOrderBOMLine PP_Order_BOMLine = new MPPOrderBOMLine(PP_Product_BOMline, + 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 + } // end Create Order BOM + + } // end if From / To parent + + // Create Workflow (Routing & Process + MWorkflow AD_Workflow = MWorkflow.get(getCtx(), getAD_Workflow_ID()); + 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())) + { + if (AD_WF_Node.isValidFromTo(getDateStartSchedule())) + { + 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())) + { + 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 + + } + // Update transitions nexts and set first node + PP_Order_Workflow.loadNodes(); + for (MPPOrderNode orderNode : PP_Order_Workflow.getNodes(false, getAD_Client_ID())) + { + // set workflow start node + if (PP_Order_Workflow.getAD_WF_Node_ID() == orderNode.getAD_WF_Node_ID()) { + PP_Order_Workflow.setPP_Order_Node_ID(orderNode.getPP_Order_Node_ID()); + } + // set node next + for (MPPOrderNodeNext next : orderNode.getTransitions(getAD_Client_ID())) + { + next.setPP_Order_Next_ID(); + next.saveEx(); + } + } + PP_Order_Workflow.saveEx(); + + BigDecimal QtyBatchs = null; + BigDecimal QtyBatchSize = PP_Order_Workflow.getQtyBatchSize().setScale(0, RoundingMode.UP); + + if (QtyBatchSize.signum()==0) + QtyBatchs = Env.ONE; + else + QtyBatchs = getQtyOrdered().divide(QtyBatchSize , 0, BigDecimal.ROUND_UP); + + setQtyBatchs(QtyBatchs); + setQtyBatchSize(QtyBatchSize); + + } // workflow valid from/to + } + public String toString() { StringBuffer sb = new StringBuffer("MPPOrder[").append(get_ID()) diff --git a/base/src/org/eevolution/model/MPPOrderBOM.java b/base/src/org/eevolution/model/MPPOrderBOM.java index 0453e99d04..4367c72b91 100644 --- a/base/src/org/eevolution/model/MPPOrderBOM.java +++ b/base/src/org/eevolution/model/MPPOrderBOM.java @@ -98,4 +98,4 @@ public class MPPOrderBOM extends X_PP_Order_BOM .append ("]"); return sb.toString (); } // toString -} // MOrder +} // MPPOrderBOM diff --git a/base/src/org/eevolution/model/MPPOrderWorkflow.java b/base/src/org/eevolution/model/MPPOrderWorkflow.java index 94aa34b7fe..4dda62e882 100644 --- a/base/src/org/eevolution/model/MPPOrderWorkflow.java +++ b/base/src/org/eevolution/model/MPPOrderWorkflow.java @@ -57,14 +57,6 @@ public class MPPOrderWorkflow extends X_PP_Order_Workflow s_cache.put(key, retValue); return retValue; } // get - - public static MPPOrderWorkflow forPP_Order_ID(Properties ctx, int PP_Order_ID, String trxName) - { - final String whereClause = MPPOrderWorkflow.COLUMNNAME_PP_Order_ID+"=?"; - return new Query(ctx, MPPOrderWorkflow.Table_Name, whereClause, trxName) - .setParameters(new Object[]{PP_Order_ID}) - .first(); - } /** Single Cache */ private static CCache s_cache = new CCache("PP_Order_Workflow", 20); diff --git a/base/src/org/eevolution/process/CRP.java b/base/src/org/eevolution/process/CRP.java index 2e54302851..5a7417b962 100644 --- a/base/src/org/eevolution/process/CRP.java +++ b/base/src/org/eevolution/process/CRP.java @@ -106,8 +106,7 @@ public class CRP extends SvrProcess { { log.fine("PP_Order DocumentNo:" + order.getDocumentNo()); BigDecimal qtyOpen = order.getQtyOpen(); - - MPPOrderWorkflow owf = MPPOrderWorkflow.forPP_Order_ID(order.getCtx(), order.getPP_Order_ID(), order.get_TrxName()); + MPPOrderWorkflow owf = order.getMPPOrderWorkflow(); log.fine("PP_Order Workflow:" + owf.getName()); // Schedule Fordward diff --git a/base/src/org/eevolution/process/MRP.java b/base/src/org/eevolution/process/MRP.java index 2fe91ed416..34fe1579e4 100644 --- a/base/src/org/eevolution/process/MRP.java +++ b/base/src/org/eevolution/process/MRP.java @@ -872,9 +872,7 @@ public class MRP extends SvrProcess else order.setDateStartSchedule(TimeUtil.addDays(DemandDateStartSchedule, (m_product_planning.getDeliveryTime_Promised().add(m_product_planning.getTransfertTime())).negate().intValue())); order.setDateFinishSchedule(DemandDateStartSchedule); - - order.setQtyEntered(QtyPlanned); - order.setQtyOrdered(QtyPlanned); + order.setQty(QtyPlanned); order.setQtyBatchs(Env.ONE); order.setQtyBatchSize(QtyPlanned); order.setC_UOM_ID(product.getC_UOM_ID());