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<MPPMRP> 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<MPPMRP> 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<Integer,MPPOrderWorkflow>	s_cache = new CCache<Integer,MPPOrderWorkflow>("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());