From 023363d936189d6acd6df72ddbb3ed4de5b064f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Fri, 16 Apr 2010 12:19:54 +0000 Subject: [PATCH] fix various issues with sorting: - impossible to search + sort on title or reference - impossible to sort on specific_reference if no filter by section - impossible to sort by more than one column git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@34620 20353a03-c40f-0410-a6d1-a30d3c3de9de --- ...onModule_zGetAccountingTransactionList.xml | 74 +++++++++++-------- bt5/erp5_accounting/bt/revision | 2 +- 2 files changed, 43 insertions(+), 33 deletions(-) diff --git a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransactionModule_zGetAccountingTransactionList.xml b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransactionModule_zGetAccountingTransactionList.xml index 680277f900..149d5cef3a 100644 --- a/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransactionModule_zGetAccountingTransactionList.xml +++ b/bt5/erp5_accounting/SkinTemplateItem/portal_skins/erp5_accounting/AccountingTransactionModule_zGetAccountingTransactionList.xml @@ -472,6 +472,7 @@ destination_section_where_expression</string> </value> </dtml-in>\n , delivery.start_date as operation_date\n , \'source\' as section_mark\n + , catalog.reference as specific_reference\n </dtml-if>\n </dtml-if>\n \n @@ -675,11 +676,11 @@ destination_section_where_expression</string> </value> , catalog.*\n <dtml-if "section_category">, category.uid as category_uid</dtml-if>\n <dtml-if "not (stat or count) and query[\'order_by_expression\']">\n - <dtml-let order_column="query[\'order_by_expression\'].split(\' \')[0]">\n - <dtml-if "not order_column in (\'operation_date\', \'specific_reference\')">\n - ,<dtml-var "query[\'order_by_expression\'].split(\' \')[0]">\n - </dtml-if>\n - </dtml-let>\n + <dtml-in "query[\'order_by_expression\'].split(\', \')">\n + <dtml-unless "\'operation_date\' in _[\'sequence-item\'] or \'specific_reference\' in _[\'sequence-item\'] or \'`catalog`.\' in _[\'sequence-item\']">\n + , <dtml-var expr="_[\'sequence-item\'].split(\' \')[0]">\n + </dtml-unless>\n + </dtml-in>\n </dtml-if>\n </dtml-if>\n \n @@ -828,7 +829,7 @@ destination_section_where_expression</string> </value> \n <dtml-if "not (count or stat) and query[\'limit_expression\'] and query[\'limit_expression\'].startswith(\'0\')">\n <dtml-if "query[\'order_by_expression\']">\n - ORDER BY <dtml-var "query[\'order_by_expression\'].split(\'.\')[-1]">\n + ORDER BY <dtml-var "query[\'order_by_expression\']">\n </dtml-if>\n LIMIT <dtml-var "query[\'limit_expression\']">\n </dtml-if>\n @@ -863,11 +864,11 @@ UNION\n , catalog.*\n <dtml-if "section_category">, category.uid as category_uid</dtml-if>\n <dtml-if "not (stat or count) and query[\'order_by_expression\']">\n - <dtml-let order_column="query[\'order_by_expression\'].split(\' \')[0]">\n - <dtml-if "not order_column in (\'operation_date\', \'specific_reference\')">\n - ,<dtml-var "query[\'order_by_expression\'].split(\' \')[0]">\n - </dtml-if>\n - </dtml-let>\n + <dtml-in "query[\'order_by_expression\'].split(\', \')">\n + <dtml-unless "\'operation_date\' in _[\'sequence-item\'] or \'specific_reference\' in _[\'sequence-item\'] or \'`catalog`.\' in _[\'sequence-item\']">\n + , <dtml-var expr="_[\'sequence-item\'].split(\' \')[0]">\n + </dtml-unless>\n + </dtml-in>\n </dtml-if>\n </dtml-if>\n \n @@ -1016,7 +1017,7 @@ UNION\n \n <dtml-if "not (count or stat) and query[\'limit_expression\'] and query[\'limit_expression\'].startswith(\'0\')">\n <dtml-if "query[\'order_by_expression\']">\n - ORDER BY <dtml-var "query[\'order_by_expression\'].split(\'.\')[-1]">\n + ORDER BY <dtml-var "query[\'order_by_expression\']">\n </dtml-if>\n LIMIT <dtml-var "query[\'limit_expression\']">\n </dtml-if>\n @@ -1045,7 +1046,14 @@ UNION\n <dtml-if "not (stat or count)">\n GROUP BY uid\n <dtml-if "query[\'order_by_expression\']">\n - ORDER BY <dtml-var "query[\'order_by_expression\'].split(\'.\')[-1]">\n + ORDER BY\n + <dtml-in "query[\'order_by_expression\'].split(\', \')">\n + <dtml-if "\'.\' in _[\'sequence-item\']">\n + <dtml-var expr="_[\'sequence-item\'].split(\'.\')[1]">\n + <dtml-else>\n + <dtml-var sequence-item>\n + </dtml-if><dtml-unless sequence-end>,</dtml-unless>\n + </dtml-in>\n </dtml-if>\n <dtml-if "query[\'limit_expression\']">\n LIMIT <dtml-var "query[\'limit_expression\']">\n @@ -1058,9 +1066,6 @@ UNION\n </dtml-if>\n \n </dtml-if>\n -\n -\n -\n </dtml-let></dtml-let></dtml-let></dtml-let>\n \n <dtml-comment> vim: syntax=dtml\n @@ -1134,6 +1139,7 @@ UNION\n </dtml-in>\n , delivery.start_date as operation_date\n , \'source\' as section_mark\n + , catalog.reference as specific_reference\n </dtml-if>\n </dtml-if>\n \n @@ -1337,11 +1343,11 @@ UNION\n , catalog.*\n <dtml-if "section_category">, category.uid as category_uid</dtml-if>\n <dtml-if "not (stat or count) and query[\'order_by_expression\']">\n - <dtml-let order_column="query[\'order_by_expression\'].split(\' \')[0]">\n - <dtml-if "not order_column in (\'operation_date\', \'specific_reference\')">\n - ,<dtml-var "query[\'order_by_expression\'].split(\' \')[0]">\n - </dtml-if>\n - </dtml-let>\n + <dtml-in "query[\'order_by_expression\'].split(\', \')">\n + <dtml-unless "\'operation_date\' in _[\'sequence-item\'] or \'specific_reference\' in _[\'sequence-item\'] or \'`catalog`.\' in _[\'sequence-item\']">\n + , <dtml-var expr="_[\'sequence-item\'].split(\' \')[0]">\n + </dtml-unless>\n + </dtml-in>\n </dtml-if>\n </dtml-if>\n \n @@ -1490,7 +1496,7 @@ UNION\n \n <dtml-if "not (count or stat) and query[\'limit_expression\'] and query[\'limit_expression\'].startswith(\'0\')">\n <dtml-if "query[\'order_by_expression\']">\n - ORDER BY <dtml-var "query[\'order_by_expression\'].split(\'.\')[-1]">\n + ORDER BY <dtml-var "query[\'order_by_expression\']">\n </dtml-if>\n LIMIT <dtml-var "query[\'limit_expression\']">\n </dtml-if>\n @@ -1525,11 +1531,11 @@ UNION\n , catalog.*\n <dtml-if "section_category">, category.uid as category_uid</dtml-if>\n <dtml-if "not (stat or count) and query[\'order_by_expression\']">\n - <dtml-let order_column="query[\'order_by_expression\'].split(\' \')[0]">\n - <dtml-if "not order_column in (\'operation_date\', \'specific_reference\')">\n - ,<dtml-var "query[\'order_by_expression\'].split(\' \')[0]">\n - </dtml-if>\n - </dtml-let>\n + <dtml-in "query[\'order_by_expression\'].split(\', \')">\n + <dtml-unless "\'operation_date\' in _[\'sequence-item\'] or \'specific_reference\' in _[\'sequence-item\'] or \'`catalog`.\' in _[\'sequence-item\']">\n + , <dtml-var expr="_[\'sequence-item\'].split(\' \')[0]">\n + </dtml-unless>\n + </dtml-in>\n </dtml-if>\n </dtml-if>\n \n @@ -1678,7 +1684,7 @@ UNION\n \n <dtml-if "not (count or stat) and query[\'limit_expression\'] and query[\'limit_expression\'].startswith(\'0\')">\n <dtml-if "query[\'order_by_expression\']">\n - ORDER BY <dtml-var "query[\'order_by_expression\'].split(\'.\')[-1]">\n + ORDER BY <dtml-var "query[\'order_by_expression\']">\n </dtml-if>\n LIMIT <dtml-var "query[\'limit_expression\']">\n </dtml-if>\n @@ -1707,7 +1713,14 @@ UNION\n <dtml-if "not (stat or count)">\n GROUP BY uid\n <dtml-if "query[\'order_by_expression\']">\n - ORDER BY <dtml-var "query[\'order_by_expression\'].split(\'.\')[-1]">\n + ORDER BY\n + <dtml-in "query[\'order_by_expression\'].split(\', \')">\n + <dtml-if "\'.\' in _[\'sequence-item\']">\n + <dtml-var expr="_[\'sequence-item\'].split(\'.\')[1]">\n + <dtml-else>\n + <dtml-var sequence-item>\n + </dtml-if><dtml-unless sequence-end>,</dtml-unless>\n + </dtml-in>\n </dtml-if>\n <dtml-if "query[\'limit_expression\']">\n LIMIT <dtml-var "query[\'limit_expression\']">\n @@ -1720,9 +1733,6 @@ UNION\n </dtml-if>\n \n </dtml-if>\n -\n -\n -\n </dtml-let></dtml-let></dtml-let></dtml-let>\n \n <dtml-comment> vim: syntax=dtml\n diff --git a/bt5/erp5_accounting/bt/revision b/bt5/erp5_accounting/bt/revision index b0ba9cece2..e55dbc5cd2 100644 --- a/bt5/erp5_accounting/bt/revision +++ b/bt5/erp5_accounting/bt/revision @@ -1 +1 @@ -1188 \ No newline at end of file +1190 \ No newline at end of file -- 2.30.9