From 5aed09ab3cceebd656c79fb28282cbe337cf2eb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Mon, 16 Mar 2009 14:48:53 +0000
Subject: [PATCH] - add an option to use the current selection - note some
 potential problems of this report - minor style changes

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@26049 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../OrderModule_getOrderStatList.xml          |  25 ++-
 .../OrderModule_viewOrderReportDialog.xml     |   1 +
 .../your_use_selection.xml                    | 171 ++++++++++++++++++
 bt5/erp5_trade/bt/revision                    |   2 +-
 4 files changed, 191 insertions(+), 8 deletions(-)
 create mode 100644 bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog/your_use_selection.xml

diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_getOrderStatList.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_getOrderStatList.xml
index e1c0647642..56dd8bbf12 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_getOrderStatList.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_getOrderStatList.xml
@@ -74,10 +74,12 @@ delivery_mode = request.get(\'delivery_mode\', None)\n
 \n
 catalog_params = {}\n
 \n
-# get all organisation for the selected section category\n
+# get all organisations for the selected section category\n
 if section_category:\n
   group_uid = category_tool.getCategoryValue(section_category).getUid()\n
-  organisation_uid_list = [x.uid for x in portal.portal_catalog(portal_type="Organisation", default_group_uid=group_uid)]\n
+  organisation_uid_list = [x.uid for x in portal.portal_catalog(\n
+                                            portal_type="Organisation",\n
+                                            default_group_uid=group_uid)]\n
   if report_type == "sale":\n
     catalog_params[\'default_source_section_uid\'] = organisation_uid_list or -1\n
   elif report_type:\n
@@ -106,7 +108,7 @@ elif aggregation_level == "day":\n
 \n
 params = {"delivery.start_date":(from_date, to_date)}\n
 query=None\n
-if from_date is not None and to_date is not None:  \n
+if from_date is not None and to_date is not None:\n
   params = {"delivery.start_date":(from_date, to_date)}\n
   query = Query(range="minngt", **params)\n
 elif from_date is not None:\n
@@ -118,12 +120,18 @@ elif to_date is not None:\n
 \n
 sort_on_list = [ (\'delivery.destination_section_uid\', \'ASC\'), (\'delivery.start_date\',\'ASC\')]\n
 \n
-result_list = context.portal_catalog.searchResults(limit=None,query=query,\n
+if request.get(\'use_selection\'):\n
+  selection_name = request[\'selection_name\']\n
+  result_list = \\\n
+        context.portal_selections.callSelectionFor(request[\'selection_name\'])\n
+else:\n
+  result_list = context.portal_catalog.searchResults(limit=None,query=query,\n
                                                    portal_type=doc_portal_type,\n
                                                    simulation_state=simulation_state,\n
                                                    sort_on=sort_on_list,\n
                                                    **catalog_params)\n
 \n
+\n
 # we build two dict, one that store amount per period per client\n
 # and another that either store amount per period per product and per client\n
 # or only amount per period per product dependings on choosen group by\n
@@ -140,13 +148,14 @@ for result in result_list:\n
       client_title = result.getDestinationSectionTitle()\n
     else:\n
       client_title = result.getSourceSectionTitle()\n
+    # FIXME: if two clients have the same title, do we want to group ?\n
     if not client_dict.has_key(client_title):\n
       client_dict[client_title] = {}\n
     if client_dict[client_title].has_key(period):\n
       client_dict[client_title][period][\'amount\'] = client_dict[client_title][period][\'amount\'] + result.getTotalPrice()\n
     else:\n
       client_dict[client_title][period] = {\'amount\' : result.getTotalPrice()}\n
-    if not product_dict.has_key(client_title):      \n
+    if not product_dict.has_key(client_title):\n
       line_dict = product_dict[client_title] = {}\n
     else:\n
       line_dict = product_dict[client_title]\n
@@ -157,6 +166,7 @@ for result in result_list:\n
     # client_title -> product_title -> period -> amount/quantity...\n
     # or product_title -> period -> amount/quantity...\n
     for line in result.contentValues(filter = {\'portal_type\':line_portal_type}):\n
+      # FIXME: if two resources have the same title, do we want to group ?\n
       product_title = line.getResourceTitle()\n
       if not line_dict.has_key(product_title):\n
         line_dict[product_title] = {period :{"amount" : line.getTotalPrice(),\n
@@ -283,7 +293,7 @@ else:\n
         period_counter_dict[\'total amount\'] = period_counter_dict[\'total amount\'] + line_total_amount\n
       else:\n
         period_counter_dict[\'total amount\'] = line_total_amount\n
-      append(obj)   \n
+      append(obj)\n
 \n
     line_list.sort(sortProduct)\n
 \n
@@ -376,13 +386,14 @@ return line_list\n
                             <string>query</string>
                             <string>_apply_</string>
                             <string>sort_on_list</string>
+                            <string>_getitem_</string>
+                            <string>selection_name</string>
                             <string>result_list</string>
                             <string>client_dict</string>
                             <string>product_dict</string>
                             <string>result</string>
                             <string>period</string>
                             <string>client_title</string>
-                            <string>_getitem_</string>
                             <string>line_dict</string>
                             <string>line</string>
                             <string>product_title</string>
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog.xml
index 899e537e63..9c0cde8538 100644
--- a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog.xml
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog.xml
@@ -106,6 +106,7 @@
                         <string>your_incoterm</string>
                         <string>your_order</string>
                         <string>your_landscape</string>
+                        <string>your_use_selection</string>
                       </list>
                     </value>
                 </item>
diff --git a/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog/your_use_selection.xml b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog/your_use_selection.xml
new file mode 100644
index 0000000000..8da04804fa
--- /dev/null
+++ b/bt5/erp5_trade/SkinTemplateItem/portal_skins/erp5_trade/OrderModule_viewOrderReportDialog/your_use_selection.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="CheckBoxField" module="Products.Formulator.StandardFields"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>your_use_selection</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>alternate_name</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>css_class</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>default</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>description</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>editable</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>enabled</string> </key>
+                    <value> <int>1</int> </value>
+                </item>
+                <item>
+                    <key> <string>external_validator</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>extra</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>hidden</string> </key>
+                    <value> <int>0</int> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Use Current Selection</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_trade/bt/revision b/bt5/erp5_trade/bt/revision
index e25083957d..c8a110e7e8 100644
--- a/bt5/erp5_trade/bt/revision
+++ b/bt5/erp5_trade/bt/revision
@@ -1 +1 @@
-618
\ No newline at end of file
+621
\ No newline at end of file
-- 
2.30.9