diff --git a/product/ERP5/Document/SolverProcess.py b/product/ERP5/Document/SolverProcess.py index 92296a68894ee41e9c6bf1d56919f0670341f222..1f07a395ab23107caf5094fe24fe3b0a4d7e45c7 100644 --- a/product/ERP5/Document/SolverProcess.py +++ b/product/ERP5/Document/SolverProcess.py @@ -179,8 +179,16 @@ class SolverProcess(XMLObject, ActiveProcess): """ isTransitionPossible = self.getPortalObject().portal_workflow.isTransitionPossible for solver in self.contentValues(portal_type=self.getPortalObject().getPortalTargetSolverTypeList()): - if isTransitionPossible(solver, 'start_solving'): - solver.startSolving() + if solver.isTempObject(): + solver_type = solver._getPortalTypeValue() + solver_type.activate(activate_kw=activate_kw).solve( + activate_kw=activate_kw, + delivery_list=solver.getDeliveryList(), + configuration_dict=solver.getConfigurationPropertyDict() + ) + else: + if isTransitionPossible(solver, 'start_solving'): + solver.startSolving() solver.activate(active_process=self, activate_kw=activate_kw).solve( activate_kw=activate_kw) diff --git a/product/ERP5/Document/SolverTypeInformation.py b/product/ERP5/Document/SolverTypeInformation.py index 48764f1645e26c7589fa2c736009624b1cc405fb..6d935319c2e4c97351e391e46d75f883f642070f 100644 --- a/product/ERP5/Document/SolverTypeInformation.py +++ b/product/ERP5/Document/SolverTypeInformation.py @@ -215,3 +215,21 @@ class SolverTypeInformation(Predicate, ERP5TypeInformation): method = getattr(solver, method_id) return method() + + def solve(self, delivery_list=None, configuration_dict=None, + activate_kw=None, **kw): + if delivery_list is None: + return + if configuration_dict is None: + configuration_dict = {} + solver_process_tool = self.getPortalObject().portal_solver_processes + solver_process = solver_process_tool.newContent( + portal_type='Solver Process', + temp_object=True) + solver = solver_process.newContent(portal_type=self.getId(), + delivery_list=delivery_list) + solver.updateConfiguration(**configuration_dict) + if self.getPortalObject().portal_workflow.isTransitionPossible( + solver, 'start_solving'): + solver.startSolving() + solver.solve(activate_kw=activate_kw)