[Erp5-report] r16612 - /erp5/trunk/products/ERP5/Document/Inventory.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Sep 25 18:27:14 CEST 2007


Author: romain
Date: Tue Sep 25 18:27:14 2007
New Revision: 16612

URL: http://svn.erp5.org?rev=16612&view=rev
Log:
Wrap to 80 characters.

Modified:
    erp5/trunk/products/ERP5/Document/Inventory.py

Modified: erp5/trunk/products/ERP5/Document/Inventory.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Inventory.py?rev=16612&r1=16611&r2=16612&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Inventory.py (original)
+++ erp5/trunk/products/ERP5/Document/Inventory.py Tue Sep 25 18:27:14 2007
@@ -33,184 +33,202 @@
 from zLOG import LOG
 
 class Inventory(Delivery):
-    """
-      Inventory
-    """
-    # CMF Type Definition
-    meta_type = 'ERP5 Inventory'
-    portal_type = 'Inventory'
-    isPortalContent = 1
-    isRADContent = 1
-    isDelivery = 1
-    isInventory = 1
-
-    # Declarative security
-    security = ClassSecurityInfo()
-    security.declareObjectProtected(Permissions.AccessContentsInformation)
-
-    # Default Properties
-    property_sheets = ( PropertySheet.Base
-                      , PropertySheet.XMLObject
-                      , PropertySheet.CategoryCore
-                      , PropertySheet.DublinCore
-                      , PropertySheet.Task
-                      , PropertySheet.Arrow
-                      , PropertySheet.Movement
-                      , PropertySheet.Delivery
-                      , PropertySheet.Path
-                      , PropertySheet.FlowCapacity
-                      , PropertySheet.Inventory
-                      )
-
-    security.declarePublic('alternateReindexObject')
-    def alternateReindexObject(self, **kw):
-      """This method is called when an inventory object is included in a
-      group of catalogged objects.
-      """
-      return self.immediateReindexObject(**kw)
-
-    def immediateReindexObject(self,temp_constructor=None,**kw):
-      """
-      Rewrite reindexObject so that we can insert lines in stock table
-      which will be equal to the difference between stock values for
-      resource in the inventory and the one before the date of this inventory
-
-      temp_constructor is used in some particular cases where we want
-      to have our own temp object constructor, this is usefull if we
-      want to use some classes with some particular methods
-      """
-      sql_catalog_id = kw.pop("sql_catalog_id", None)
-      disable_archive = kw.pop("disable_archive", 0)
-      connection_id = None
-      if sql_catalog_id is not None:
-          # try to get connection used in the catalog 
-          catalog = self.portal_catalog[sql_catalog_id]
-          for method in catalog.objectValues():
-              if method.meta_type == "Z SQL Method":
-                  if 'deferred' not in method.connection_id \
-                         and 'transactionless' not in method.connection_id:
-                      connection_id = method.connection_id
-                      break
-                  
-      resource_and_variation_dict = {}
-      stock_object_list = []
-      stock_append = stock_object_list.append
-      if temp_constructor is None:
-        from Products.ERP5Type.Document import newTempDeliveryLine
-        temp_constructor = newTempDeliveryLine
-      start_date = self.getStartDate()
-      node = self.getDestination()
-      # build a dict containing all inventory for this node group by resource/variation
-      # and then subvariation
-      current_inventory_list = self.getPortalObject().portal_simulation.getInventoryList( \
-                                    to_date          = start_date
-                                    , node             = node
-                                    , simulation_state = self.getPortalCurrentInventoryStateList()
-                                    , group_by_sub_variation = 1
-                                    , group_by_variation = 1
-                                    , group_by_resource = 1
-                                    , connection_id = connection_id
-                                    )
-      current_inventory_dict = {}
-      current_inventory_key_id_list = ('resource_relative_url', 'variation_text')
-      for line in current_inventory_list:
-        current_inventory_key = tuple([line[x] for x in current_inventory_key_id_list])
-        if current_inventory_key[1] == None:
-            # To be consistent
-            current_inventory_key = (current_inventory_key[0], "")
-        try:
-          current_inventory_by_sub_variation = current_inventory_dict[current_inventory_key]
-        except KeyError:
-          current_inventory_by_sub_variation = current_inventory_dict[current_inventory_key] = {}
-        current_inventory_by_sub_variation[line['sub_variation_text']] = line['total_quantity']
-
-      def getCurrentInventoryBySubVariation(**criterion_dict):
-        current_inventory_key = tuple([criterion_dict[x] for x in current_inventory_key_id_list])
-        return current_inventory_dict.get(current_inventory_key, {})
-      # Browse all movements on inventory and create diff line when necessary
-      not_used_inventory_dict = {}
-      inventory_uid = self.getUid()
-      inventory_id = self.getId()
-      for movement in self.getMovementList():
-        if movement.getResourceValue() is not None and movement.getQuantity() not in (None,''):
-          resource_path =  movement.getResource()
-          variation_text = movement.getVariationText()
-          movement_quantity = movement.getQuantity()
-          destination_payment_path = movement.getDestinationPayment()          
-          resource_and_variation_key = (resource_path, variation_text)
-          inventory_by_subvariation_dict = getCurrentInventoryBySubVariation(
-              resource_relative_url=resource_path,
-              variation_text=variation_text)
-          movement_sub_variation_text = movement.getSubVariationText()
-          # Check wath is the quantity difference
-          if movement_sub_variation_text in inventory_by_subvariation_dict.keys():
-              total_quantity = inventory_by_subvariation_dict.pop(movement_sub_variation_text)
-              # Put remaining subvariation in a dict to know which one to removed at end
-              not_used_inventory_dict[resource_and_variation_key] = inventory_by_subvariation_dict
-              diff_quantity = movement_quantity - total_quantity
+  """
+  Inventory
+  """
+  # CMF Type Definition
+  meta_type = 'ERP5 Inventory'
+  portal_type = 'Inventory'
+  isPortalContent = 1
+  isRADContent = 1
+  isDelivery = 1
+  isInventory = 1
+
+  # Declarative security
+  security = ClassSecurityInfo()
+  security.declareObjectProtected(Permissions.AccessContentsInformation)
+
+  # Default Properties
+  property_sheets = ( PropertySheet.Base
+                    , PropertySheet.XMLObject
+                    , PropertySheet.CategoryCore
+                    , PropertySheet.DublinCore
+                    , PropertySheet.Task
+                    , PropertySheet.Arrow
+                    , PropertySheet.Movement
+                    , PropertySheet.Delivery
+                    , PropertySheet.Path
+                    , PropertySheet.FlowCapacity
+                    , PropertySheet.Inventory
+                    )
+
+  security.declarePublic('alternateReindexObject')
+  def alternateReindexObject(self, **kw):
+    """
+    This method is called when an inventory object is included in a
+    group of catalogged objects.
+    """
+    return self.immediateReindexObject(**kw)
+
+  def immediateReindexObject(self, temp_constructor=None, **kw):
+    """
+    Rewrite reindexObject so that we can insert lines in stock table
+    which will be equal to the difference between stock values for
+    resource in the inventory and the one before the date of this inventory
+
+    temp_constructor is used in some particular cases where we want
+    to have our own temp object constructor, this is usefull if we
+    want to use some classes with some particular methods
+    """
+    sql_catalog_id = kw.pop("sql_catalog_id", None)
+    disable_archive = kw.pop("disable_archive", 0)
+    connection_id = None
+    if sql_catalog_id is not None:
+      # try to get connection used in the catalog 
+      catalog = self.portal_catalog[sql_catalog_id]
+      for method in catalog.objectValues():
+        if method.meta_type == "Z SQL Method":
+          if 'deferred' not in method.connection_id \
+               and 'transactionless' not in method.connection_id:
+            connection_id = method.connection_id
+            break
+                
+    resource_and_variation_dict = {}
+    stock_object_list = []
+    stock_append = stock_object_list.append
+    if temp_constructor is None:
+      from Products.ERP5Type.Document import newTempDeliveryLine
+      temp_constructor = newTempDeliveryLine
+    start_date = self.getStartDate()
+    node = self.getDestination()
+    # build a dict containing all inventory for this node 
+    # group by resource/variation and then subvariation
+    current_inventory_list = \
+        self.getPortalObject().portal_simulation.getInventoryList(
+                to_date=start_date,
+                node=node,
+                simulation_state=self.getPortalCurrentInventoryStateList(),
+                group_by_sub_variation=1,
+                group_by_variation=1,
+                group_by_resource=1,
+                connection_id=connection_id,
+        )
+    current_inventory_dict = {}
+    current_inventory_key_id_list = ('resource_relative_url', 'variation_text')
+    for line in current_inventory_list:
+      current_inventory_key = tuple(
+          [line[x] for x in current_inventory_key_id_list])
+      if current_inventory_key[1] == None:
+        # To be consistent
+        current_inventory_key = (current_inventory_key[0], "")
+      try:
+        current_inventory_by_sub_variation = \
+            current_inventory_dict[current_inventory_key]
+      except KeyError:
+        current_inventory_by_sub_variation = \
+            current_inventory_dict[current_inventory_key] = {}
+      current_inventory_by_sub_variation[line['sub_variation_text']] = \
+            line['total_quantity']
+
+    def getCurrentInventoryBySubVariation(**criterion_dict):
+      current_inventory_key = tuple(
+          [criterion_dict[x] for x in current_inventory_key_id_list])
+      return current_inventory_dict.get(current_inventory_key, {})
+
+    # Browse all movements on inventory and create diff line when necessary
+    not_used_inventory_dict = {}
+    inventory_uid = self.getUid()
+    inventory_id = self.getId()
+    for movement in self.getMovementList():
+      if movement.getResourceValue() is not None and \
+          movement.getQuantity() not in (None, ''):
+        resource_path =  movement.getResource()
+        variation_text = movement.getVariationText()
+        movement_quantity = movement.getQuantity()
+        destination_payment_path = movement.getDestinationPayment()          
+        resource_and_variation_key = (resource_path, variation_text)
+        inventory_by_subvariation_dict = getCurrentInventoryBySubVariation(
+                          resource_relative_url=resource_path,
+                          variation_text=variation_text)
+        movement_sub_variation_text = movement.getSubVariationText()
+        # Check wath is the quantity difference
+        if movement_sub_variation_text in \
+                              inventory_by_subvariation_dict.keys():
+          total_quantity = inventory_by_subvariation_dict.pop(
+                          movement_sub_variation_text)
+          # Put remaining subvariation in a dict to know which one 
+          # to removed at end
+          not_used_inventory_dict[resource_and_variation_key] = \
+                            inventory_by_subvariation_dict
+          diff_quantity = movement_quantity - total_quantity
+        else:
+          # Inventory for new resource/variation/sub_variation
+          diff_quantity = movement_quantity
+          # Put remaining subvariation in a dict to know which one 
+          # to removed at end
+          not_used_inventory_dict[resource_and_variation_key] = \
+                                        inventory_by_subvariation_dict
+
+        # Create tmp movement with only diff between inventory
+        # and previous stock values
+        if diff_quantity != 0:
+          kwd = {'uid': inventory_uid,
+                 'start_date': start_date}
+          if variation_text is not None:
+            variation_list = variation_text.split('\n')
           else:
