diff --git a/product/ERP5/Document/DeliveryBuilder.py b/product/ERP5/Document/DeliveryBuilder.py index f0c0f498104528864a3720793684c2740112f144..72d12a4aa73ab14c83bec76f418ed578f3e59d4a 100755 --- a/product/ERP5/Document/DeliveryBuilder.py +++ b/product/ERP5/Document/DeliveryBuilder.py @@ -93,6 +93,44 @@ class DeliveryBuilder(OrderBuilder): , PropertySheet.DeliveryBuilder ) + def callBeforeBuildingScript(self): + """ + Redefine this method, because it seems nothing interesting can be + done before building Delivery. + """ + pass + + def searchMovementList(self, applied_rule_uid=None): + """ + defines how to query all Simulation Movements which meet certain criteria + (including the above path path definition). + + First, select movement matching to criteria define on DeliveryBuilder + Then, call script simulation_select_method to restrict movement_list + """ + movement_list = [] + kw = {} + # We only search Simulation Movement + kw['portal_type'] = 'Simulation Movement' + # Search only child movement from this applied rule + if applied_rule_uid is not None: + kw['parent_uid'] = applied_rule_uid + # XXX Add profile query + # Add resource query + if self.getResourcePortalType() not in ('', None): + kw['resourceType'] = self.getResourcePortalType() + if self.simulation_select_method_id in ['', None]: + kw.update(self.portal_catalog.buildSQLQuery(**kw)) + movement_list = [x.getObject() for x in self.portal_catalog(**kw)] + else: + select_method = getattr(self, self.simulation_select_method_id) + movement_list = select_method(**kw) + # XXX Use buildSQLQuery will be better + movement_list = filter(lambda x: x.getDeliveryRelatedValueList()==[], + movement_list) + # XXX Add predicate test + return movement_list + def _setDeliveryMovementProperties(self, delivery_movement, simulation_movement, property_dict, update_existing_movement=0): @@ -174,12 +212,6 @@ class DeliveryBuilder(OrderBuilder): # To update the divergence status, the simulation movements # must be reindexed, and then the delivery must be touched path_list = [] - #for simulation_movement in movement.getDeliveryRelatedValueList(): - #simulation_movement.immediateReindexObject() - # simulation_movement.edit() - # path_list.append(simulation_movement.getPath()) - #movement.activate(after_path_and_method_id = (path_list, ['immediateReindexObject', 'recursiveImmediateReindexObject'])).edit() - # Launch delivery creation if (create_new_delivery == 1) and\ (rejected_movement_list != []):