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

use activities to deliver transactions when closing accounting period


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@5504 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 817c766c
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.PythonScripts.PythonScript</string>
<string>PythonScript</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value> <string encoding="base64">O/INCg==</string> </value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""Deliver the transaction and \'notify\' the closing_period on failure."""\n
\n
from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
N_ = context.Base_translateString\n
\n
try : \n
context.portal_workflow.doActionFor( context,\n
\'deliver_action\', \n
skip_period_validation = 1,\n
comment=comment )\n
except ValidationFailed, message :\n
closing_period = context.getPortalObject().restrictedTraverse(closing_period_path)\n
closing_period.failClosing()\n
closing_period.portal_workflow.doActionFor( closing_period,\n
\'edit_action\', \n
comment=N_(\'unable to deliver ${transaction_path} : ${error_message}\',\n
mapping={\'transaction_path\':context.getPath(),\n
\'error_message\': unicode(str(message), \'utf8\') } ))\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/erp5_accounting/AccountingTransaction_closeByAccountingPeriod</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>comment, closing_period_path, **kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>comment</string>
<string>closing_period_path</string>
<string>kw</string>
<string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string>
<string>_getattr_</string>
<string>context</string>
<string>N_</string>
<string>message</string>
<string>closing_period</string>
<string>unicode</string>
<string>str</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>AccountingTransaction_closeByAccountingPeriod</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -76,18 +76,16 @@ N_ = portal.Base_translateString\n
accounting_module = portal.accounting_module\n
valid_states = [\'cancelled\', \'stopped\', \'delivered\']\n
\n
# validate all transactions states.\n
container.AccountingPeriod_CheckTransactionsState(state_change)\n
\n
start_date = closing_period.getStartDate()\n
stop_date = closing_period.getStopDate()\n
\n
search_params = { \'delivery.start_date\' : \'>= %s\' % start_date,\n
\'delivery.stop_date\' : \'<= %s\' % stop_date,\n
\'simulation_state\' : \'stopped\' }\n
\'delivery.stop_date\' : \'<= %s\' % stop_date,\n
\'simulation_state\' : \'stopped\' }\n
transaction_list = accounting_module.searchFolder( **search_params )\n
\n
#raise \'\\n\'.join([transaction.path for transaction in transaction_list])\n
comment=N_("Closing period ${period_title}",\n
mapping={\'period_title\': closing_period.getTitle()})\n
\n
section_uid = closing_period.getParentValue().getUid()\n
for transaction in transaction_list :\n
......@@ -95,27 +93,13 @@ for transaction in transaction_list :\n
# FIXME: this approach is not compatible with categories as sections.\n
if transaction.getSourceSectionUid() == section_uid or \\\n
transaction.getDestinationSectionUid() == section_uid :\n
if transaction.getSimulationState() == \'stopped\' :\n
# this action is made in the \'before_script\', even if this is \n
# related to the workflow logic, because we want the user to be\n
# notified of failures\n
\n
# FIXME: this way is not compatible with 100.000 transactions and should\n
# probably be activated.\n
portal.portal_workflow.doActionFor( transaction, \'deliver_action\',\n
wf_id="accounting_workflow",\n
comment=N_("Closing period ${period_title}",\n
mapping={\'period_title\': closing_period.getTitle()}),\n
skip_period_validation = 1 )\n
if transaction.getSimulationState() != \'delivered\' :\n
# FIXME: this is not transactional\n
raise ValidationFailed, N_(\n
"Unable to change state for ${transaction_path}, "+\n
"check this transaction history",\n
mapping = {\'transaction_path\' : transaction.getPath()})\n
else :\n
transaction.log(\'AccountingPeriod_DeliverTransaction\',\n
\'deliver %s\' % transaction.getPath())\n
transaction.activate().AccountingTransaction_closeByAccountingPeriod(\n
comment = comment, closing_period_path = closing_period.getPath() )\n
\n
# if a transaction validation fails, it puts the Closing Period object back to confirmed state\n
closing_period.activate( \n
after_method_id = [\'AccountingTransaction_closeByAccountingPeriod\']\n
).deliver()\n
]]></string> </value>
......@@ -173,12 +157,12 @@ for transaction in transaction_list :\n
<string>N_</string>
<string>accounting_module</string>
<string>valid_states</string>
<string>container</string>
<string>start_date</string>
<string>stop_date</string>
<string>search_params</string>
<string>_apply_</string>
<string>transaction_list</string>
<string>comment</string>
<string>section_uid</string>
<string>_getiter_</string>
<string>transaction</string>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.States</string>
<string>StateDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string>Closing is the state used when the activity of delivering transaction happens.</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>closing</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>transitions</string> </key>
<value>
<tuple>
<string>deliver</string>
<string>fail_closing</string>
</tuple>
</value>
</item>
<item>
<key> <string>type_list</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -40,8 +40,8 @@
<key> <string>transitions</string> </key>
<value>
<tuple>
<string>deliver</string>
<string>deliver_action</string>
<string>close</string>
<string>close_action</string>
<string>plan</string>
<string>reopen_action</string>
</tuple>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Transitions</string>
<string>TransitionDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value> <string>AccountingPeriod_DeliverTransactions</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>close</string> </value>
</item>
<item>
<key> <string>new_state_id</string> </key>
<value> <string>closing</string> </value>
</item>
<item>
<key> <string>script_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -28,15 +28,15 @@
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string>%(content_url)s/BaseWorkflow_viewWorkflowActionDialog?workflow_action=deliver_action</string> </value>
<value> <string>%(content_url)s/BaseWorkflow_viewWorkflowActionDialog?workflow_action=close_action</string> </value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value> <string>deliver</string> </value>
<value> <string>close</string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
<value> <string>Closing accounting period is made in an activity. if it fails, the Accounting Period object remains in confirmed state, otherwise it goes to delivered state, depending on the result of passing workflow transitions.</string> </value>
</item>
<item>
<key> <string>guard</string> </key>
......@@ -46,7 +46,7 @@
</item>
<item>
<key> <string>id</string> </key>
<value> <string>deliver_action</string> </value>
<value> <string>close_action</string> </value>
</item>
<item>
<key> <string>new_state_id</string> </key>
......@@ -54,7 +54,7 @@
</item>
<item>
<key> <string>script_name</string> </key>
<value> <string>AccountingPeriod_DeliverTransactions</string> </value>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<tuple>
<string>Products.DCWorkflow.Transitions</string>
<string>TransitionDefinition</string>
</tuple>
<none/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>actbox_category</string> </key>
<value> <string>workflow</string> </value>
</item>
<item>
<key> <string>actbox_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>actbox_url</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>after_script_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>guard</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>fail_closing</string> </value>
</item>
<item>
<key> <string>new_state_id</string> </key>
<value> <string>confirmed</string> </value>
</item>
<item>
<key> <string>script_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>trigger_type</string> </key>
<value> <int>2</int> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
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