Commit a79ec10b authored by Romain Courteaud's avatar Romain Courteaud

Copy properties on the Simulation Movement, instead of using acquisition.

Thanks to Rafael Monnerat.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@9866 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 61256a59
......@@ -99,6 +99,7 @@ class OrderRule(DeliveryRule):
# Create or modify movements
for movement in order_movement_list:
related_order = movement.getOrderRelatedValue()
property_dict = self._getExpandablePropertyDict(applied_rule, movement)
if related_order is None:
if movement.getParentUid() == movement.getExplanationUid():
# We are on a line
......@@ -107,7 +108,6 @@ class OrderRule(DeliveryRule):
# We are on a cell
new_id = "%s_%s" % (movement.getParentId(), movement.getId())
# Generate a simulation movement
LOG("OrderRule, expand", WARNING, "Hardcoded state list")
applied_rule.newContent(
portal_type=movement_type,
id=new_id,
......@@ -115,34 +115,15 @@ class OrderRule(DeliveryRule):
order_ratio=1,
delivery_ratio=1,
deliverable=1,
# source=movement.getSource(),
# source_section=movement.getSourceSection(),
# destination=movement.getDestination(),
# destination_section=movement.getDestinationSection(),
# quantity=movement.getQuantity(),
# resource=movement.getResource(),
# variation_category_list=movement.getVariationCategoryList(),
# variation_property_dict=movement.getVariationPropertyDict(),
# start_date=movement.getStartDate(),
# stop_date=movement.getStopDate(),
**kw)
**property_dict )
elif related_order in existing_movement_list:
if related_order not in immutable_movement_list:
# modification allowed
related_order.edit(
order_value=movement,
# source=movement.getSource(),
# source_section=movement.getSourceSection(),
# destination=movement.getDestination(),
# destination_section=movement.getDestinationSection(),
# quantity=movement.getQuantity(),
# resource=movement.getResource(),
# variation_category_list=movement.getVariationCategoryList(),
# variation_property_dict=movement.getVariationPropertyDict(),
# start_date=movement.getStartDate(),
# stop_date=movement.getStopDate(),
**kw)
**property_dict)
#related_order.setLastExpandSimulationState(order.getSimulationState())
else:
......@@ -169,3 +150,26 @@ class OrderRule(DeliveryRule):
Checks that the movement is divergent
"""
return Rule.isDivergent(self, movement)
security.declareProtected(Permissions.AccessContentsInformation,
'_getExpandablePropertyDict')
def _getExpandablePropertyDict(self, applied_rule, movement,
default_property_list=None, **kw):
"""
Return a Dictionary with the Properties used to edit
the simulation movement
"""
property_dict = {}
if default_property_list is None:
LOG("Order Rule , _getPropertiesTo", WARNING,
"Hardcoded properties set")
default_property_list = (
'source_section', 'destination_section', 'source',
'destination', 'resource', 'variation_category_list',
'aggregate_list', 'start_date', 'stop_date')
for prop in default_property_list:
property_dict[prop] = movement.getProperty(prop)
return property_dict
......@@ -33,7 +33,7 @@ from Products.ERP5.Document.OrderRule import OrderRule
from Products.ERP5.Document.TransformationSourcingRule import\
TransformationSourcingRuleMixin
from zLOG import LOG
from zLOG import LOG, WARNING
class ProductionOrderRule(OrderRule):
"""
......@@ -60,14 +60,26 @@ class ProductionOrderRule(OrderRule):
)
# Simulation workflow
security.declareProtected(Permissions.ModifyPortalContent, 'expand')
def expand(self, applied_rule, force=0, **kw):
security.declareProtected(Permissions.AccessContentsInformation,
'_getExpandablePropertyDict')
def _getExpandablePropertyDict(self, applied_rule, movement,
default_property_list=None, **kw):
"""
Expands the current movement downward.
-> new status -> expanded
An applied rule can be expanded only if its parent movement
is expanded.
Return a Dictionary with the Properties used to edit
the simulation movement.
"""
property_dict = {}
if default_property_list is None:
LOG("Order Rule , _getExpandablePropertyDict", WARNING,
"Hardcoded properties set")
default_property_list = (
'destination_section',
'destination', 'resource',
'variation_category_list',
'aggregate_list',
'start_date', 'stop_date')
supply_chain = self.getSupplyChain(applied_rule)
# We got a supply chain
# Try to get the last SupplyLink
......@@ -76,14 +88,17 @@ class ProductionOrderRule(OrderRule):
# Now, we have to generate Simulation Movement, in order to
# create a ProductionPackingList.
destination_node = last_link.getDestinationValue()
source_value = destination_node.getDestinationValue()
source_section_value = last_link.getDestinationSectionValue()
source_value = destination_node.getDestination()
source_section_value = last_link.getDestinationSection()
if source_value is not None:
kw["source_value"] = source_value
property_dict["source"] = source_value
if source_section_value is not None:
kw["source_section_value"] = source_section_value
# Pass to base class
OrderRule.expand(self, applied_rule, force=force, **kw)
property_dict["source_section"] = source_section_value
for prop in default_property_list:
property_dict[prop] = movement.getProperty(prop)
return property_dict
from Products.ERP5Type.Utils import monkeyPatch
monkeyPatch(TransformationSourcingRuleMixin, ProductionOrderRule)
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