diff --git a/product/ERP5/Document/AdoptSolver.py b/product/ERP5/Document/AdoptSolver.py index b6da68d98b7d584f3b4916170e9945936f5f0627..d022f0bbc954062ec6d2aa1a0cfd6192cd5a61ea 100644 --- a/product/ERP5/Document/AdoptSolver.py +++ b/product/ERP5/Document/AdoptSolver.py @@ -78,11 +78,23 @@ class AdoptSolver(SolverMixin, ConfigurableMixin, XMLObject): 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() + + def _clearRecordedPropertyRecursively(self, simulation_movement, property_id): + for applied_rule in simulation_movement.objectValues(): + for child_simulation_movement in applied_rule.objectValues(): + child_simulation_movement.clearRecordedProperty(property_id) + self._clearRecordedPropertyRecursively(child_simulation_movement, + property_id)