From 3c394cce66a0d1e11b1f609010c3eee7d216b05a Mon Sep 17 00:00:00 2001
From: Yusuke Muraoka <yusuke@nexedi.com>
Date: Fri, 29 May 2009 16:39:14 +0000
Subject: [PATCH] - modified ProductionOrderRule to use Business Process  
 instead of Supply Chain.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@27272 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/ProductionOrderRule.py | 30 ++++++++------------
 1 file changed, 12 insertions(+), 18 deletions(-)

diff --git a/product/ERP5/Document/ProductionOrderRule.py b/product/ERP5/Document/ProductionOrderRule.py
index 9727158063..ca9805454a 100644
--- a/product/ERP5/Document/ProductionOrderRule.py
+++ b/product/ERP5/Document/ProductionOrderRule.py
@@ -30,8 +30,7 @@ from AccessControl import ClassSecurityInfo
 from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface
 from Products.ERP5.Document.Rule import Rule
 from Products.ERP5.Document.OrderRule import OrderRule
-from Products.ERP5.Document.TransformationSourcingRule import\
-                                            TransformationSourcingRuleMixin
+from Products.ERP5.Document.TransformationRule import TransformationRuleMixin
 
 from zLOG import LOG, WARNING
 
@@ -93,25 +92,20 @@ class ProductionOrderRule(OrderRule):
           'quantity_unit', 
         )
     
-      supply_chain = self.getSupplyChain(applied_rule)
-      # We got a supply chain
-      # Try to get the last SupplyLink
-      last_link = supply_chain.getLastLink()
-      # We got a valid industrial_phase
-      # Now, we have to generate Simulation Movement, in order to
-      # create a ProductionPackingList.
-      destination_node = last_link.getDestinationValue()
-      source_value = destination_node.getDestination()
-      source_section_value = last_link.getDestinationSection()
-      if source_value is not None:
-        property_dict["source"] = source_value
-      if source_section_value is not None:
-        property_dict["source_section"] = source_section_value
-    
+      root_explanation = self.getRootExplanation(
+          self.getBusinessProcess(applied_rule=applied_rule))
+      property_dict['source_section'] = root_explanation.getSourceSection()
+      source_method_id = root_explanation.getSourceMethodId()
+      if source_method_id is None:
+        property_dict['source'] = root_explanation.getSource()
+      else:
+        property_dict['source'] = getattr(root_explanation, source_method_id)()
+      property_dict['causality'] = root_explanation.getRelativeUrl()
+
       for prop in default_property_list:
         property_dict[prop] = movement.getProperty(prop)
     
       return property_dict
 
 from Products.ERP5Type.Utils import monkeyPatch
-monkeyPatch(TransformationSourcingRuleMixin, ProductionOrderRule)
+monkeyPatch(TransformationRuleMixin, ProductionOrderRule)
-- 
2.30.9