Commit 8811873f authored by Jérome Perrin's avatar Jérome Perrin

Account Statement Report:

  support filtering on grouped reference lines.
  support filtering on transaction type.
  consistent field naming / ordering



git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@13316 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent f675f4a9
...@@ -71,77 +71,68 @@ ...@@ -71,77 +71,68 @@
<value> <string>"""Get the report sections for account statement.\n <value> <string>"""Get the report sections for account statement.\n
Account is the combination of :\n Account is the combination of :\n
- node (the Account in account module)\n - node (the Account in account module)\n
- destination_section (the Entity in organisation / person module)\n - mirror_section (the Entity in organisation / person module)\n
- source_payment (the Bank account for the organisation)\n - payment (the Bank account for the organisation)\n
"""\n """\n
\n \n
from Products.ERP5Form.Report import ReportSection\n from Products.ERP5Form.Report import ReportSection\n
request = context.REQUEST\n request = context.REQUEST\n
traverse = context.getPortalObject().restrictedTraverse\n
\n
# for preference info fields on Account_viewAccountingTransactionList\n
request.set(\'is_accounting_report\', True)\n
\n \n
# TODO:\n
# s/transaction_section_category/section_category\n
# s/transaction_simulation_state/simulation_sate\n
# ( also in dialog )\n
\n \n
at_date = request[\'at_date\']\n at_date = request[\'at_date\']\n
transaction_section_category = request[\'transaction_section_category\']\n section_uid = context.Base_getSectionUidListForSectionCategory(\n
# XXX for now account is required (ie. we cannot display all transactions with\n request[\'section_category\'])\n
# XXX for now node is required (ie. we cannot display all transactions with\n
# a third party regardless of the account).\n # a third party regardless of the account).\n
account = request[\'account\']\n node = request[\'node\']\n
destination_section = request.get(\'destination_section\', None)\n mirror_section = request.get(\'mirror_section\', None)\n
source_payment = request.get(\'source_payment\', None)\n source_payment = request.get(\'source_payment\', None)\n
transaction_simulation_state = request[\'transaction_simulation_state\']\n simulation_state = request[\'simulation_state\']\n
from_date = request.get(\'from_date\', None)\n from_date = request.get(\'from_date\', None)\n
omit_grouping_reference = request.get(\'omit_grouping_reference\', 0)\n omit_grouping_reference = request.get(\'omit_grouping_reference\', 0)\n
parent_portal_type = request.get(\'portal_type\')\n
\n \n
request.other[\'is_accounting_report\'] = True\n
\n
params = {\n
\'at_date\' : at_date,\n
\'section_category\' : transaction_section_category,\n
\'transaction_section_category\' : transaction_section_category,\n
\'simulation_state\' : transaction_simulation_state,\n
\'accounting_transaction_line_currency\' : None,\n
\'omit_grouping_reference\' : omit_grouping_reference,\n
\'from_date_summary\' : 1\n
}\n
\n \n
params = dict(at_date=at_date,\n
section_uid=section_uid,\n
node_uid=traverse(node).getUid(),\n
from_date_summary=1,\n
simulation_state=simulation_state, )\n
if from_date:\n if from_date:\n
params[\'from_date\'] = from_date\n params[\'from_date\'] = from_date\n
else :\n
params[\'no_from_date\'] = 1\n
if source_payment :\n if source_payment :\n
params[\'payment_uid\'] = context.restrictedTraverse(source_payment).getUid()\n params[\'payment_uid\'] = traverse(source_payment).getUid()\n
if destination_section :\n if mirror_section :\n
params[\'mirror_section_uid\'] = context.restrictedTraverse(\n params[\'mirror_section_uid\'] = traverse(mirror_section).getUid()\n
destination_section).getUid()\n if parent_portal_type:\n
params[\'parent_portal_type\'] = parent_portal_type\n
if omit_grouping_reference:\n
params[\'hide_grouping\'] = 1\n
\n \n
params[\'node_uid\'] = context.restrictedTraverse(account).getUid()\n selection_columns = [\n
(\'Movement_getSpecificReference\', \'Transaction Reference\'),\n
(\'date\', \'Date\'),\n
(\'Movement_getExplanationTitle\', \'Accounting Transaction Title\'),\n
(\'Movement_getMirrorSectionTitle\', \'Third Party\'),\n
(\'debit\', \'Debit\'),\n
(\'credit\', \'Credit\'),\n
(\'running_total_price\', \'Net\'),]\n
\n \n
result = []\n return [ ReportSection(\n
portal = context.portal_url.getPortalObject()\n path=node,\n
form_id=\'Account_viewAccountingTransactionList\',\n
selection_name=\'account_preference_selection\',\n
selection_params=params,\n
selection_columns=selection_columns,\n
listbox_display_mode=\'FlatListMode\',\n
selection_sort_order=[\n
(\'stock.date\', \'ascending\'),\n
(\'stock.uid\', \'ascending\')],) ]\n
\n \n
account_columns = (\n
(\'date\', \'Accounting Operation Date\'),\n
(\'Movement_getExplanationTitle\', \'Title\'),\n
(\'Movement_getSpecificReference\', \'Accounting Transaction Reference\'),\n
# (\'translated_portal_type\', \'Type\'),\n
# (\'third_party\', \'Third Party\'),\n
# (\'translated_simulation_state_title\', \'State\'),\n
(\'debit\', \'Debit\'),\n
(\'credit\', \'Credit\'),\n
(\'running_total_price\', \'Net\'),\n
)\n
\n
return [ReportSection(\n
path = account,\n
form_id = \'Account_viewAccountingTransactionList\',\n
selection_name = \'account_preference_selection\',\n
selection_params = params,\n
selection_columns = account_columns,\n
listbox_display_mode = \'FlatListMode\',\n
selection_sort_order = [(\'stock.date\',\n
\'ascending\')],)]\n
# vim: syntax=python\n # vim: syntax=python\n
</string> </value> </string> </value>
</item> </item>
...@@ -190,22 +181,23 @@ return [ReportSection(\n ...@@ -190,22 +181,23 @@ return [ReportSection(\n
<string>_getattr_</string> <string>_getattr_</string>
<string>context</string> <string>context</string>
<string>request</string> <string>request</string>
<string>traverse</string>
<string>True</string>
<string>_getitem_</string> <string>_getitem_</string>
<string>at_date</string> <string>at_date</string>
<string>transaction_section_category</string> <string>section_uid</string>
<string>account</string> <string>node</string>
<string>None</string> <string>None</string>
<string>destination_section</string> <string>mirror_section</string>
<string>source_payment</string> <string>source_payment</string>
<string>transaction_simulation_state</string> <string>simulation_state</string>
<string>from_date</string> <string>from_date</string>
<string>omit_grouping_reference</string> <string>omit_grouping_reference</string>
<string>True</string> <string>parent_portal_type</string>
<string>_write_</string> <string>dict</string>
<string>params</string> <string>params</string>
<string>result</string> <string>_write_</string>
<string>portal</string> <string>selection_columns</string>
<string>account_columns</string>
</tuple> </tuple>
</value> </value>
</item> </item>
......
...@@ -62,7 +62,6 @@ ...@@ -62,7 +62,6 @@
<value> <value>
<list> <list>
<string>Default</string> <string>Default</string>
<string>2</string>
</list> </list>
</value> </value>
</item> </item>
...@@ -70,24 +69,19 @@ ...@@ -70,24 +69,19 @@
<key> <string>groups</string> </key> <key> <string>groups</string> </key>
<value> <value>
<dictionary> <dictionary>
<item>
<key> <string>2</string> </key>
<value>
<list/>
</value>
</item>
<item> <item>
<key> <string>Default</string> </key> <key> <string>Default</string> </key>
<value> <value>
<list> <list>
<string>from_date</string> <string>from_date</string>
<string>at_date</string> <string>at_date</string>
<string>transaction_section_category</string> <string>section_category</string>
<string>transaction_simulation_state</string> <string>portal_type</string>
<string>account</string> <string>simulation_state</string>
<string>destination_section</string>
<string>source_payment</string>
<string>omit_grouping_reference</string> <string>omit_grouping_reference</string>
<string>node</string>
<string>mirror_section</string>
<string>payment</string>
</list> </list>
</value> </value>
</item> </item>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>destination_section</string> </value> <value> <string>mirror_section</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
...@@ -281,7 +281,7 @@ ...@@ -281,7 +281,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python: here.restrictedTraverse(request.get(\'destination_section\', \'\')).getTitle()</string> </value> <value> <string>python: here.restrictedTraverse(request.get(\'mirror_section\', \'\')).getTitle()</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
...@@ -300,7 +300,7 @@ ...@@ -300,7 +300,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python:request.get(\'destination_section\', \'\') != \'\'</string> </value> <value> <string>request/mirror_section | nothing</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>account</string> </value> <value> <string>node</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
...@@ -281,7 +281,7 @@ ...@@ -281,7 +281,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python: "%s - %s" % (here.restrictedTraverse(request.get(\'account\', \'\')).Account_getGapId(), here.restrictedTraverse(request.get(\'account\', \'\')).getTitle())</string> </value> <value> <string>python: here.restrictedTraverse(request.get(\'node\', \'\')).Account_getFormattedTitle()</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
...@@ -300,7 +300,7 @@ ...@@ -300,7 +300,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python:request.get(\'account\', \'\') != \'\'</string> </value> <value> <string>request/node | nothing</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -279,7 +279,7 @@ ...@@ -279,7 +279,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python: request.get(\'omit_grouping_reference\') and "With" or "Without"</string> </value> <value> <string>python: request.get(\'omit_grouping_reference\') and here.Base_translateString("Without") or here.Base_translateString("With")</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>source_payment</string> </value> <value> <string>payment</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
...@@ -281,7 +281,7 @@ ...@@ -281,7 +281,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python: here.restrictedTraverse(request.get(\'source_payment\', \'\')).getTitle()</string> </value> <value> <string>python: here.restrictedTraverse(request.get(\'payment\', \'\')).getTitle()</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
...@@ -300,7 +300,7 @@ ...@@ -300,7 +300,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python:request.get(\'source_payment\', \'\') != \'\'</string> </value> <value> <string>request/payment | nothing</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>transaction_section_category</string> </value> <value> <string>section_category</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
...@@ -279,7 +279,7 @@ ...@@ -279,7 +279,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python:here.getPortalObject().portal_categories.resolveCategory(here.REQUEST.transaction_section_category).getLogicalPath()</string> </value> <value> <string>python:here.getPortalObject().portal_categories.resolveCategory(request.get(\'section_category\')).getLogicalPath()</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>transaction_simulation_state</string> </value> <value> <string>simulation_state</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
...@@ -317,7 +317,7 @@ ...@@ -317,7 +317,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>_text</string> </key> <key> <string>_text</string> </key>
<value> <string>python:[here.Localizer.erp5_ui.gettext(x).encode(\'utf8\') for x in here.REQUEST.get(\'transaction_simulation_state\')]</string> </value> <value> <string>python:[here.Localizer.erp5_ui.gettext(x).encode(\'utf8\') for x in request.get(\'simulation_state\')]</string> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
......
...@@ -76,9 +76,9 @@ ...@@ -76,9 +76,9 @@
<key> <string>center</string> </key> <key> <string>center</string> </key>
<value> <value>
<list> <list>
<string>your_account</string> <string>your_node</string>
<string>your_destination_section</string> <string>your_mirror_section</string>
<string>your_source_payment</string> <string>your_payment</string>
</list> </list>
</value> </value>
</item> </item>
...@@ -92,9 +92,10 @@ ...@@ -92,9 +92,10 @@
<key> <string>left</string> </key> <key> <string>left</string> </key>
<value> <value>
<list> <list>
<string>your_transaction_section_category</string> <string>your_section_category</string>
<string>your_from_date</string> <string>your_from_date</string>
<string>your_at_date</string> <string>your_at_date</string>
<string>your_omit_grouping_reference</string>
<string>your_portal_skin</string> <string>your_portal_skin</string>
</list> </list>
</value> </value>
...@@ -103,7 +104,8 @@ ...@@ -103,7 +104,8 @@
<key> <string>right</string> </key> <key> <string>right</string> </key>
<value> <value>
<list> <list>
<string>your_transaction_simulation_state</string> <string>your_simulation_state</string>
<string>your_portal_type</string>
</list> </list>
</value> </value>
</item> </item>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>your_destination_section</string> </value> <value> <string>your_mirror_section</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>your_account</string> </value> <value> <string>your_node</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.StandardFields</string>
<string>CheckBoxField</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>your_omit_grouping_reference</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>Omit Grouped References</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>your_source_payment</string> </value> <value> <string>your_payment</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>your_transaction_section_category</string> </value> <value> <string>your_section_category</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dictionary> <dictionary>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>your_transaction_simulation_state</string> </value> <value> <string>your_simulation_state</string> </value>
</item> </item>
<item> <item>
<key> <string>message_values</string> </key> <key> <string>message_values</string> </key>
...@@ -164,7 +164,9 @@ ...@@ -164,7 +164,9 @@
</item> </item>
<item> <item>
<key> <string>size</string> </key> <key> <string>size</string> </key>
<value> <string></string> </value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value>
</item> </item>
<item> <item>
<key> <string>title</string> </key> <key> <string>title</string> </key>
...@@ -230,32 +232,7 @@ ...@@ -230,32 +232,7 @@
<item> <item>
<key> <string>items</string> </key> <key> <string>items</string> </key>
<value> <value>
<list> <list/>
<tuple>
<string>cancelled</string>
<string>cancelled</string>
</tuple>
<tuple>
<string>draft</string>
<string>draft</string>
</tuple>
<tuple>
<string>planned</string>
<string>planned</string>
</tuple>
<tuple>
<string>confirmed</string>
<string>confirmed</string>
</tuple>
<tuple>
<string>stopped</string>
<string>stopped</string>
</tuple>
<tuple>
<string>delivered</string>
<string>delivered</string>
</tuple>
</list>
</value> </value>
</item> </item>
<item> <item>
...@@ -326,4 +303,23 @@ ...@@ -326,4 +303,23 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="4" aka="AAAAAAAAAAQ=">
<pickle>
<tuple>
<tuple>
<string>Products.Formulator.TALESField</string>
<string>TALESMethod</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_text</string> </key>
<value> <string>python: len(field.get_value(\'items\'))</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData> </ZopeData>
209 210
\ No newline at end of file \ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment