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

Validate with period.

Translate portal status messages here.
 FIXME: it will be translated again in form_view.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@4750 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 671802cf
...@@ -138,12 +138,6 @@ AAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value> ...@@ -138,12 +138,6 @@ AAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateBalanceTransaction</string> </value> <value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateBalanceTransaction</string> </value>
</item> </item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string>state_change</string> </value> <value> <string>state_change</string> </value>
......
...@@ -73,22 +73,30 @@ from Products.DCWorkflow.DCWorkflow import ValidationFailed\n ...@@ -73,22 +73,30 @@ from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
error_message = \'\'\n error_message = \'\'\n
\n \n
# Purchase Invoice Transaction or Sale Invoice Transaction.\n # Purchase Invoice Transaction or Sale Invoice Transaction.\n
transaction = state_change.object\n transaction = state_change[\'object\']\n
skip_period_validation = state_change[\'kwargs\'].get(\'skip_period_validation\', 0)\n
\n \n
if transaction.getStopDate() in (None, \'\') : \n if transaction.getStopDate() in (None, \'\') : \n
error_message = \'date is not defined\'\n error_message = \'date is not defined\'\n
else: \n else: \n
# check the date is not in a closed period\n if not skip_period_validation :\n
for apd in context.portal_catalog(\n valid_date = 0\n
portal_type="Accounting Period Delimiter", \n # check the date is in an opened period\n
simulation_state="delivered") : \n transaction_date = DateTime( transaction.getStopDate().year(),\n
apd = apd.getObject()\n transaction.getStopDate().month(),\n
if apd.getStartDate() < transaction.getStopDate() < apd.getStopDate():\n transaction.getStopDate().day() ) # we don\'t care about hour:minutes\n
error_message = \'date is in a closed period\'\n for apd in context.portal_catalog(\n
portal_type = "Accounting Period", \n
simulation_state = "planned") : \n
apd = apd.getObject()\n
if apd.getStartDate() <= transaction_date <= apd.getStopDate():\n
valid_date = 1\n
if not valid_date :\n
error_message = "Date is not in an openned Accounting Period" \n
\n \n
# Get sections and a currency.\n # Get sections and a currency.\n
source_section = transaction.getSourceSection(portal_type = [\'Organisation\'])\n source_section = transaction.getSourceSection()\n
destination_section = transaction.getDestinationSection(portal_type = [\'Organisation\', \'Person\'])\n destination_section = transaction.getDestinationSection()\n
currency = transaction.getResource()\n currency = transaction.getResource()\n
\n \n
if source_section in (None, \'\'):\n if source_section in (None, \'\'):\n
...@@ -96,51 +104,54 @@ if source_section in (None, \'\'):\n ...@@ -96,51 +104,54 @@ if source_section in (None, \'\'):\n
elif transaction.getPortalType() not in (\'Balance Transaction\', \'Accounting Transaction\'):\n elif transaction.getPortalType() not in (\'Balance Transaction\', \'Accounting Transaction\'):\n
if destination_section in (None, \'\'):\n if destination_section in (None, \'\'):\n
error_message = \'destination_section is not defined\'\n error_message = \'destination_section is not defined\'\n
if transaction.getDestinationSection() not in (None, \'\'):\n
error_message = \'destination_section is not an Organisation or a Person\'\n
elif currency in (None, \'\'):\n elif currency in (None, \'\'):\n
error_message = \'currency is not defined\'\n error_message = \'currency is not defined\'\n
\n \n
if error_message != \'\':\n if error_message != \'\':\n
raise ValidationFailed, \'Action impossible : \' + error_message\n raise ValidationFailed, \'Action impossible : \'+error_message\n
]]></string> </value> ]]></string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAAA0AAAASAAAAQwAA <value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAABIAAAAPAAAAQwAA
AHPoAQAAZAEAawAAbAEAfQIAAWQCAH0DAHQDAHwAAGQDAIMCAH0FAHQDAHwFAGQEAIMCAIMAAHQG AHM9AgAAZAEAawAAbAEAfQIAAWQCAH0DAHQDAHwAAGQDAIMCAH0FAHQGAHQDAHwAAGQEAIMCAGQF
AGQCAGYCAGoGAG8KAAFkBQB9AwBujgABeIoAdAcAdAMAdAgAZAYAgwIAZAcAZAgAZAkAZAoAgwAC AIMCAGQGAGQHAIMCAH0HAHQGAHwFAGQIAIMCAIMAAHQIAGQCAGYCAGoGAG8KAAFkCQB9AwBuAAEB
gwEARF1kAH0JAHQDAHwJAGQLAIMCAIMAAH0JAHQDAHwJAGQMAIMCAIMAAHQDAHwFAGQEAIMCAIMA fAcADG/3AAFkBwB9CQB0CgB0BgB0BgB8BQBkCACDAgCDAABkCgCDAgCDAAB0BgB0BgB8BQBkCACD
AAQDagAAbxYAAXQDAHwJAGQEAIMCAIMAAGoAAG4CAAIBbwoAAWQNAH0DAHFwAAFxcABXdAMAfAUA AgCDAABkCwCDAgCDAAB0BgB0BgB8BQBkCACDAgCDAABkDACDAgCDAACDAwB9CwB4fgB0DAB0BgB0
ZA4AgwIAZAcAZA8AZwEAgwABfQoAdAMAfAUAZBAAgwIAZAcAZA8AZBEAZwIAgwABfQsAdAMAfAUA DQBkDQCDAgBkDgBkDwBkEABkEQCDAAKDAQBEXVgAfQ4AdAYAfA4AZBIAgwIAgwAAfQ4AdAYAfA4A
ZBIAgwIAgwAAfQwAfAoAdAYAZAIAZgIAagYAbwoAAWQTAH0DAG6HAAF0AwB8BQBkFACDAgCDAABk ZBMAgwIAgwAAfAsABANqAQBvFgABdAYAfA4AZAgAgwIAgwAAagEAbgIAAgFvCgABZBQAfQkAcfkA
FQBkFgBmAgBqBwBvZwABfAsAdAYAZAIAZgIAagYAbzMAAWQXAH0DAHQDAHwFAGQQAIMCAIMAAHQG AXH5AFd8CQAMbwoAAWQVAH0DAHFrAQFuAQABdAYAfAUAZBYAgwIAgwAAfQ8AdAYAfAUAZBcAgwIA
AGQCAGYCAGoHAG8KAAFkGAB9AwBxwgEBccYBAXwMAHQGAGQCAGYCAGoGAG8KAAFkGQB9AwBxxgEB gwAAfRAAdAYAfAUAZBgAgwIAgwAAfREAfA8AdAgAZAIAZgIAagYAbwoAAWQZAH0DAG5eAAF0BgB8
bgEAAXwDAGQCAGoDAG8RAAF8AgBkGgB8AwAXggIAbgEAAWQAAFMoGwAAAE4oAQAAAHMQAAAAVmFs BQBkGgCDAgCDAABkGwBkHABmAgBqBwBvPgABfBAAdAgAZAIAZgIAagYAbwoAAWQdAH0DAHEbAgF8
aWRhdGlvbkZhaWxlZHMAAAAAcwYAAABvYmplY3RzCwAAAGdldFN0b3BEYXRlcxMAAABkYXRlIGlz EQB0CABkAgBmAgBqBgBvCgABZB4AfQMAcRsCAW4BAAF8AwBkAgBqAwBvEQABfAIAZB8AfAMAF4IC
IG5vdCBkZWZpbmVkcw4AAABwb3J0YWxfY2F0YWxvZ3MLAAAAcG9ydGFsX3R5cGVzGwAAAEFjY291 AG4BAAFkAABTKCAAAABOKAEAAABzEAAAAFZhbGlkYXRpb25GYWlsZWRzAAAAAHMGAAAAb2JqZWN0
bnRpbmcgUGVyaW9kIERlbGltaXRlcnMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMJAAAAZGVsaXZlcmVk cwYAAABrd2FyZ3NzAwAAAGdldHMWAAAAc2tpcF9wZXJpb2RfdmFsaWRhdGlvbmkAAAAAcwsAAABn
cwkAAABnZXRPYmplY3RzDAAAAGdldFN0YXJ0RGF0ZXMaAAAAZGF0ZSBpcyBpbiBhIGNsb3NlZCBw ZXRTdG9wRGF0ZXMTAAAAZGF0ZSBpcyBub3QgZGVmaW5lZHMEAAAAeWVhcnMFAAAAbW9udGhzAwAA
ZXJpb2RzEAAAAGdldFNvdXJjZVNlY3Rpb25zDAAAAE9yZ2FuaXNhdGlvbnMVAAAAZ2V0RGVzdGlu AGRheXMOAAAAcG9ydGFsX2NhdGFsb2dzCwAAAHBvcnRhbF90eXBlcxEAAABBY2NvdW50aW5nIFBl
YXRpb25TZWN0aW9ucwYAAABQZXJzb25zCwAAAGdldFJlc291cmNlcx0AAABzb3VyY2Vfc2VjdGlv cmlvZHMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMHAAAAcGxhbm5lZHMJAAAAZ2V0T2JqZWN0cwwAAABn
biBpcyBub3QgZGVmaW5lZHMNAAAAZ2V0UG9ydGFsVHlwZXMTAAAAQmFsYW5jZSBUcmFuc2FjdGlv ZXRTdGFydERhdGVpAQAAAHMrAAAARGF0ZSBpcyBub3QgaW4gYW4gb3Blbm5lZCBBY2NvdW50aW5n
bnMWAAAAQWNjb3VudGluZyBUcmFuc2FjdGlvbnMiAAAAZGVzdGluYXRpb25fc2VjdGlvbiBpcyBu IFBlcmlvZHMQAAAAZ2V0U291cmNlU2VjdGlvbnMVAAAAZ2V0RGVzdGluYXRpb25TZWN0aW9ucwsA
b3QgZGVmaW5lZHM2AAAAZGVzdGluYXRpb25fc2VjdGlvbiBpcyBub3QgYW4gT3JnYW5pc2F0aW9u AABnZXRSZXNvdXJjZXMdAAAAc291cmNlX3NlY3Rpb24gaXMgbm90IGRlZmluZWRzDQAAAGdldFBv
IG9yIGEgUGVyc29ucxcAAABjdXJyZW5jeSBpcyBub3QgZGVmaW5lZHMUAAAAQWN0aW9uIGltcG9z cnRhbFR5cGVzEwAAAEJhbGFuY2UgVHJhbnNhY3Rpb25zFgAAAEFjY291bnRpbmcgVHJhbnNhY3Rp
c2libGUgOiAoDQAAAHMeAAAAUHJvZHVjdHMuRENXb3JrZmxvdy5EQ1dvcmtmbG93cxAAAABWYWxp b25zIgAAAGRlc3RpbmF0aW9uX3NlY3Rpb24gaXMgbm90IGRlZmluZWRzFwAAAGN1cnJlbmN5IGlz
ZGF0aW9uRmFpbGVkcw0AAABlcnJvcl9tZXNzYWdlcwkAAABfZ2V0YXR0cl9zDAAAAHN0YXRlX2No IG5vdCBkZWZpbmVkcxQAAABBY3Rpb24gaW1wb3NzaWJsZSA6ICgSAAAAcx4AAABQcm9kdWN0cy5E
YW5nZXMLAAAAdHJhbnNhY3Rpb25zBAAAAE5vbmVzCQAAAF9nZXRpdGVyX3MHAAAAY29udGV4dHMD Q1dvcmtmbG93LkRDV29ya2Zsb3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3Nh
AAAAYXBkcw4AAABzb3VyY2Vfc2VjdGlvbnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMIAAAAY3Vy Z2VzCQAAAF9nZXRpdGVtX3MMAAAAc3RhdGVfY2hhbmdlcwsAAAB0cmFuc2FjdGlvbnMJAAAAX2dl
cmVuY3koDQAAAHMMAAAAc3RhdGVfY2hhbmdlcx4AAABQcm9kdWN0cy5EQ1dvcmtmbG93LkRDV29y dGF0dHJfcxYAAABza2lwX3BlcmlvZF92YWxpZGF0aW9ucwQAAABOb25lcwoAAAB2YWxpZF9kYXRl
a2Zsb3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3NhZ2VzCQAAAF9nZXRhdHRy cwgAAABEYXRlVGltZXMQAAAAdHJhbnNhY3Rpb25fZGF0ZXMJAAAAX2dldGl0ZXJfcwcAAABjb250
X3MLAAAAdHJhbnNhY3Rpb25zBAAAAE5vbmVzCQAAAF9nZXRpdGVyX3MHAAAAY29udGV4dHMDAAAA ZXh0cwMAAABhcGRzDgAAAHNvdXJjZV9zZWN0aW9ucxMAAABkZXN0aW5hdGlvbl9zZWN0aW9ucwgA
YXBkcw4AAABzb3VyY2Vfc2VjdGlvbnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMIAAAAY3VycmVu AABjdXJyZW5jeSgSAAAAcwwAAABzdGF0ZV9jaGFuZ2VzHgAAAFByb2R1Y3RzLkRDV29ya2Zsb3cu
Y3koAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzEwAAAHZhbGlkYXRlVHJhbnNhY3Rpb24B RENXb3JrZmxvd3MQAAAAVmFsaWRhdGlvbkZhaWxlZHMNAAAAZXJyb3JfbWVzc2FnZXMJAAAAX2dl
AAAAcy4AAAANAgYDDwIfAQoDJQAGAxIBQgEOAxsBHgESAhMBCgEfARMBBgEfAQ4BEwEOAg0BKAEA dGl0ZW1fcwsAAAB0cmFuc2FjdGlvbnMJAAAAX2dldGF0dHJfcxYAAABza2lwX3BlcmlvZF92YWxp
AABzEwAAAHZhbGlkYXRlVHJhbnNhY3Rpb24oAQAAAHMTAAAAdmFsaWRhdGVUcmFuc2FjdGlvbigA ZGF0aW9ucwQAAABOb25lcwoAAAB2YWxpZF9kYXRlcwgAAABEYXRlVGltZXMQAAAAdHJhbnNhY3Rp
AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value> b25fZGF0ZXMJAAAAX2dldGl0ZXJfcwcAAABjb250ZXh0cwMAAABhcGRzDgAAAHNvdXJjZV9zZWN0
aW9ucxMAAABkZXN0aW5hdGlvbl9zZWN0aW9ucwgAAABjdXJyZW5jeSgAAAAAKAAAAABzDwAAAFNj
cmlwdCAoUHl0aG9uKXMTAAAAdmFsaWRhdGVUcmFuc2FjdGlvbgEAAABzOgAAAA0CBgMPASECHwEK
AggBBgIkARsBGwElAAYDEgE2AQ4BCAEOAxIBEgESAhMBCgEfARMBCgETAQ4CDQEoAQAAAHMTAAAA
dmFsaWRhdGVUcmFuc2FjdGlvbigBAAAAcxMAAAB2YWxpZGF0ZVRyYW5zYWN0aW9uKAAAAAAoAAAA
AHMPAAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value>
</item> </item>
<item> <item>
<key> <string>_dav_writelocks</string> </key> <key> <string>_dav_writelocks</string> </key>
...@@ -159,7 +170,19 @@ AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </ ...@@ -159,7 +170,19 @@ AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </
<item> <item>
<key> <string>_proxy_roles</string> </key> <key> <string>_proxy_roles</string> </key>
<value> <value>
<tuple/> <tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Authenticated</string>
<string>Author</string>
<string>Manager</string>
<string>Member</string>
<string>Owner</string>
<string>Reviewer</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -190,9 +213,14 @@ AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </ ...@@ -190,9 +213,14 @@ AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </
<string>Products.DCWorkflow.DCWorkflow</string> <string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string> <string>ValidationFailed</string>
<string>error_message</string> <string>error_message</string>
<string>_getattr_</string> <string>_getitem_</string>
<string>transaction</string> <string>transaction</string>
<string>_getattr_</string>
<string>skip_period_validation</string>
<string>None</string> <string>None</string>
<string>valid_date</string>
<string>DateTime</string>
<string>transaction_date</string>
<string>_getiter_</string> <string>_getiter_</string>
<string>context</string> <string>context</string>
<string>apd</string> <string>apd</string>
......
...@@ -71,15 +71,15 @@ ...@@ -71,15 +71,15 @@
from Products.DCWorkflow.DCWorkflow import ValidationFailed\n from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
\n \n
error_message = \'\'\n error_message = \'\'\n
transaction = state_change.object\n transaction = state_change[\'object\']\n
portal = state_change.getPortal()\n N_ = transaction.Base_TranslateString\n
\n \n
# first of all, validate the transaction it self\n # first of all, validate the transaction it self\n
container.validateTransaction(state_change)\n container.validateTransaction(state_change)\n
\n \n
# Get sections.\n # Get sections.\n
source_section = transaction.getSourceSection()\n source_section = transaction.getSourceSection(portal_type = [\'Person\', \'Organisation\'])\n
destination_section = transaction.getDestinationSection()\n destination_section = transaction.getDestinationSection(portal_type = [\'Person\', \'Organisation\'])\n
\n \n
# Check transaction lines.\n # Check transaction lines.\n
if transaction.getPortalType() not in (\'Balance Transaction\',) :\n if transaction.getPortalType() not in (\'Balance Transaction\',) :\n
...@@ -96,85 +96,101 @@ if transaction.getPortalType() not in (\'Balance Transaction\',) :\n ...@@ -96,85 +96,101 @@ if transaction.getPortalType() not in (\'Balance Transaction\',) :\n
quantity = transaction_line.getSourceDebit() - transaction_line.getSourceCredit() + \\\n quantity = transaction_line.getSourceDebit() - transaction_line.getSourceCredit() + \\\n
transaction_line.getDestinationDebit() - transaction_line.getDestinationCredit()\n transaction_line.getDestinationDebit() - transaction_line.getDestinationCredit()\n
sum += int(round(quantity * 100))\n sum += int(round(quantity * 100))\n
\n
if transaction_line.getSourceValue() is None : continue\n if transaction_line.getSourceValue() is None : continue\n
\n
if transaction_line.getSourceValue().getValidationState() != \'validated\' :\n
raise ValidationFailed, N_(\'Action impossible : Account ${account_title} is ${state}\',\n
mapping = {\'account_title\': unicode(transaction_line.getSourceValue().getTranslatedTitle(), \'utf8\'),\n
\'state\': unicode(transaction_line.getSourceValue().\n
getTranslatedValidationStateTitle(), \'utf8\')})\n
\n
if transaction_line.getSourceValue().getAccountTypeId() in ("receivable", "payable") \\\n if transaction_line.getSourceValue().getAccountTypeId() in ("receivable", "payable") \\\n
and transaction_line.getSourceSection() in (None, "") :\n and transaction_line.getDestinationSection() in (None, "") :\n
raise ValidationFailed, \'Action impossible : no source section defined for line %s where account type is "%s"\'%\\\n raise ValidationFailed, N_(\n
(transaction_line.getId(), transaction_line.getSource().getAccountTypeId())\n \'Action impossible : no Third Party defined for line ${line} where Account Type is ${account_type}.\',\n
if transaction_line.getSourceValue().getAccountTypeId() == "bank" \\\n mapping = { \'line\': transaction_line.getId(),\n
\'account_type\' : unicode(transaction_line.getSourceValue()\n
.getAccountTypeValue().getTranslatedLogicalPath(), \'utf8\')})\n
\n
if transaction_line.getSourceValue().isMemberOf("account_type/asset/bank") \\\n
and transaction_line.getSourcePayment() in (None, "") :\n and transaction_line.getSourcePayment() in (None, "") :\n
raise ValidationFailed, \'Action impossible : no source payment defined for line %s where account type is "bank"\'%transaction_line.getId()\n raise ValidationFailed, N_(\n
\'Action impossible : no Bank Account defined for line ${line} where Account Type is ${account_type}.\',\n
mapping = { \'line\': transaction_line.getId(),\n
\'account_type\' : unicode(transaction_line.getSourceValue()\n
.getAccountTypeValue().getTranslatedLogicalPath(), \'utf8\')})\n
\n \n
if sum > 0:\n if sum > 0:\n
raise ValidationFailed, \'Action impossible : credit is greater than debit\' #: sum = %.2f\' % (sum/100.0)\n raise ValidationFailed, N_(\'Action impossible : credit is greater than debit\')\n
elif sum < 0:\n elif sum < 0:\n
raise ValidationFailed, \'Action impossible : credit is smaller than debit\' #: sum = %.2f\' % (sum/100.0)\n raise ValidationFailed, N_(\'Action impossible : credit is smaller than debit\')\n
\n
if portal.portal_templates.getInstalledBusinessTemplate(\'erp5_budget\') is not None :\n
container.validateBudget(state_change)\n
\n \n
# delete empty transaction lines.\n transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
DISABLED = 1\n
if not DISABLED and not transaction.isSimulated() \\\n
and transaction.getSimulationState() in ("stopped", ) :\n
transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
]]></string> </value> ]]></string> </value>
</item> </item>
<item> <item>
<key> <string>_code</string> </key> <key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAABMAAAAhAAAAQwAA <value> <string encoding="base64">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 AGQtAIMCAIMAAGQiAIMCAAM8gwEBggIAcdwAAXHcAFd8DABkEwBqBABvEwABfAIAfAcAZDIAgwEA
dFNvdXJjZVNlY3Rpb25zFQAAAGdldERlc3RpbmF0aW9uU2VjdGlvbnMNAAAAZ2V0UG9ydGFsVHlw ggIAcbUDAXwMAGQTAGoAAG8TAAF8AgB8BwBkMwCDAQCCAgBxtQMBbgEAAXQGAHwFAGQ0AIMCAGQ1
ZXMTAAAAQmFsYW5jZSBUcmFuc2FjdGlvbnMNAAAAY29udGVudFZhbHVlc3MGAAAAZmlsdGVycwsA AGQTAIMAAQFkAABTKDYAAABOKAEAAABzEAAAAFZhbGlkYXRpb25GYWlsZWRzAAAAAHMGAAAAb2Jq
AABwb3J0YWxfdHlwZXMbAAAAQWNjb3VudGluZyBUcmFuc2FjdGlvbiBMaW5lcx0AAABTYWxlIElu ZWN0cxQAAABCYXNlX1RyYW5zbGF0ZVN0cmluZ3MTAAAAdmFsaWRhdGVUcmFuc2FjdGlvbnMQAAAA
dm9pY2UgVHJhbnNhY3Rpb24gTGluZXMaAAAAUGF5IFNoZWV0IFRyYW5zYWN0aW9uIExpbmVzIQAA Z2V0U291cmNlU2VjdGlvbnMLAAAAcG9ydGFsX3R5cGVzBgAAAFBlcnNvbnMMAAAAT3JnYW5pc2F0
AFB1cmNoYXNlIEludm9pY2UgVHJhbnNhY3Rpb24gTGluZWkAAAAAcwsAAABnZXRRdWFudGl0eWYD aW9ucxUAAABnZXREZXN0aW5hdGlvblNlY3Rpb25zDQAAAGdldFBvcnRhbFR5cGVzEwAAAEJhbGFu
MC4wcw4AAABnZXRTb3VyY2VEZWJpdHMPAAAAZ2V0U291cmNlQ3JlZGl0cxMAAABnZXREZXN0aW5h Y2UgVHJhbnNhY3Rpb25zDQAAAGNvbnRlbnRWYWx1ZXNzBgAAAGZpbHRlcnMbAAAAQWNjb3VudGlu
dGlvbkRlYml0cxQAAABnZXREZXN0aW5hdGlvbkNyZWRpdGlkAAAAcw4AAABnZXRTb3VyY2VWYWx1 ZyBUcmFuc2FjdGlvbiBMaW5lcx0AAABTYWxlIEludm9pY2UgVHJhbnNhY3Rpb24gTGluZXMaAAAA
ZXMQAAAAZ2V0QWNjb3VudFR5cGVJZHMKAAAAcmVjZWl2YWJsZXMHAAAAcGF5YWJsZXNUAAAAQWN0 UGF5IFNoZWV0IFRyYW5zYWN0aW9uIExpbmVzIQAAAFB1cmNoYXNlIEludm9pY2UgVHJhbnNhY3Rp
aW9uIGltcG9zc2libGUgOiBubyBzb3VyY2Ugc2VjdGlvbiBkZWZpbmVkIGZvciBsaW5lICVzIHdo b24gTGluZWkAAAAAcwsAAABnZXRRdWFudGl0eWYDMC4wcw4AAABnZXRTb3VyY2VEZWJpdHMPAAAA
ZXJlIGFjY291bnQgdHlwZSBpcyAiJXMicwUAAABnZXRJZHMJAAAAZ2V0U291cmNlcwQAAABiYW5r Z2V0U291cmNlQ3JlZGl0cxMAAABnZXREZXN0aW5hdGlvbkRlYml0cxQAAABnZXREZXN0aW5hdGlv
cxAAAABnZXRTb3VyY2VQYXltZW50c1YAAABBY3Rpb24gaW1wb3NzaWJsZSA6IG5vIHNvdXJjZSBw bkNyZWRpdGlkAAAAcw4AAABnZXRTb3VyY2VWYWx1ZXMSAAAAZ2V0VmFsaWRhdGlvblN0YXRlcwkA
YXltZW50IGRlZmluZWQgZm9yIGxpbmUgJXMgd2hlcmUgYWNjb3VudCB0eXBlIGlzICJiYW5rInMw AAB2YWxpZGF0ZWRzOAAAAEFjdGlvbiBpbXBvc3NpYmxlIDogQWNjb3VudCAke2FjY291bnRfdGl0
AAAAQWN0aW9uIGltcG9zc2libGUgOiBjcmVkaXQgaXMgZ3JlYXRlciB0aGFuIGRlYml0czAAAABB bGV9IGlzICR7c3RhdGV9cwcAAABtYXBwaW5ncw0AAABhY2NvdW50X3RpdGxlcxIAAABnZXRUcmFu
Y3Rpb24gaW1wb3NzaWJsZSA6IGNyZWRpdCBpcyBzbWFsbGVyIHRoYW4gZGViaXRzEAAAAHBvcnRh c2xhdGVkVGl0bGVzBAAAAHV0ZjhzBQAAAHN0YXRlcyEAAABnZXRUcmFuc2xhdGVkVmFsaWRhdGlv
bF90ZW1wbGF0ZXNzHAAAAGdldEluc3RhbGxlZEJ1c2luZXNzVGVtcGxhdGVzCwAAAGVycDVfYnVk blN0YXRlVGl0bGVzEAAAAGdldEFjY291bnRUeXBlSWRzCgAAAHJlY2VpdmFibGVzBwAAAHBheWFi
Z2V0cw4AAAB2YWxpZGF0ZUJ1ZGdldGkBAAAAcwsAAABpc1NpbXVsYXRlZHMSAAAAZ2V0U2ltdWxh bGVzYgAAAEFjdGlvbiBpbXBvc3NpYmxlIDogbm8gVGhpcmQgUGFydHkgZGVmaW5lZCBmb3IgbGlu
dGlvblN0YXRlcwcAAABzdG9wcGVkcyYAAABBY2NvdW50aW5nVHJhbnNhY3Rpb25fZGVsZXRlRW1w ZSAke2xpbmV9IHdoZXJlIEFjY291bnQgVHlwZSBpcyAke2FjY291bnRfdHlwZX0ucwQAAABsaW5l
dHlMaW5lc3MIAAAAcmVkaXJlY3QoEwAAAHMeAAAAUHJvZHVjdHMuRENXb3JrZmxvdy5EQ1dvcmtm cwUAAABnZXRJZHMMAAAAYWNjb3VudF90eXBlcxMAAABnZXRBY2NvdW50VHlwZVZhbHVlcxgAAABn
bG93cxAAAABWYWxpZGF0aW9uRmFpbGVkcw0AAABlcnJvcl9tZXNzYWdlcwkAAABfZ2V0YXR0cl9z ZXRUcmFuc2xhdGVkTG9naWNhbFBhdGhzCgAAAGlzTWVtYmVyT2ZzFwAAAGFjY291bnRfdHlwZS9h
DAAAAHN0YXRlX2NoYW5nZXMLAAAAdHJhbnNhY3Rpb25zBgAAAHBvcnRhbHMJAAAAY29udGFpbmVy c3NldC9iYW5rcxAAAABnZXRTb3VyY2VQYXltZW50c2MAAABBY3Rpb24gaW1wb3NzaWJsZSA6IG5v
cw4AAABzb3VyY2Vfc2VjdGlvbnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMdAAAAYWNjb3VudGlu IEJhbmsgQWNjb3VudCBkZWZpbmVkIGZvciBsaW5lICR7bGluZX0gd2hlcmUgQWNjb3VudCBUeXBl
Z1RyYW5zYWN0aW9uTGluZUxpc3RzAwAAAHN1bXMJAAAAX2dldGl0ZXJfcxAAAAB0cmFuc2FjdGlv IGlzICR7YWNjb3VudF90eXBlfS5zMAAAAEFjdGlvbiBpbXBvc3NpYmxlIDogY3JlZGl0IGlzIGdy
bl9saW5lcwgAAABxdWFudGl0eXMDAAAAaW50cwUAAAByb3VuZHMEAAAATm9uZXMIAAAARElTQUJM ZWF0ZXIgdGhhbiBkZWJpdHMwAAAAQWN0aW9uIGltcG9zc2libGUgOiBjcmVkaXQgaXMgc21hbGxl
RUQoEwAAAHMMAAAAc3RhdGVfY2hhbmdlcx4AAABQcm9kdWN0cy5EQ1dvcmtmbG93LkRDV29ya2Zs ciB0aGFuIGRlYml0cyYAAABBY2NvdW50aW5nVHJhbnNhY3Rpb25fZGVsZXRlRW1wdHlMaW5lc3MI
b3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3NhZ2VzCQAAAF9nZXRhdHRyX3ML AAAAcmVkaXJlY3QoFAAAAHMeAAAAUHJvZHVjdHMuRENXb3JrZmxvdy5EQ1dvcmtmbG93cxAAAABW
AAAAdHJhbnNhY3Rpb25zBgAAAHBvcnRhbHMJAAAAY29udGFpbmVycw4AAABzb3VyY2Vfc2VjdGlv YWxpZGF0aW9uRmFpbGVkcw0AAABlcnJvcl9tZXNzYWdlcwkAAABfZ2V0aXRlbV9zDAAAAHN0YXRl
bnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMdAAAAYWNjb3VudGluZ1RyYW5zYWN0aW9uTGluZUxp X2NoYW5nZXMLAAAAdHJhbnNhY3Rpb25zCQAAAF9nZXRhdHRyX3MCAAAATl9zCQAAAGNvbnRhaW5l
c3RzAwAAAHN1bXMJAAAAX2dldGl0ZXJfcxAAAAB0cmFuc2FjdGlvbl9saW5lcwgAAABxdWFudGl0 cnMOAAAAc291cmNlX3NlY3Rpb25zEwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25zHQAAAGFjY291bnRp
eXMDAAAAaW50cwUAAAByb3VuZHMEAAAATm9uZXMIAAAARElTQUJMRUQoAAAAACgAAAAAcw8AAABT bmdUcmFuc2FjdGlvbkxpbmVMaXN0cwMAAABzdW1zCQAAAF9nZXRpdGVyX3MQAAAAdHJhbnNhY3Rp
Y3JpcHQgKFB5dGhvbilzGAAAAHZhbGlkYXRlVHJhbnNhY3Rpb25MaW5lcwEAAABzRgAAAA0CBgEP b25fbGluZXMIAAAAcXVhbnRpdHlzAwAAAGludHMFAAAAcm91bmRzBAAAAE5vbmVzBwAAAHVuaWNv
ARUDEAMSARIDHAEPAR4EBgENAAYBDQEdAiIBIAEaASYBKAEcAQYBOwEiARwBIQINAQ0BDQERAigB ZGUoFAAAAHMMAAAAc3RhdGVfY2hhbmdlcx4AAABQcm9kdWN0cy5EQ1dvcmtmbG93LkRDV29ya2Zs
FAMGAR8BHAEoAQAAAHMYAAAAdmFsaWRhdGVUcmFuc2FjdGlvbkxpbmVzKAEAAABzGAAAAHZhbGlk b3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3NhZ2VzCQAAAF9nZXRpdGVtX3ML
YXRlVHJhbnNhY3Rpb25MaW5lcygAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1v AAAAdHJhbnNhY3Rpb25zCQAAAF9nZXRhdHRyX3MCAAAATl9zCQAAAGNvbnRhaW5lcnMOAAAAc291
ZHVsZT4BAAAAcwAAAAA=</string> </value> cmNlX3NlY3Rpb25zEwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25zHQAAAGFjY291bnRpbmdUcmFuc2Fj
dGlvbkxpbmVMaXN0cwMAAABzdW1zCQAAAF9nZXRpdGVyX3MQAAAAdHJhbnNhY3Rpb25fbGluZXMI
AAAAcXVhbnRpdHlzAwAAAGludHMFAAAAcm91bmRzBAAAAE5vbmVzBwAAAHVuaWNvZGUoAAAAACgA
AAAAcw8AAABTY3JpcHQgKFB5dGhvbilzGAAAAHZhbGlkYXRlVHJhbnNhY3Rpb25MaW5lcwEAAABz
SgAAAA0CBgEPARIDEAMeAR4DHAEPAR4EBgENAAYBDQEdAiIBIAEaAiACJQEMATEBNgMoARwBDAIc
AUIDHwEcAQwCHAFAAw0BEwENARoCKAEAAABzGAAAAHZhbGlkYXRlVHJhbnNhY3Rpb25MaW5lcygB
AAAAcxgAAAB2YWxpZGF0ZVRyYW5zYWN0aW9uTGluZXMoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5
dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item> </item>
<item> <item>
<key> <string>_dav_writelocks</string> </key> <key> <string>_dav_writelocks</string> </key>
...@@ -186,12 +202,6 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value> ...@@ -186,12 +202,6 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<key> <string>_filepath</string> </key> <key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateTransactionLines</string> </value> <value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateTransactionLines</string> </value>
</item> </item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string>state_change</string> </value> <value> <string>state_change</string> </value>
...@@ -199,7 +209,19 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value> ...@@ -199,7 +209,19 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<item> <item>
<key> <string>_proxy_roles</string> </key> <key> <string>_proxy_roles</string> </key>
<value> <value>
<tuple/> <tuple>
<string>Anonymous</string>
<string>Assignee</string>
<string>Assignor</string>
<string>Associate</string>
<string>Auditor</string>
<string>Authenticated</string>
<string>Author</string>
<string>Manager</string>
<string>Member</string>
<string>Owner</string>
<string>Reviewer</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -230,9 +252,10 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value> ...@@ -230,9 +252,10 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<string>Products.DCWorkflow.DCWorkflow</string> <string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string> <string>ValidationFailed</string>
<string>error_message</string> <string>error_message</string>
<string>_getattr_</string> <string>_getitem_</string>
<string>transaction</string> <string>transaction</string>
<string>portal</string> <string>_getattr_</string>
<string>N_</string>
<string>container</string> <string>container</string>
<string>source_section</string> <string>source_section</string>
<string>destination_section</string> <string>destination_section</string>
...@@ -244,7 +267,7 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value> ...@@ -244,7 +267,7 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<string>int</string> <string>int</string>
<string>round</string> <string>round</string>
<string>None</string> <string>None</string>
<string>DISABLED</string> <string>unicode</string>
</tuple> </tuple>
</value> </value>
</item> </item>
......
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