diff --git a/product/ERP5/Document/InventoryLine.py b/product/ERP5/Document/InventoryLine.py index 8c995c24a7e4f0c224edca589e1d1b3ee2bae45e..74fbe71ecba95d9cc9bc5b4f69bc6f5735915ed9 100755 --- a/product/ERP5/Document/InventoryLine.py +++ b/product/ERP5/Document/InventoryLine.py @@ -26,15 +26,12 @@ # ############################################################################## -from Globals import InitializeClass, PersistentMapping from AccessControl import ClassSecurityInfo -from Acquisition import aq_base, aq_inner, aq_parent, aq_self +from Acquisition import aq_base -from Products.CMFCore.WorkflowCore import WorkflowAction -from Products.ERP5Type import Permissions, PropertySheet, Constraint, Interface +from Products.ERP5Type import Permissions, PropertySheet, Interface from Products.ERP5Type.XMLMatrix import XMLMatrix from Products.ERP5.Document.DeliveryLine import DeliveryLine -from Products.ERP5.Document.Path import Path from Products.ERP5.Document.Movement import Movement from zLOG import LOG @@ -138,42 +135,41 @@ class InventoryLine(DeliveryLine): security.declareProtected(Permissions.ModifyPortalContent, 'newCellContent') newCellContent = XMLMatrix.newCellContent - ### (kev) No more setVariationCategoryList to create cells - # If you want to create cells you have to use an InteractiveWorkflow or a python script instead - # def _setVariationCategoryList(self, value) - def _setItemIdList(self, value): """ Computes total_quantity of all given items and stores this total_quantity in the inventory attribute of the cell """ + if value is None: + return previous_item_list = self.getAggregateValueList() given_item_id_list = value item_object_list = [] - for item in given_item_id_list : - item_result_list = self.portal_catalog(id = item, portal_type="Piece Tissu") - if len(item_result_list) == 1 : - try : + for item in given_item_id_list: + item_result_list = self.portal_catalog(id=item, portal_type="Piece Tissu") + if len(item_result_list) == 1: + try: object = item_result_list[0].getObject() except : object = None - else : + else: object = None - if object is not None : + if object is not None: # if item was in previous_item_list keep it - if object in previous_item_list : + if object in previous_item_list: # we can add this item to the list of aggregated items item_object_list.append(object) # if new item verify if variated_resource of item == variated_resource of movement - elif (self.getResource() == object.getResource()) and (self.getVariationCategoryList() == object.getVariationCategoryList()) : + elif (self.getResource() == object.getResource()) \ + and (self.getVariationCategoryList() == object.getVariationCategoryList()): # we can add this item to the list of aggregated items item_object_list.append(object) # update item_id_list and build relation self.setAggregateValueList(item_object_list) # update inventory if needed - if len(item_object_list)>0 : + if len(item_object_list) > 0: quantity = 0 - for object_item in item_object_list : + for object_item in item_object_list: quantity += object_item.getQuantity() self.setInventory(quantity) @@ -182,36 +178,39 @@ class InventoryLine(DeliveryLine): Computes total_quantity of all given items and stores this total_quantity in the quantity attribute of the cell """ + if value is None: + return previous_item_list = self.getAggregateValueList() given_item_id_list = value item_object_list = [] - for item in given_item_id_list : - item_result_list = self.portal_catalog(id = item, portal_type="Piece Tissu") - if len(item_result_list) == 1 : - try : + for item in given_item_id_list: + item_result_list = self.portal_catalog(id=item, portal_type="Piece Tissu") + if len(item_result_list) == 1: + try: object = item_result_list[0].getObject() - except : + except: object = None - else : + else: object = None - if object is not None : + if object is not None: # if item was in previous_item_list keep it - if object in previous_item_list : + if object in previous_item_list: # we can add this item to the list of aggregated items item_object_list.append(object) # if new item verify if variated_resource of item == variated_resource of movement - elif (self.getResource() == object.getResource()) and (self.getVariationCategoryList() == object.getVariationCategoryList()) : + elif (self.getResource() == object.getResource()) \ + and (self.getVariationCategoryList() == object.getVariationCategoryList()): # now verify if item can be moved (not already done) last_location_title = object.getLastLocationTitle() - if self.getDestinationTitle() != last_location_title or last_location_title == '' : + if self.getDestinationTitle() != last_location_title or last_location_title == '': # we can add this item to the list of aggregated items item_object_list.append(object) # update item_id_list and build relation self.setAggregateValueList(item_object_list) # update inventory if needed - if len(item_object_list)>0 : + if len(item_object_list) > 0: quantity = 0 - for object_item in item_object_list : + for object_item in item_object_list: quantity += object_item.getQuantity() self.setProductionQuantity(quantity) @@ -220,36 +219,39 @@ class InventoryLine(DeliveryLine): Computes total_quantity of all given items and stores this total_quantity in the quantity attribute of the cell """ + if value is None: + return previous_item_list = self.getAggregateValueList() given_item_id_list = value item_object_list = [] - for item in given_item_id_list : - item_result_list = self.portal_catalog(id = item, portal_type="Piece Tissu") - if len(item_result_list) == 1 : - try : + for item in given_item_id_list: + item_result_list = self.portal_catalog(id=item, portal_type="Piece Tissu") + if len(item_result_list) == 1: + try: object = item_result_list[0].getObject() - except : + except: object = None - else : + else: object = None - if object is not None : + if object is not None: # if item was in previous_item_list keep it - if object in previous_item_list : + if object in previous_item_list: # we can add this item to the list of aggregated items item_object_list.append(object) # if new item verify if variated_resource of item == variated_resource of movement - elif (self.getResource() == object.getResource()) and (self.getVariationCategoryList() == object.getVariationCategoryList()) : + elif (self.getResource() == object.getResource()) \ + and (self.getVariationCategoryList() == object.getVariationCategoryList()): # now verify if item can be moved (not already done) last_location_title = object.getLastLocationTitle() - if self.getDestinationTitle() == last_location_title or last_location_title == '' : + if self.getDestinationTitle() == last_location_title or last_location_title == '': # we can add this item to the list of aggregated items item_object_list.append(object) # update item_id_list and build relation self.setAggregateValueList(item_object_list) # update inventory if needed - if len(item_object_list)>0 : + if len(item_object_list) > 0: quantity = 0 - for object_item in item_object_list : + for object_item in item_object_list: quantity += object_item.getRemainingQuantity() # we reset the location of the item object_item.setLocation('') @@ -259,18 +261,18 @@ class InventoryLine(DeliveryLine): """ Returns list of items if production_quantity != 0.0 """ - if self.getProductionQuantity() != 0.0 : + if self.getProductionQuantity() != 0.0: return self.getItemIdList() - else : + else: return [] def getConsumedItemIdList(self): """ Returns list of items if consumption_quantity != 0.0 """ - if self.getConsumptionQuantity() != 0.0 : + if self.getConsumptionQuantity() != 0.0: return self.getItemIdList() - else : + else: return [] # Inventory cataloging