[Erp5-report] r15104 - /erp5/trunk/products/ERP5/Tool/SimulationTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Jul 2 15:16:36 CEST 2007
Author: romain
Date: Mon Jul 2 15:16:36 2007
New Revision: 15104
URL: http://svn.erp5.org?rev=15104&view=rev
Log:
Add omit_mirror_date parameter to _generateSQLKeywordDict
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=15104&r1=15103&r2=15104&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/SimulationTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/SimulationTool.py Mon Jul 2 15:16:36 2007
@@ -346,6 +346,7 @@
def _generateSQLKeywordDict(self, table='stock',
# dates
from_date=None, to_date=None, at_date=None,
+ omit_mirror_date=1,
# instances
resource=None, node=None, payment=None,
section=None, mirror_section=None, item=None,
@@ -386,7 +387,10 @@
# keywords for related keys
**kw):
"""
- generates keywords and calls buildSQLQuery
+ Generates keywords and calls buildSQLQuery
+
+ - omit_mirror_date: normally, date's parameters are only based on date
+ column. If 0, it also used the mirror_date column.
"""
new_kw = {}
new_kw.update(kw)
@@ -396,24 +400,35 @@
sql_kw['input'] = input
sql_kw['output'] = output
- date_dict = {'query':[], 'operator':'and'}
- if from_date :
- date_dict['query'].append(from_date)
- date_dict['range'] = 'min'
- if to_date :
+ query_list = []
+
+ if omit_mirror_date:
+ date_dict = {'query':[], 'operator':'and'}
+ if from_date :
+ date_dict['query'].append(from_date)
+ date_dict['range'] = 'min'
+ if to_date :
+ date_dict['query'].append(to_date)
+ date_dict['range'] = 'minmax'
+ elif at_date :
+ date_dict['query'].append(at_date)
+ date_dict['range'] = 'minngt'
+ elif to_date :
date_dict['query'].append(to_date)
- date_dict['range'] = 'minmax'
+ date_dict['range'] = 'max'
elif at_date :
date_dict['query'].append(at_date)
- date_dict['range'] = 'minngt'
- elif to_date :
- date_dict['query'].append(to_date)
- date_dict['range'] = 'max'
- elif at_date :
- date_dict['query'].append(at_date)
- date_dict['range'] = 'ngt'
- if len(date_dict) :
- new_kw[table + '.date'] = date_dict
+ date_dict['range'] = 'ngt'
+ if len(date_dict) :
+ new_kw[table + '.date'] = date_dict
+ else:
+ date_query_list = []
+ query_list.append(ComplexQuery(
+ Query(range='ngt',
+ **{'%s.date' % table: [to_date]}),
+ Query(range='nlt',
+ **{'%s.mirror_date' % table: [from_date]}),
+ operator='AND'))
# Some columns exists on multiple tables, we have to clear ambiguities
if resource_uid is not None :
@@ -521,7 +536,8 @@
#if len(variation_category_uid_list) :
# new_kw['variationCategory'] = variation_category_uid_list
- simulation_query = self._getSimulationStateQuery(simulation_state=simulation_state,
+ simulation_query = self._getSimulationStateQuery(
+ simulation_state=simulation_state,
omit_transit=omit_transit,
input_simulation_state=input_simulation_state,
output_simulation_state=output_simulation_state,
@@ -555,8 +571,10 @@
else:
simulation_query = reserved_query
if simulation_query is not None:
- new_kw['query'] = simulation_query
-
+ query_list.append(simulation_query)
+
+ if query_list:
+ new_kw['query'] = ComplexQuery(*query_list)
# It is necessary to use here another SQL query (or at least a subquery)
More information about the Erp5-report
mailing list