diff --git a/product/ERP5/Tool/SimulationTool.py b/product/ERP5/Tool/SimulationTool.py index 1f0c0082f65fbae32f73a5896e3c0915c993135c..1181dfdfcf99bdc29f128739cc2ac0a979fb4aac 100755 --- a/product/ERP5/Tool/SimulationTool.py +++ b/product/ERP5/Tool/SimulationTool.py @@ -379,6 +379,8 @@ class SimulationTool (BaseTool): return sql_kw + ####################################################### + # Inventory management security.declareProtected(Permissions.AccessContentsInformation, 'getInventory') def getInventory(self, src__=0, ignore_variation=0, standardise=0, omit_simulation=0, omit_input=0, omit_output=0, @@ -737,6 +739,65 @@ class SimulationTool (BaseTool): return None + + ####################################################### + # Traceability management + security.declareProtected(Permissions.AccessContentsInformation, 'getTrackingList') + def getTrackingList(self, src__=0, + ignore_variation=0, standardise=0, omit_simulation=0, omit_input=0, omit_output=0, + selection_domain=None, selection_report=None, **kw) : + """ + Returns the history of an item + + uid (of item) + date + node_uid + section_uid + resource_uid + variation_text + + This method is only suitable for singleton items (an item which can + only be at a single place at a given time). Such items include + containers, serial numbers (ex. for engine), rolls with subrolls, + + This method is not suitable for batches (ex. a coloring batch). + For such items, standard getInventoryList method is appropriate + + Parameters are the same as for getInventory. + + Default sort orders is based on dates, reverse. + """ + sql_kw = self._generateSQLKeywordDict(**kw) + + if src__ : + return self.Resource_zGetTrackingList(src__=1, + ignore_variation=ignore_variation, standardise=standardise, omit_simulation=omit_simulation, + omit_input=omit_input, omit_output=omit_output, + selection_domain=selection_domain, selection_report=selection_report, **sql_kw) + + return self.Resource_zGetTrackingList( + ignore_variation=ignore_variation, standardise=standardise, omit_simulation=omit_simulation, + omit_input=omit_input, omit_output=omit_output, + selection_domain=selection_domain, selection_report=selection_report, **sql_kw) + + security.declareProtected(Permissions.AccessContentsInformation, 'getCurrentTrackingList') + def getCurrentTrackingList(self, **kw): + """ + Returns list of current inventory grouped by section or site + """ + kw['simulation_state'] = self.getPortalCurrentInventoryStateList() + return self.getTrackingList(**kw) + + security.declareProtected(Permissions.AccessContentsInformation, 'getFutureTrackingList') + def getFutureTrackingList(self, **kw): + """ + Returns list of future inventory grouped by section or site + """ + kw['simulation_state'] = tuple(list(self.getPortalFutureInventoryStateList()) + + list(self.getPortalReservedInventoryStateList()) + list(self.getPortalCurrentInventoryStateList())) + return self.getTrackingList(**kw) + + ####################################################### # Movement Group Collection / Delivery Creation def collectMovement(self, movement_list,class_list=None,**kw):