[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