From 6319df45ad7b22966585c685913a71cf9e10dde3 Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Mon, 28 Dec 2009 12:47:35 +0000
Subject: [PATCH] if 'movement' that is passed to solver is a delivery (eg. in
 case of start_date divergence), we need to find related simulation movements
 by its movements.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@31484 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/AcceptSolver.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/product/ERP5/Document/AcceptSolver.py b/product/ERP5/Document/AcceptSolver.py
index cee52896f8..9a0501c3cc 100644
--- a/product/ERP5/Document/AcceptSolver.py
+++ b/product/ERP5/Document/AcceptSolver.py
@@ -67,7 +67,14 @@ class AcceptSolver(SolverMixin, ConfigurableMixin, XMLObject):
     solved_property = self._getPortalTypeValue().getTestedProperty()
     for movement in self.getDeliveryValueList():
       new_value = movement.getProperty(solved_property)
-      for simulation_movement in movement.getDeliveryRelatedValueList():
+      simulation_movement_list = movement.getDeliveryRelatedValueList()
+      # if movement here is a delivery, we need to find simulation
+      # movements by its movements.
+      if len(simulation_movement_list) == 0:
+        simulation_movement_list = sum(
+          [x.getDeliveryRelatedValueList() \
+           for x in self.getDeliveryValue().getMovementList()], [])
+      for simulation_movement in simulation_movement_list:
         if not simulation_movement.isPropertyRecorded(solved_property):
           simulation_movement.recordProperty(solved_property)
         # XXX hard coded
-- 
2.30.9