diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.py b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.py
index 5dd2e131d40cafe971e9d80f891a49223c12608f..a764843bc4ab7370b8dd0786ae14a8c21ba24347 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.py
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.py
@@ -2,22 +2,6 @@ from Products.PythonScripts.standard import Object
line_list = []
portal = context.getPortalObject()
-# XXX use a larger limit
-saved_selection_params = context.getPortalObject().portal_selections.getSelectionParamsFor(module_selection_name)
-selection_params = saved_selection_params.copy()
-selection_params['limit'] = 10000
-context.getPortalObject().portal_selections.setSelectionParamsFor(module_selection_name, selection_params)
-
-try:
- checked_uid_list = portal.portal_selections.getSelectionCheckedUidsFor(module_selection_name)
- if checked_uid_list:
- getObject = portal.portal_catalog.getObject
- delivery_list = [getObject(uid) for uid in checked_uid_list]
- else:
- delivery_list = portal.portal_selections.callSelectionFor(module_selection_name, context=context)
-finally:
- context.getPortalObject().portal_selections.setSelectionParamsFor(module_selection_name, saved_selection_params)
-
account_title_cache = {}
def getAccountTitle(relative_url):
try:
@@ -32,7 +16,7 @@ def getAccountTitle(relative_url):
return title
-for delivery in delivery_list:
+for delivery in portal.portal_catalog(uid=uid_list or -1):
delivery = delivery.getObject()
for movement in delivery.getMovementList(portal_type=portal_type):
line_list.append(Object(
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.xml
index 492e7ef117caa54519342126b7e900afc20a1967..56b2f25756fd019e4d753ec6758c1dd19388aec9 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineList.xml
@@ -50,7 +50,7 @@
-
_params
- portal_type, module_selection_name, **kw
+ uid_list, portal_type, **kw
-
id
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineReportSectionList.py b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineReportSectionList.py
index 82a3bdd6fff1ee942685e00562c29573e2fbb575..2861ee09ce3693199983339eefa6a9f561682225 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineReportSectionList.py
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/DeliveryModule_getDeliveryLineReportSectionList.py
@@ -1,6 +1,34 @@
from Products.ERP5Form.Report import ReportSection
+portal = context.getPortalObject()
+
request = container.REQUEST
-return ReportSection(form_id='DeliveryModule_viewDeliveryLineList',
+module_selection_name = request['selection_name']
+
+# so that ods style does not repeat header on each section
+request.set('merge_report_section_list', 1)
+
+# XXX use a larger limit
+saved_selection_params = portal.portal_selections.getSelectionParamsFor(module_selection_name)
+selection_params = saved_selection_params.copy()
+selection_params['limit'] = 100000
+context.getPortalObject().portal_selections.setSelectionParamsFor(module_selection_name, selection_params)
+
+report_section_list = []
+try:
+ all_uid_list = portal.portal_selections.getSelectionCheckedUidsFor(module_selection_name)
+ if not all_uid_list:
+ all_uid_list = [ x.uid for x in
+ portal.portal_selections.callSelectionFor(module_selection_name, context=context)]
+
+ # split in chunks
+ batch_size = 1000
+ for uid_list in [all_uid_list[x:x+batch_size] for x in xrange(0, len(all_uid_list), batch_size)]:
+ report_section_list.append(
+ ReportSection(form_id='DeliveryModule_viewDeliveryLineList',
path=context.getPhysicalPath(),
selection_params=dict(portal_type=request['portal_type'],
- module_selection_name=request['selection_name'])),
+ uid_list=uid_list,
+ module_selection_name=module_selection_name)))
+ return report_section_list
+finally:
+ context.getPortalObject().portal_selections.setSelectionParamsFor(module_selection_name, saved_selection_params)