[Erp5-report] r12212 - in /erp5/trunk/products/ERP5: Tool/ bootstrap/erp5_core/SkinTemplate...

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jan 22 18:31:44 CET 2007


Author: jerome
Date: Mon Jan 22 18:31:41 2007
New Revision: 12212

URL: http://svn.erp5.org?rev=12212&view=rev
Log:
added support for group_by_payment and group_by_mirror_section in getInventoryList


Modified:
    erp5/trunk/products/ERP5/Tool/SimulationTool.py
    erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
    erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision
    erp5/trunk/products/ERP5/tests/testInventoryAPI.py

Modified: erp5/trunk/products/ERP5/Tool/SimulationTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/SimulationTool.py?rev=12212&r1=12211&r2=12212&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py Mon Jan 22 18:31:41 2007
@@ -172,7 +172,7 @@
       category_tool = getToolByName(self, 'portal_categories')
       property_uid_list = []
       if type(property) is type('') :
-        if as_text == 0:
+        if not as_text:
           prop_value = category_tool.getCategoryValue(property)
           if prop_value is None:
             raise ValueError, 'Category %s does not exists' % property
@@ -181,7 +181,7 @@
           property_uid_list.append(property)
       elif type(property) is type([]) or type(property) is type(()) :
         for property_item in property :
-          if as_text == 0:
+          if not as_text:
             prop_value = category_tool.getCategoryValue(property_item)
             if prop_value is None:
               raise ValueError, 'Category %s does not exists' % property_item
@@ -193,14 +193,14 @@
         if type(property['query']) is type('') :
           property['query'] = [property['query']]
         for property_item in property['query'] :
-          if as_text == 0:
+          if not as_text:
             prop_value = category_tool.getCategoryValue(property_item)
             if prop_value is None:
               raise ValueError, 'Category %s does not exists' % property_item
             tmp_uid_list.append(prop_value.getUid())
           else:
             tmp_uid_list.append(property_item)
-        if len(tmp_uid_list) :
+        if tmp_uid_list:
           property_uid_list = {}
           property_uid_list['operator'] = property['operator']
           property_uid_list['query'] = tmp_uid_list
@@ -443,19 +443,26 @@
 
       # build the group by expression
       group_by_expression_list = []
-      if kw.get('group_by_node',0):
+      if kw.get('group_by_node', 0):
         group_by_expression_list.append('%s.node_uid' % table)
-      if kw.get('group_by_sub_variation',0):
+      if kw.get('group_by_mirror_node', 0):
+        group_by_expression_list.append('%s.mirror_node_uid' % table)
+      if kw.get('group_by_section', 0):
+        group_by_expression_list.append('%s.section_uid' % table)
+      if kw.get('group_by_mirror_section', 0):
+        group_by_expression_list.append('%s.mirror_section_uid' % table)
+      if kw.get('group_by_payment', 0):
+        group_by_expression_list.append('%s.payment_uid' % table)
+      if kw.get('group_by_sub_variation', 0):
         group_by_expression_list.append('%s.sub_variation_text' % table)
-      if kw.get('group_by_variation',0):
+      if kw.get('group_by_variation', 0):
         group_by_expression_list.append('%s.variation_text' % table)
-      if kw.get('group_by_mirror_node',0):
-        group_by_expression_list.append('%s.mirror_node_uid' % table)
-      if len(group_by_expression_list):
-        # Always group by resource
-        group_by_expression_list.append('%s.resource_uid' % table)
+      if group_by_expression_list:
+        # by default, we group by resource
+        if kw.get('group_by_resource', 1):
+          group_by_expression_list.append('%s.resource_uid' % table)
         new_kw['group_by_expression'] = ', '.join(group_by_expression_list)
-
+      
       sql_kw.update(self.portal_catalog.buildSQLQuery(**new_kw))
       return sql_kw
 

Modified: erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml?rev=12212&r1=12211&r2=12212&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Resource_zGetInventoryList.xml Mon Jan 22 18:31:41 2007
@@ -243,6 +243,9 @@
   stock.uid AS stock_uid,\n
   stock.date as date,\n
   stock.simulation_state as simulation_state,\n
+  stock.mirror_section_uid as mirror_section_uid,\n
+  stock.payment_uid as payment_uid,\n
+  stock.mirror_node_uid as mirror_node_uid,\n
   catalog.path as path\n
 \n
 FROM\n
@@ -381,6 +384,9 @@
   stock.uid AS stock_uid,\n
   stock.date as date,\n
   stock.simulation_state as simulation_state,\n
+  stock.mirror_section_uid as mirror_section_uid,\n
+  stock.payment_uid as payment_uid,\n
+  stock.mirror_node_uid as mirror_node_uid,\n
   catalog.path as path\n
 \n
 FROM\n

Modified: erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision?rev=12212&r1=12211&r2=12212&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision (original)
+++ erp5/trunk/products/ERP5/bootstrap/erp5_core/bt/revision Mon Jan 22 18:31:41 2007
@@ -1,1 +1,1 @@
-242
+243

