From 148e8b2633d349323170690f5ef03178ba74653b Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki <kazuhiko@nexedi.com> Date: Thu, 4 Feb 2010 15:11:09 +0000 Subject: [PATCH] get properties to be solved from divergence tester (target solver's causality's causality). git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@32268 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/AcceptSolver.py | 19 ++++++----- product/ERP5/Document/AdoptSolver.py | 48 ++++++++++++++------------- product/ERP5/Document/UnifySolver.py | 4 ++- 3 files changed, 39 insertions(+), 32 deletions(-) diff --git a/product/ERP5/Document/AcceptSolver.py b/product/ERP5/Document/AcceptSolver.py index 8147c31003..a3c925f2b4 100644 --- a/product/ERP5/Document/AcceptSolver.py +++ b/product/ERP5/Document/AcceptSolver.py @@ -64,9 +64,9 @@ class AcceptSolver(SolverMixin, ConfigurableMixin, XMLObject): Adopt new property to simulation movements, with keeping the original one recorded. """ - solved_property = self._getPortalTypeValue().getTestedProperty() + solved_property_list = self.getCausalityValue().getCausalityValue(). \ + getTestedPropertyList() for movement in self.getDeliveryValueList(): - new_value = movement.getProperty(solved_property) simulation_movement_list = movement.getDeliveryRelatedValueList() # if movement here is a delivery, we need to find simulation # movements by its movements. @@ -75,12 +75,15 @@ class AcceptSolver(SolverMixin, ConfigurableMixin, XMLObject): [x.getDeliveryRelatedValueList() \ for x in self.getDeliveryValue().getMovementList()], []) for simulation_movement in simulation_movement_list: - # XXX hard coded - if solved_property == 'quantity': - new_quantity = new_value * simulation_movement.getDeliveryRatio() - value_dict = {'quantity':new_quantity} - else: - value_dict = {solved_property:new_value} + value_dict = {} + for solved_property in solved_property_list: + new_value = movement.getProperty(solved_property) + # XXX hard coded + if solved_property == 'quantity': + new_quantity = new_value * simulation_movement.getDeliveryRatio() + value_dict.update({'quantity':new_quantity}) + else: + value_dict.update({solved_property:new_value}) self._solveRecursively(simulation_movement, value_dict) simulation_movement.expand() # Finish solving diff --git a/product/ERP5/Document/AdoptSolver.py b/product/ERP5/Document/AdoptSolver.py index d022f0bbc9..7e57370c1e 100644 --- a/product/ERP5/Document/AdoptSolver.py +++ b/product/ERP5/Document/AdoptSolver.py @@ -65,30 +65,32 @@ class AdoptSolver(SolverMixin, ConfigurableMixin, XMLObject): """ Adopt new property to movements or deliveries. """ - solved_property = self._getPortalTypeValue().getTestedProperty() + solved_property_list = self.getCausalityValue().getCausalityValue(). \ + getTestedPropertyList() for movement in self.getDeliveryValueList(): - # XXX hardcoded - if solved_property == 'quantity': - total_quantity = sum( - [x.getQuantity() for x in movement.getDeliveryRelatedValueList()]) - movement.setQuantity(total_quantity) - for simulation_movement in movement.getDeliveryRelatedValueList(): - quantity = simulation_movement.getQuantity() - delivery_ratio = quantity / total_quantity - delivery_error = total_quantity * delivery_ratio - quantity - simulation_movement.edit(delivery_ratio=delivery_ratio, - delivery_error=delivery_error) - self._clearRecordedPropertyRecursively(simulation_movement, - solved_property) - else: - # XXX TODO we need to support multiple values for categories or - # list type property. - simulation_movement = movement.getDeliveryRelatedValue() - movement.setProperty(solved_property, - simulation_movement.getProperty(solved_property)) - for simulation_movement in movement.getDeliveryRelatedValueList(): - self._clearRecordedPropertyRecursively(simulation_movement, - solved_property) + for solved_property in solved_property_list: + # XXX hardcoded + if solved_property == 'quantity': + total_quantity = sum( + [x.getQuantity() for x in movement.getDeliveryRelatedValueList()]) + movement.setQuantity(total_quantity) + for simulation_movement in movement.getDeliveryRelatedValueList(): + quantity = simulation_movement.getQuantity() + delivery_ratio = quantity / total_quantity + delivery_error = total_quantity * delivery_ratio - quantity + simulation_movement.edit(delivery_ratio=delivery_ratio, + delivery_error=delivery_error) + self._clearRecordedPropertyRecursively(simulation_movement, + solved_property) + else: + # XXX TODO we need to support multiple values for categories or + # list type property. + simulation_movement = movement.getDeliveryRelatedValue() + movement.setProperty(solved_property, + simulation_movement.getProperty(solved_property)) + for simulation_movement in movement.getDeliveryRelatedValueList(): + self._clearRecordedPropertyRecursively(simulation_movement, + solved_property) # Finish solving self.succeed() diff --git a/product/ERP5/Document/UnifySolver.py b/product/ERP5/Document/UnifySolver.py index e3d009500b..dc73759430 100644 --- a/product/ERP5/Document/UnifySolver.py +++ b/product/ERP5/Document/UnifySolver.py @@ -62,7 +62,9 @@ class UnifySolver(AcceptSolver, AdoptSolver): Adopt new property to simulation movements, with keeping the original one recorded. """ - solved_property = self._getPortalTypeValue().getTestedProperty() + # XXX it does not support multiple tested properties. + solved_property = self.getCausalityValue().getCausalityValue(). \ + getTestedProperty() for movement in self.getDeliveryValueList(): configuration_dict = self.getConfigurationPropertyDict() new_value = configuration_dict.get('value') -- 2.30.9