""" Updates all sources and destinations to new values defined in self by mapping source -> target_source destination -> target_destination source_section -> target_source_section destination_section -> target_destination_section """ for p in ('source', 'destination'): for q in ('source', 'destination'): if simulation_movement.getProperty(p) == getattr(self, q): self.setProperty(p, getattr(self, 'target_%s' % q)) break for p in ('source_section', 'destination_section'): for q in ('source_section', 'destination_section'): if simulation_movement.getProperty(p) == getattr(self, q): self.setProperty(p, getattr(self, 'target_%s' % q)) break delivery_value = simulation_movement.getDeliveryValue( ) # Get delivery movement if delivery_value is not None: delivery_value = delivery_value.getDeliveryValue( ) # Get root delivery if delivery_value is not None: delivery_value.activate( after_method_id='propagateResourceToSimulation' ).updateFromSimulation() registerTargetSolver(Redirect)
Redirects all simulation movements to new target """ def solve(self, simulation_movement, new_target): """ Updates all sources and destinations to new values defined in self by mapping source -> target_source destination -> target_destination source_section -> target_source_section destination_section -> target_destination_section """ for p in ("source", "destination"): for q in ("source", "destination"): if simulation_movement.getProperty(p) == getattr(self, q): self.setProperty(p, getattr(self, "target_%s" % q)) break for p in ("source_section", "destination_section"): for q in ("source_section", "destination_section"): if simulation_movement.getProperty(p) == getattr(self, q): self.setProperty(p, getattr(self, "target_%s" % q)) break delivery_value = simulation_movement.getDeliveryValue() # Get delivery movement if delivery_value is not None: delivery_value = delivery_value.getDeliveryValue() # Get root delivery if delivery_value is not None: delivery_value.activate(after_method_id="propagateResourceToSimulation").updateFromSimulation() registerTargetSolver(Redirect)
# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################## from Products.ERP5.Tool.SimulationTool import registerTargetSolver from TargetSolver import TargetSolver class Defer(TargetSolver): """ Split and defer simulation movement. Many 'deliverable movements' are created in the Simulation and may need to be delivered later. Solver accumulates such movements in the solving process and creates a new delivery """ def solve(self, movement): """ Split a movement and accumulate """ def close(self): """ After resolution has taken place, create a new delivery with deliverable split movements. """ registerTargetSolver(Defer)