Modified: erp5/trunk/products/ERP5/tests/testInventoryAPI.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testInventoryAPI.py?rev=12212&r1=12211&r2=12212&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testInventoryAPI.py (original)
+++ erp5/trunk/products/ERP5/tests/testInventoryAPI.py Mon Jan 22 18:31:41 2007
@@ -27,6 +27,9 @@
 ##############################################################################
 
 """Unit Tests for Inventory API.
+
+TODO: test variation
+
 """
 
 import sys
@@ -85,6 +88,9 @@
     self.mirror_node = self._makeOrganisation(title='Mirror Node')
     self.resource = self.getCurrencyModule().newContent(
                                   title='Resource',
+                                  portal_type='Currency')
+    self.other_resource = self.getCurrencyModule().newContent(
+                                  title='Other Resource',
                                   portal_type='Currency')
     # create a dummy Rule, to be able to create simulation movements
     rule_tool = self.portal.portal_rules
@@ -524,8 +530,69 @@
     self.assertEquals([r for r in inventory_list if r.node_relative_url ==
                   self.mirror_node.getRelativeUrl()][0].inventory, -300)
 
-  # TODO group by mirror_node, section, mirror_section, payment, resource
-  # ? and maybe project, function, portal_type ?
+  def test_GroupByMirrorNode(self):
+    getInventoryList = self.getSimulationTool().getInventoryList
+    self._makeMovement(quantity=100)
+    self._makeMovement(source_value=self.other_node, quantity=100)
+    self._makeMovement(source_value=None, quantity=100)
+    inventory_list = getInventoryList(section_uid=self.section.getUid(),
+                                      group_by_mirror_node=1)
+    self.assertEquals(3, len(inventory_list))
+    self.assertEquals([r for r in inventory_list if r.mirror_node_uid ==
+                  self.mirror_node.getUid()][0].inventory, 100)
+    self.assertEquals([r for r in inventory_list if r.mirror_node_uid ==
+                  self.other_node.getUid()][0].inventory, 100)
+    self.assertEquals([r for r in inventory_list
+                       if r.mirror_node_uid is None][0].inventory, 100)
+
+  def test_GroupBySection(self):
+    getInventoryList = self.getSimulationTool().getInventoryList
+    self._makeMovement(quantity=100)
+    self._makeMovement(destination_section_value=self.other_node, quantity=100)
+    self._makeMovement(destination_section_value=None, quantity=100)
+    inventory_list = getInventoryList(node_uid=self.node.getUid(),
+                                      group_by_section=1)
+    self.assertEquals(3, len(inventory_list))
+    self.assertEquals([r for r in inventory_list if r.section_relative_url ==
+                  self.section.getRelativeUrl()][0].inventory, 100)
+    self.assertEquals([r for r in inventory_list if r.section_relative_url ==
+                  self.other_node.getRelativeUrl()][0].inventory, 100)
+    self.assertEquals([r for r in inventory_list if r.section_relative_url is
+                  None][0].inventory, 100)
+  
+  def test_GroupByResource(self):
+    getInventoryList = self.getSimulationTool().getInventoryList
+    self._makeMovement(quantity=100)
+    self._makeMovement(resource_value=self.other_resource, quantity=100)
+    # group_by_resource is implicit ...
+    inventory_list = getInventoryList(node_uid=self.node.getUid(),
+                                      group_by_node=1)
+    self.assertEquals(2, len(inventory_list))
+    self.assertEquals([r for r in inventory_list if r.resource_relative_url ==
+                  self.resource.getRelativeUrl()][0].inventory, 100)
+    self.assertEquals([r for r in inventory_list if r.resource_relative_url ==
+                  self.other_resource.getRelativeUrl()][0].inventory, 100)
+    # ... but can be disabled
+    inventory_list = getInventoryList(node_uid=self.node.getUid(),
+                                      group_by_node=1,
+                                      group_by_resource=0)
+    self.assertEquals(1, len(inventory_list))
+    self.assertEquals(inventory_list[0].inventory, 200)
+
+  def test_GroupByPayment(self):
+    getInventoryList = self.getSimulationTool().getInventoryList
+    self._makeMovement(quantity=100)
+    self._makeMovement(destination_payment_value=self.payment_node,
+                       quantity=200)
+    inventory_list = getInventoryList(node_uid=self.node.getUid(),
+                                      group_by_node=1, group_by_payment=1)
+    self.assertEquals(2, len(inventory_list))
+    self.assertEquals([r for r in inventory_list if r.payment_uid is
+                      None][0].inventory, 100)
+    self.assertEquals([r for r in inventory_list if r.payment_uid ==
+                       self.payment_node.getUid()][0].inventory, 200)
+
+
 
 class TestMovementHistoryList(InventoryAPITestCase):
   """Tests Movement history list methods.
@@ -1030,10 +1097,12 @@
     self.assertEquals(11, len(mvt_history_list))
     self.assertEquals(0, mvt_history_list[-1].running_total_quantity)
     self.assertEquals(0, mvt_history_list[-1].running_total_price)
-    
+
+
 class TestInventoryStat(InventoryAPITestCase):
   """Tests Inventory Stat methods.
   """
+
 
 if __name__ == '__main__':
   framework()




More information about the Erp5-report mailing list