[Erp5-report] r14091 - /erp5/trunk/products/ERP5/Tool/SimulationTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Apr 16 23:45:43 CEST 2007
Author: romain
Date: Mon Apr 16 23:45:42 2007
New Revision: 14091
URL: http://svn.erp5.org?rev=14091&view=rev
Log:
Keep compatibility: getInventory joined related keys with the catalog table instead of the stock table.
Modified:
erp5/trunk/products/ERP5/Tool/SimulationTool.py
Modified: erp5/trunk/products/ERP5/Tool/SimulationTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/SimulationTool.py?rev=14091&r1=14090&r2=14091&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py Mon Apr 16 23:45:42 2007
@@ -46,7 +46,7 @@
from Products.ERP5 import TargetSolver
from Products.PythonScripts.Utility import allow_class
-from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
+from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery, QueryMixin
class SimulationTool(BaseTool):
"""
@@ -211,12 +211,12 @@
string_or_list = (str, list, tuple)
# Simulation States
# If strict_simulation_state is set, we directly put it into the dictionary
- from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery
simulation_query = None
if strict_simulation_state:
if isinstance(simulation_state, string_or_list)\
and simulation_state:
- simulation_query = Query(**{'stock.simulation_state':simulation_state})
+ simulation_query = Query(
+ **{'stock.simulation_state': simulation_state})
else:
# first, we evaluate simulation_state
sql_kw = {}
@@ -273,33 +273,42 @@
if input_simulation_state is not None:
if output_simulation_state is not None:
if input_simulation_state == output_simulation_state:
- simulation_query = Query(**{'simulation_state': input_simulation_state,
- 'operator':'OR'})
+ simulation_query = Query(
+ **{'stock.simulation_state': input_simulation_state,
+ 'operator':'OR'})
else:
- input_quantity_query = Query(**{'quantity': '>0'})
- input_simulation_query = Query(**{'simulation_state': input_simulation_state,
- 'operator':'OR'})
- input_query = ComplexQuery(input_quantity_query, input_simulation_query,
+ input_quantity_query = Query(**{'stock.quantity': '>0'})
+ input_simulation_query = Query(
+ **{'stock.simulation_state': input_simulation_state,
+ 'operator':'OR'})
+ input_query = ComplexQuery(input_quantity_query,
+ input_simulation_query,
operator='AND')
- output_quantity_query = Query(**{'quantity': '<0'})
- output_simulation_query = Query(**{'simulation_state': output_simulation_state,
- 'operator':'OR'})
- output_query = ComplexQuery(output_quantity_query, output_simulation_query,
+ output_quantity_query = Query(**{'stock.quantity': '<0'})
+ output_simulation_query = Query(
+ **{'stock.simulation_state': output_simulation_state,
+ 'operator':'OR'})
+ output_query = ComplexQuery(output_quantity_query,
+ output_simulation_query,
operator='AND')
simulation_query = ComplexQuery(input_query, output_query, operator='OR')
else:
- input_quantity_query = Query(**{'quantity': '>0'})
- input_simulation_query_kw = {'simulation_state': input_simulation_state,
- 'operator':'OR'}
+ input_quantity_query = Query(**{'stock.quantity': '>0'})
+ input_simulation_query_kw = {
+ 'stock.simulation_state': input_simulation_state,
+ 'operator':'OR'}
input_simulation_query = Query(**input_simulation_query_kw)
- simulation_query = ComplexQuery(input_quantity_query, input_simulation_query,
+ simulation_query = ComplexQuery(input_quantity_query,
+ input_simulation_query,
operator = 'AND')
elif output_simulation_state is not None:
- output_quantity_query = Query(**{'quantity': '<0'})
- output_simulation_query_kw = {'simulation_state': output_simulation_state,
- 'operator':'OR'}
+ output_quantity_query = Query(**{'stock.quantity': '<0'})
+ output_simulation_query_kw = {
+ 'stock.simulation_state': output_simulation_state,
+ 'operator':'OR'}
output_simulation_query = Query(**output_simulation_query_kw)
- simulation_query = ComplexQuery(output_quantity_query, output_simulation_query,
+ simulation_query = ComplexQuery(output_quantity_query,
+ output_simulation_query,
operator = 'AND')
return simulation_query
@@ -312,18 +321,19 @@
omit_query = None
if omit_input or omit_output:
# Make sure to check some conditions
- condition_expression = "%s.node_uid <> %s.mirror_node_uid \
- OR %s.section_uid <> %s.mirror_section_uid \
- OR %s.mirror_node_uid IS NULL \
- OR %s.mirror_section_uid IS NULL \
- OR %s.payment_uid IS NOT NULL \
- " % ((query_table,) * 7)
+ condition_expression = \
+ "%(query_table)s.node_uid <> %(query_table)s.mirror_node_uid \
+ OR %(query_table)s.section_uid <> %(query_table)s.mirror_section_uid \
+ OR %(query_table)s.mirror_node_uid IS NULL \
+ OR %(query_table)s.mirror_section_uid IS NULL \
+ OR %(query_table)s.payment_uid IS NOT NULL \
+ " % {'query_table': query_table}
if omit_input:
- quantity_query = Query(**{'quantity': '<0'})
+ quantity_query = Query(**{'%s.quantity' % query_table: '<0'})
omit_query = ComplexQuery(quantity_query, condition_expression,
operator='AND')
if omit_output:
- quantity_query = Query(**{'quantity': '>0'})
+ quantity_query = Query(**{'%s.quantity' % query_table: '>0'})
if omit_query is None:
omit_query = ComplexQuery(quantity_query, condition_expression,
operator='AND')
@@ -593,8 +603,7 @@
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(query_table=table,
- **new_kw))
+ sql_kw.update(self.portal_catalog.buildSQLQuery(**new_kw))
return sql_kw
#######################################################
@@ -1078,7 +1087,8 @@
omit_output=omit_output, selection_domain=selection_domain,
selection_report=selection_report, precision=precision, **sql_kw)
- security.declareProtected(Permissions.AccessContentsInformation, 'getNextNegativeInventoryDate')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getNextNegativeInventoryDate')
def getNextNegativeInventoryDate(self, src__=0, **kw):
"""
Returns statistics of inventory grouped by section or site
@@ -1088,7 +1098,7 @@
#sql_kw['order_by_expression'] = 'stock.date'
result = self.getInventoryList(src__=src__,
- sort_on = (('date','ascending'),), group_by_movement=1, **kw)
+ sort_on = (('stock.date', 'ascending'),), group_by_movement=1, **kw)
if src__ :
return result
@@ -1185,7 +1195,6 @@
new_kw = self._generateSQLKeywordDict(table='item',strict_simulation_state=strict_simulation_state,**kw)
at_date = kw.get('at_date',None)
if at_date is not None:
- from Products.ZSQLCatalog.SQLCatalog import QueryMixin
query_mixin = QueryMixin()
at_date = query_mixin._quoteSQLString(at_date)
at_date = at_date.strip("'")
More information about the Erp5-report
mailing list