Commit cc715cc4 authored by Jérome Perrin's avatar Jérome Perrin

accounting: rewrite account statements' initial balance detail

This is now based on getMovementHistoryList + grouping_date instead of
Base_zGetNotGroupedMovementList
parent 10e62841
......@@ -50,75 +50,63 @@
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from Products.PythonScripts.standard import Object\n
<value> <string>from Products.ZSQLCatalog.SQLCatalog import Query, ComplexQuery\n
from Products.PythonScripts.standard import Object\n
portal = context.getPortalObject()\n
getObject = portal.portal_catalog.getObject\n
params = portal.ERP5Accounting_getParams(selection_name)\n
\n
# this also prevents to be called directly\n
assert \'node_uid\' in kw\n
\n
mirror_section_relative_url = None\n
if kw.get(\'mirror_section_uid\'):\n
mirror_section_relative_url =\\\n
getObject(kw[\'mirror_section_uid\']).getRelativeUrl()\n
\n
payment_uid = kw.get(\'payment_uid\', None)\n
\n
portal_type_filter = 0\n
if \'parent_portal_type\' in params:\n
portal_type_filter = 1\n
portal_type_list = params[\'parent_portal_type\']\n
\n
total_debit = 0\n
total_credit = 0\n
total_debit_price = 0\n
total_credit_price = 0\n
\n
at_date = (from_date - 1).latestTime()\n
inventory_query = dict(\n
at_date=at_date, # this is not to_date\n
grouping_query=ComplexQuery(\n
Query(grouping_reference=None),\n
Query(grouping_date=at_date, range="min"),\n
operator="OR"),\n
simulation_state=params[\'simulation_state\'],\n
node_uid=kw[\'node_uid\'],\n
portal_type=portal.getPortalAccountingMovementTypeList(),\n
section_uid=params[\'section_uid\']\n
)\n
\n
if kw.get(\'mirror_section_uid\'):\n
inventory_query[\'mirror_section_uid\'] = kw[\'mirror_section_uid\']\n
if kw.get(\'payment_uid\'):\n
inventory_query[\'payment_uid\'] = kw[\'payment_uid\']\n
if project_uid:\n
inventory_query[\'project_uid\'] = project_uid\n
if function:\n
inventory_query[\'function_category\'] = function\n
\n
if \'parent_portal_type\' in params:\n
portal_type_list = params[\'parent_portal_type\']\n
# only apply this filter if not all portal_types where selected,\n
# because it is then unnecessary.\n
if set(portal_type_list) != set(portal.getPortalAccountingTransactionTypeList()):\n
inventory_query[\'parent_portal_type\'] = portal_type_list\n
\n
line_list = []\n
for brain in portal.Base_zGetNotGroupedMovementList(\n
at_date=(from_date - 1).latestTime(), # this is not to_date\n
simulation_state=params[\'simulation_state\'],\n
node_uid=[kw[\'node_uid\']],\n
portal_type=portal.getPortalAccountingMovementTypeList(),\n
section_uid=params[\'section_uid\']):\n
\n
# manually filter out not interesting lines\n
# XXX this is because Base_zGetNotGroupedMovementList is really\n
# minimalistic\n
if mirror_section_relative_url and \\\n
brain.mirror_section_relative_url != mirror_section_relative_url:\n
continue\n
\n
for brain in portal.portal_simulation.getMovementHistoryList(**inventory_query):\n
mvt = brain.getObject()\n
transaction = mvt.getParentValue()\n
\n
if portal_type_filter and \\\n
transaction.getPortalType() not in portal_type_list:\n
continue\n
\n
is_source = (brain.mirror_section_relative_url == mvt.getDestinationSection())\n
if is_source:\n
if payment_uid and mvt.getSourcePaymentUid() != payment_uid:\n
continue\n
if project_uid and mvt.getSourceProjectUid() != project_uid:\n
continue\n
if function and not (mvt.getSourceFunction() or \'\').startswith(function):\n
continue\n
specific_reference = transaction.getSourceReference()\n
mirror_section_title = mvt.getDestinationSectionTitle()\n
section_title = mvt.getSourceSectionTitle()\n
else:\n
if payment_uid and mvt.getDestinationPaymentUid() != payment_uid:\n
continue\n
if project_uid and mvt.getDestinationProjectUid() != project_uid:\n
continue\n
if function and not (mvt.getDestinationFunction() or \'\').startswith(function):\n
continue\n
specific_reference = transaction.getDestinationReference()\n
mirror_section_title = mvt.getSourceSectionTitle()\n
section_title = mvt.getDestinationSectionTitle()\n
\n
\n
debit = max(brain.total_quantity, 0)\n
total_debit += debit\n
......@@ -130,10 +118,6 @@ for brain in portal.Base_zGetNotGroupedMovementList(\n
credit_price = max(-brain.total_price, 0)\n
total_credit_price += credit_price\n
\n
brain_date = brain.date\n
if mvt.getStartDate():\n
brain_date = brain_date.toZone(mvt.getStartDate().timezone())\n
\n
line = Object(uid=\'new_000\',\n
total_price=brain.total_price,\n
date=brain.date,\n
......
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