-              # Inventory for new resource/variation/sub_variation
-              diff_quantity = movement_quantity
-              # Put remaining subvariation in a dict to know which one to removed at end
-              not_used_inventory_dict[resource_and_variation_key] = inventory_by_subvariation_dict
-
-          # Create tmp movement with only diff between inventory
-          # and previous stock values
-          if diff_quantity != 0:
-              kwd = {'uid':inventory_uid,
-                     'start_date': start_date}
-              if variation_text is not None:
-                  variation_list = variation_text.split('\n')
-              else:
-                  variation_list = []
-              category_list = self.getCategoryList()
-              sub_variation_list = []
-              if movement_sub_variation_text is not None:
-                  sub_variation_list = movement_sub_variation_text.split('\n')
-              temp_delivery_line = temp_constructor(self,
-                                                    inventory_id)
-              kwd['quantity'] = diff_quantity
-              category_list.append('resource/%s' % resource_path)
-              category_list.append('destination_payment/%s' % destination_payment_path)
-              category_list.extend(variation_list)
-              category_list.extend(sub_variation_list)
-              kwd['category_list'] = category_list
-              temp_delivery_line.edit(**kwd)
-              stock_append(temp_delivery_line)
-
-      # Now create line to remove some subvariation text not present in new inventory
-      for resource_and_variation_key in not_used_inventory_dict.keys():
-        inventory_by_subvariation_dict = not_used_inventory_dict[resource_and_variation_key]
-        for sub_variation_text in inventory_by_subvariation_dict.keys():
-            category_list = self.getCategoryList()
-            quantity = inventory_by_subvariation_dict[sub_variation_text]
-            resource_path, variation_text = resource_and_variation_key
-            kwd = {'uid':inventory_uid,
-                   'start_date': start_date}
-            if variation_text is not None:
-                variation_list = variation_text.split('\n')
-            else:
-                variation_list = []                
-            sub_variation_list = sub_variation_text.split('\n')
-            diff_quantity = - quantity                    
-            temp_delivery_line = temp_constructor(self,
-                                                  inventory_id)
-            kwd['quantity'] = diff_quantity
-            category_list.append('resource/%s' % resource_path)
-            category_list.extend(variation_list)
-            category_list.extend(sub_variation_list)
-            kwd['category_list'] = category_list
-            temp_delivery_line.edit(**kwd)
-            stock_append(temp_delivery_line)
-
-      # Reindex objects
-      object_list = [self]
-      self.portal_catalog.catalogObjectList(object_list, disable_archive=disable_archive)
-      if len(stock_object_list)==0:
-        # Make sure to remove all lines
-        from Products.ERP5Type.Document import newTempBase
-        stock_append(temp_constructor(self,inventory_id,
-                                 uid=inventory_uid))
-      self.portal_catalog.catalogObjectList(stock_object_list,
-           method_id_list=('z_catalog_stock_list',),
-           disable_cache=1,check_uid=0, disable_archive=disable_archive)
+            variation_list = []
+          category_list = self.getCategoryList()
+          sub_variation_list = []
+          if movement_sub_variation_text is not None:
+            sub_variation_list = movement_sub_variation_text.split('\n')
+          temp_delivery_line = temp_constructor(self,
+                                                inventory_id)
+          kwd['quantity'] = diff_quantity
+          category_list.append('resource/%s' % resource_path)
+          category_list.append(
+              'destination_payment/%s' % destination_payment_path)
+          category_list.extend(variation_list)
+          category_list.extend(sub_variation_list)
+          kwd['category_list'] = category_list
+          temp_delivery_line.edit(**kwd)
+          stock_append(temp_delivery_line)
+
+    # Now create line to remove some subvariation text not present 
+    # in new inventory
+    for resource_and_variation_key in not_used_inventory_dict.keys():
+      inventory_by_subvariation_dict = \
+          not_used_inventory_dict[resource_and_variation_key]
+      for sub_variation_text in inventory_by_subvariation_dict.keys():
+        category_list = self.getCategoryList()
+        quantity = inventory_by_subvariation_dict[sub_variation_text]
+        resource_path, variation_text = resource_and_variation_key
+        kwd = {'uid': inventory_uid,
+               'start_date': start_date}
+        if variation_text is not None:
+          variation_list = variation_text.split('\n')
+        else:
+          variation_list = []                
+        sub_variation_list = sub_variation_text.split('\n')
+        diff_quantity = - quantity                    
+        temp_delivery_line = temp_constructor(self, inventory_id)
+        kwd['quantity'] = diff_quantity
+        category_list.append('resource/%s' % resource_path)
+        category_list.extend(variation_list)
+        category_list.extend(sub_variation_list)
+        kwd['category_list'] = category_list
+        temp_delivery_line.edit(**kwd)
+        stock_append(temp_delivery_line)
+
+    # Reindex objects
+    object_list = [self]
+    self.portal_catalog.catalogObjectList(object_list, 
+                                          disable_archive=disable_archive)
+    if len(stock_object_list)==0:
+      # Make sure to remove all lines
+      from Products.ERP5Type.Document import newTempBase
+      stock_append(temp_constructor(self, inventory_id, uid=inventory_uid))
+    self.portal_catalog.catalogObjectList(
+           stock_object_list, method_id_list=('z_catalog_stock_list', ),
+           disable_cache=1, check_uid=0, disable_archive=disable_archive)
+




More information about the Erp5-report mailing list