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>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateBalanceTransaction</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
......
......@@ -73,22 +73,30 @@ from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
error_message = \'\'\n
\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
if transaction.getStopDate() in (None, \'\') : \n
error_message = \'date is not defined\'\n
else: \n
# check the date is not in a closed period\n
for apd in context.portal_catalog(\n
portal_type="Accounting Period Delimiter", \n
simulation_state="delivered") : \n
apd = apd.getObject()\n
if apd.getStartDate() < transaction.getStopDate() < apd.getStopDate():\n
error_message = \'date is in a closed period\'\n
if not skip_period_validation :\n
valid_date = 0\n
# check the date is in an opened period\n
transaction_date = DateTime( transaction.getStopDate().year(),\n
transaction.getStopDate().month(),\n
transaction.getStopDate().day() ) # we don\'t care about hour:minutes\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
# Get sections and a currency.\n
source_section = transaction.getSourceSection(portal_type = [\'Organisation\'])\n
destination_section = transaction.getDestinationSection(portal_type = [\'Organisation\', \'Person\'])\n
source_section = transaction.getSourceSection()\n
destination_section = transaction.getDestinationSection()\n
currency = transaction.getResource()\n
\n
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
if destination_section in (None, \'\'):\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
error_message = \'currency is not defined\'\n
\n
if error_message != \'\':\n
raise ValidationFailed, \'Action impossible : \' + error_message\n
raise ValidationFailed, \'Action impossible : \'+error_message\n
]]></string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAAA0AAAASAAAAQwAA
AHPoAQAAZAEAawAAbAEAfQIAAWQCAH0DAHQDAHwAAGQDAIMCAH0FAHQDAHwFAGQEAIMCAIMAAHQG
AGQCAGYCAGoGAG8KAAFkBQB9AwBujgABeIoAdAcAdAMAdAgAZAYAgwIAZAcAZAgAZAkAZAoAgwAC
gwEARF1kAH0JAHQDAHwJAGQLAIMCAIMAAH0JAHQDAHwJAGQMAIMCAIMAAHQDAHwFAGQEAIMCAIMA
AAQDagAAbxYAAXQDAHwJAGQEAIMCAIMAAGoAAG4CAAIBbwoAAWQNAH0DAHFwAAFxcABXdAMAfAUA
ZA4AgwIAZAcAZA8AZwEAgwABfQoAdAMAfAUAZBAAgwIAZAcAZA8AZBEAZwIAgwABfQsAdAMAfAUA
ZBIAgwIAgwAAfQwAfAoAdAYAZAIAZgIAagYAbwoAAWQTAH0DAG6HAAF0AwB8BQBkFACDAgCDAABk
FQBkFgBmAgBqBwBvZwABfAsAdAYAZAIAZgIAagYAbzMAAWQXAH0DAHQDAHwFAGQQAIMCAIMAAHQG
AGQCAGYCAGoHAG8KAAFkGAB9AwBxwgEBccYBAXwMAHQGAGQCAGYCAGoGAG8KAAFkGQB9AwBxxgEB
bgEAAXwDAGQCAGoDAG8RAAF8AgBkGgB8AwAXggIAbgEAAWQAAFMoGwAAAE4oAQAAAHMQAAAAVmFs
aWRhdGlvbkZhaWxlZHMAAAAAcwYAAABvYmplY3RzCwAAAGdldFN0b3BEYXRlcxMAAABkYXRlIGlz
IG5vdCBkZWZpbmVkcw4AAABwb3J0YWxfY2F0YWxvZ3MLAAAAcG9ydGFsX3R5cGVzGwAAAEFjY291
bnRpbmcgUGVyaW9kIERlbGltaXRlcnMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMJAAAAZGVsaXZlcmVk
cwkAAABnZXRPYmplY3RzDAAAAGdldFN0YXJ0RGF0ZXMaAAAAZGF0ZSBpcyBpbiBhIGNsb3NlZCBw
ZXJpb2RzEAAAAGdldFNvdXJjZVNlY3Rpb25zDAAAAE9yZ2FuaXNhdGlvbnMVAAAAZ2V0RGVzdGlu
YXRpb25TZWN0aW9ucwYAAABQZXJzb25zCwAAAGdldFJlc291cmNlcx0AAABzb3VyY2Vfc2VjdGlv
biBpcyBub3QgZGVmaW5lZHMNAAAAZ2V0UG9ydGFsVHlwZXMTAAAAQmFsYW5jZSBUcmFuc2FjdGlv
bnMWAAAAQWNjb3VudGluZyBUcmFuc2FjdGlvbnMiAAAAZGVzdGluYXRpb25fc2VjdGlvbiBpcyBu
b3QgZGVmaW5lZHM2AAAAZGVzdGluYXRpb25fc2VjdGlvbiBpcyBub3QgYW4gT3JnYW5pc2F0aW9u
IG9yIGEgUGVyc29ucxcAAABjdXJyZW5jeSBpcyBub3QgZGVmaW5lZHMUAAAAQWN0aW9uIGltcG9z
c2libGUgOiAoDQAAAHMeAAAAUHJvZHVjdHMuRENXb3JrZmxvdy5EQ1dvcmtmbG93cxAAAABWYWxp
ZGF0aW9uRmFpbGVkcw0AAABlcnJvcl9tZXNzYWdlcwkAAABfZ2V0YXR0cl9zDAAAAHN0YXRlX2No
YW5nZXMLAAAAdHJhbnNhY3Rpb25zBAAAAE5vbmVzCQAAAF9nZXRpdGVyX3MHAAAAY29udGV4dHMD
AAAAYXBkcw4AAABzb3VyY2Vfc2VjdGlvbnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMIAAAAY3Vy
cmVuY3koDQAAAHMMAAAAc3RhdGVfY2hhbmdlcx4AAABQcm9kdWN0cy5EQ1dvcmtmbG93LkRDV29y
a2Zsb3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3NhZ2VzCQAAAF9nZXRhdHRy
X3MLAAAAdHJhbnNhY3Rpb25zBAAAAE5vbmVzCQAAAF9nZXRpdGVyX3MHAAAAY29udGV4dHMDAAAA
YXBkcw4AAABzb3VyY2Vfc2VjdGlvbnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMIAAAAY3VycmVu
Y3koAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5dGhvbilzEwAAAHZhbGlkYXRlVHJhbnNhY3Rpb24B
AAAAcy4AAAANAgYDDwIfAQoDJQAGAxIBQgEOAxsBHgESAhMBCgEfARMBBgEfAQ4BEwEOAg0BKAEA
AABzEwAAAHZhbGlkYXRlVHJhbnNhY3Rpb24oAQAAAHMTAAAAdmFsaWRhdGVUcmFuc2FjdGlvbigA
AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </value>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAABIAAAAPAAAAQwAA
AHM9AgAAZAEAawAAbAEAfQIAAWQCAH0DAHQDAHwAAGQDAIMCAH0FAHQGAHQDAHwAAGQEAIMCAGQF
AIMCAGQGAGQHAIMCAH0HAHQGAHwFAGQIAIMCAIMAAHQIAGQCAGYCAGoGAG8KAAFkCQB9AwBuAAEB
fAcADG/3AAFkBwB9CQB0CgB0BgB0BgB8BQBkCACDAgCDAABkCgCDAgCDAAB0BgB0BgB8BQBkCACD
AgCDAABkCwCDAgCDAAB0BgB0BgB8BQBkCACDAgCDAABkDACDAgCDAACDAwB9CwB4fgB0DAB0BgB0
DQBkDQCDAgBkDgBkDwBkEABkEQCDAAKDAQBEXVgAfQ4AdAYAfA4AZBIAgwIAgwAAfQ4AdAYAfA4A
ZBMAgwIAgwAAfAsABANqAQBvFgABdAYAfA4AZAgAgwIAgwAAagEAbgIAAgFvCgABZBQAfQkAcfkA
AXH5AFd8CQAMbwoAAWQVAH0DAHFrAQFuAQABdAYAfAUAZBYAgwIAgwAAfQ8AdAYAfAUAZBcAgwIA
gwAAfRAAdAYAfAUAZBgAgwIAgwAAfREAfA8AdAgAZAIAZgIAagYAbwoAAWQZAH0DAG5eAAF0BgB8
BQBkGgCDAgCDAABkGwBkHABmAgBqBwBvPgABfBAAdAgAZAIAZgIAagYAbwoAAWQdAH0DAHEbAgF8
EQB0CABkAgBmAgBqBgBvCgABZB4AfQMAcRsCAW4BAAF8AwBkAgBqAwBvEQABfAIAZB8AfAMAF4IC
AG4BAAFkAABTKCAAAABOKAEAAABzEAAAAFZhbGlkYXRpb25GYWlsZWRzAAAAAHMGAAAAb2JqZWN0
cwYAAABrd2FyZ3NzAwAAAGdldHMWAAAAc2tpcF9wZXJpb2RfdmFsaWRhdGlvbmkAAAAAcwsAAABn
ZXRTdG9wRGF0ZXMTAAAAZGF0ZSBpcyBub3QgZGVmaW5lZHMEAAAAeWVhcnMFAAAAbW9udGhzAwAA
AGRheXMOAAAAcG9ydGFsX2NhdGFsb2dzCwAAAHBvcnRhbF90eXBlcxEAAABBY2NvdW50aW5nIFBl
cmlvZHMQAAAAc2ltdWxhdGlvbl9zdGF0ZXMHAAAAcGxhbm5lZHMJAAAAZ2V0T2JqZWN0cwwAAABn
ZXRTdGFydERhdGVpAQAAAHMrAAAARGF0ZSBpcyBub3QgaW4gYW4gb3Blbm5lZCBBY2NvdW50aW5n
IFBlcmlvZHMQAAAAZ2V0U291cmNlU2VjdGlvbnMVAAAAZ2V0RGVzdGluYXRpb25TZWN0aW9ucwsA
AABnZXRSZXNvdXJjZXMdAAAAc291cmNlX3NlY3Rpb24gaXMgbm90IGRlZmluZWRzDQAAAGdldFBv
cnRhbFR5cGVzEwAAAEJhbGFuY2UgVHJhbnNhY3Rpb25zFgAAAEFjY291bnRpbmcgVHJhbnNhY3Rp
b25zIgAAAGRlc3RpbmF0aW9uX3NlY3Rpb24gaXMgbm90IGRlZmluZWRzFwAAAGN1cnJlbmN5IGlz
IG5vdCBkZWZpbmVkcxQAAABBY3Rpb24gaW1wb3NzaWJsZSA6ICgSAAAAcx4AAABQcm9kdWN0cy5E
Q1dvcmtmbG93LkRDV29ya2Zsb3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3Nh
Z2VzCQAAAF9nZXRpdGVtX3MMAAAAc3RhdGVfY2hhbmdlcwsAAAB0cmFuc2FjdGlvbnMJAAAAX2dl
dGF0dHJfcxYAAABza2lwX3BlcmlvZF92YWxpZGF0aW9ucwQAAABOb25lcwoAAAB2YWxpZF9kYXRl
cwgAAABEYXRlVGltZXMQAAAAdHJhbnNhY3Rpb25fZGF0ZXMJAAAAX2dldGl0ZXJfcwcAAABjb250
ZXh0cwMAAABhcGRzDgAAAHNvdXJjZV9zZWN0aW9ucxMAAABkZXN0aW5hdGlvbl9zZWN0aW9ucwgA
AABjdXJyZW5jeSgSAAAAcwwAAABzdGF0ZV9jaGFuZ2VzHgAAAFByb2R1Y3RzLkRDV29ya2Zsb3cu
RENXb3JrZmxvd3MQAAAAVmFsaWRhdGlvbkZhaWxlZHMNAAAAZXJyb3JfbWVzc2FnZXMJAAAAX2dl
dGl0ZW1fcwsAAAB0cmFuc2FjdGlvbnMJAAAAX2dldGF0dHJfcxYAAABza2lwX3BlcmlvZF92YWxp
ZGF0aW9ucwQAAABOb25lcwoAAAB2YWxpZF9kYXRlcwgAAABEYXRlVGltZXMQAAAAdHJhbnNhY3Rp
b25fZGF0ZXMJAAAAX2dldGl0ZXJfcwcAAABjb250ZXh0cwMAAABhcGRzDgAAAHNvdXJjZV9zZWN0
aW9ucxMAAABkZXN0aW5hdGlvbl9zZWN0aW9ucwgAAABjdXJyZW5jeSgAAAAAKAAAAABzDwAAAFNj
cmlwdCAoUHl0aG9uKXMTAAAAdmFsaWRhdGVUcmFuc2FjdGlvbgEAAABzOgAAAA0CBgMPASECHwEK
AggBBgIkARsBGwElAAYDEgE2AQ4BCAEOAxIBEgESAhMBCgEfARMBCgETAQ4CDQEoAQAAAHMTAAAA
dmFsaWRhdGVUcmFuc2FjdGlvbigBAAAAcxMAAAB2YWxpZGF0ZVRyYW5zYWN0aW9uKAAAAAAoAAAA
AHMPAAAAU2NyaXB0IChQeXRob24pcwgAAAA8bW9kdWxlPgEAAABzAAAAAA==</string> </value>
</item>
<item>
<key> <string>_dav_writelocks</string> </key>
......@@ -159,7 +170,19 @@ AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </
<item>
<key> <string>_proxy_roles</string> </key>
<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>
</item>
<item>
......@@ -190,9 +213,14 @@ AAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1vZHVsZT4BAAAAcwAAAAA=</string> </
<string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string>
<string>error_message</string>
<string>_getattr_</string>
<string>_getitem_</string>
<string>transaction</string>
<string>_getattr_</string>
<string>skip_period_validation</string>
<string>None</string>
<string>valid_date</string>
<string>DateTime</string>
<string>transaction_date</string>
<string>_getiter_</string>
<string>context</string>
<string>apd</string>
......
......@@ -71,15 +71,15 @@
from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
\n
error_message = \'\'\n
transaction = state_change.object\n
portal = state_change.getPortal()\n
transaction = state_change[\'object\']\n
N_ = transaction.Base_TranslateString\n
\n
# first of all, validate the transaction it self\n
container.validateTransaction(state_change)\n
\n
# Get sections.\n
source_section = transaction.getSourceSection()\n
destination_section = transaction.getDestinationSection()\n
source_section = transaction.getSourceSection(portal_type = [\'Person\', \'Organisation\'])\n
destination_section = transaction.getDestinationSection(portal_type = [\'Person\', \'Organisation\'])\n
\n
# Check transaction lines.\n
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
transaction_line.getDestinationDebit() - transaction_line.getDestinationCredit()\n
sum += int(round(quantity * 100))\n
\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
and transaction_line.getSourceSection() in (None, "") :\n
raise ValidationFailed, \'Action impossible : no source section defined for line %s where account type is "%s"\'%\\\n
(transaction_line.getId(), transaction_line.getSource().getAccountTypeId())\n
if transaction_line.getSourceValue().getAccountTypeId() == "bank" \\\n
and transaction_line.getDestinationSection() in (None, "") :\n
raise ValidationFailed, N_(\n
\'Action impossible : no Third Party 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
if transaction_line.getSourceValue().isMemberOf("account_type/asset/bank") \\\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
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
raise ValidationFailed, \'Action impossible : credit is smaller than debit\' #: sum = %.2f\' % (sum/100.0)\n
\n
if portal.portal_templates.getInstalledBusinessTemplate(\'erp5_budget\') is not None :\n
container.validateBudget(state_change)\n
raise ValidationFailed, N_(\'Action impossible : credit is smaller than debit\')\n
\n
# delete empty transaction lines.\n
DISABLED = 1\n
if not DISABLED and not transaction.isSimulated() \\\n
and transaction.getSimulationState() in ("stopped", ) :\n
transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
]]></string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAABMAAAAhAAAAQwAA
AHMtAwAAZAEAawAAbAEAfQIAAWQCAH0DAHQDAHwAAGQDAIMCAH0FAHQDAHwAAGQEAIMCAIMAAH0G
AHQDAHQHAGQFAIMCAHwAAIMBAAF0AwB8BQBkBgCDAgCDAAB9CAB0AwB8BQBkBwCDAgCDAAB9CQB0
AwB8BQBkCACDAgCDAABkCQBmAQBqBwBvDgIBdAMAfAUAZAoAgwIAZAsAaAAABGQMAGQNAGQOAGQP
AGQQAGYEAAM8gwABfQoAZBEAfQsAeKABdAwAfAoAgwEARF2SAX0NAHwIAHwJAGoDAG8dAAF0AwB8
DQBkEgCDAgCDAABwBAABZBMAfQ4AbkMAAXQDAHwNAGQUAIMCAIMAAHQDAHwNAGQVAIMCAIMAABh0
AwB8DQBkFgCDAgCDAAAXdAMAfA0AZBcAgwIAgwAAGH0OAHwLAHQPAHQQAHwOAGQYABSDAQCDAQA3
fQsAdAMAfA0AZBkAgwIAgwAAdBEAaggAbwcAAXHHAG4BAAF0AwB0AwB8DQBkGQCDAgCDAABkGgCD
AgCDAABkGwBkHABmAgBqBgBvHAABdAMAfA0AZAYAgwIAgwAAdBEAZAIAZgIAagYAbzsAAXwCAGQd
AHQDAHwNAGQeAIMCAIMAAHQDAHQDAHwNAGQfAIMCAIMAAGQaAIMCAIMAAGYCABaCAgBuAQABdAMA
dAMAfA0AZBkAgwIAgwAAZBoAgwIAgwAAZCAAagIAbxwAAXQDAHwNAGQhAIMCAIMAAHQRAGQCAGYC
AGoGAG8dAAF8AgBkIgB0AwB8DQBkHgCDAgCDAAAWggIAcccAAXHHAFd8CwBkEQBqBABvDQABfAIA
ZCMAggIAcZUCAXwLAGQRAGoAAG8NAAF8AgBkJACCAgBxlQIBbgEAAXQDAHQDAHwGAGQlAIMCAGQm
AIMCAGQnAIMBAHQRAGoJAG8XAAF0AwB0BwBkKACDAgB8AACDAQABbgEAAWQpAH0SAHwSAAxvLQAB
dAMAfAUAZCoAgwIAgwAADG8ZAAF0AwB8BQBkKwCDAgCDAABkLABmAQBqBgBvGgABdAMAfAUAZC0A
gwIAZC4AZBEAgwABAW4BAAFkAABTKC8AAABOKAEAAABzEAAAAFZhbGlkYXRpb25GYWlsZWRzAAAA
AHMGAAAAb2JqZWN0cwkAAABnZXRQb3J0YWxzEwAAAHZhbGlkYXRlVHJhbnNhY3Rpb25zEAAAAGdl
dFNvdXJjZVNlY3Rpb25zFQAAAGdldERlc3RpbmF0aW9uU2VjdGlvbnMNAAAAZ2V0UG9ydGFsVHlw
ZXMTAAAAQmFsYW5jZSBUcmFuc2FjdGlvbnMNAAAAY29udGVudFZhbHVlc3MGAAAAZmlsdGVycwsA
AABwb3J0YWxfdHlwZXMbAAAAQWNjb3VudGluZyBUcmFuc2FjdGlvbiBMaW5lcx0AAABTYWxlIElu
dm9pY2UgVHJhbnNhY3Rpb24gTGluZXMaAAAAUGF5IFNoZWV0IFRyYW5zYWN0aW9uIExpbmVzIQAA
AFB1cmNoYXNlIEludm9pY2UgVHJhbnNhY3Rpb24gTGluZWkAAAAAcwsAAABnZXRRdWFudGl0eWYD
MC4wcw4AAABnZXRTb3VyY2VEZWJpdHMPAAAAZ2V0U291cmNlQ3JlZGl0cxMAAABnZXREZXN0aW5h
dGlvbkRlYml0cxQAAABnZXREZXN0aW5hdGlvbkNyZWRpdGlkAAAAcw4AAABnZXRTb3VyY2VWYWx1
ZXMQAAAAZ2V0QWNjb3VudFR5cGVJZHMKAAAAcmVjZWl2YWJsZXMHAAAAcGF5YWJsZXNUAAAAQWN0
aW9uIGltcG9zc2libGUgOiBubyBzb3VyY2Ugc2VjdGlvbiBkZWZpbmVkIGZvciBsaW5lICVzIHdo
ZXJlIGFjY291bnQgdHlwZSBpcyAiJXMicwUAAABnZXRJZHMJAAAAZ2V0U291cmNlcwQAAABiYW5r
cxAAAABnZXRTb3VyY2VQYXltZW50c1YAAABBY3Rpb24gaW1wb3NzaWJsZSA6IG5vIHNvdXJjZSBw
YXltZW50IGRlZmluZWQgZm9yIGxpbmUgJXMgd2hlcmUgYWNjb3VudCB0eXBlIGlzICJiYW5rInMw
AAAAQWN0aW9uIGltcG9zc2libGUgOiBjcmVkaXQgaXMgZ3JlYXRlciB0aGFuIGRlYml0czAAAABB
Y3Rpb24gaW1wb3NzaWJsZSA6IGNyZWRpdCBpcyBzbWFsbGVyIHRoYW4gZGViaXRzEAAAAHBvcnRh
bF90ZW1wbGF0ZXNzHAAAAGdldEluc3RhbGxlZEJ1c2luZXNzVGVtcGxhdGVzCwAAAGVycDVfYnVk
Z2V0cw4AAAB2YWxpZGF0ZUJ1ZGdldGkBAAAAcwsAAABpc1NpbXVsYXRlZHMSAAAAZ2V0U2ltdWxh
dGlvblN0YXRlcwcAAABzdG9wcGVkcyYAAABBY2NvdW50aW5nVHJhbnNhY3Rpb25fZGVsZXRlRW1w
dHlMaW5lc3MIAAAAcmVkaXJlY3QoEwAAAHMeAAAAUHJvZHVjdHMuRENXb3JrZmxvdy5EQ1dvcmtm
bG93cxAAAABWYWxpZGF0aW9uRmFpbGVkcw0AAABlcnJvcl9tZXNzYWdlcwkAAABfZ2V0YXR0cl9z
DAAAAHN0YXRlX2NoYW5nZXMLAAAAdHJhbnNhY3Rpb25zBgAAAHBvcnRhbHMJAAAAY29udGFpbmVy
cw4AAABzb3VyY2Vfc2VjdGlvbnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMdAAAAYWNjb3VudGlu
Z1RyYW5zYWN0aW9uTGluZUxpc3RzAwAAAHN1bXMJAAAAX2dldGl0ZXJfcxAAAAB0cmFuc2FjdGlv
bl9saW5lcwgAAABxdWFudGl0eXMDAAAAaW50cwUAAAByb3VuZHMEAAAATm9uZXMIAAAARElTQUJM
RUQoEwAAAHMMAAAAc3RhdGVfY2hhbmdlcx4AAABQcm9kdWN0cy5EQ1dvcmtmbG93LkRDV29ya2Zs
b3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3NhZ2VzCQAAAF9nZXRhdHRyX3ML
AAAAdHJhbnNhY3Rpb25zBgAAAHBvcnRhbHMJAAAAY29udGFpbmVycw4AAABzb3VyY2Vfc2VjdGlv
bnMTAAAAZGVzdGluYXRpb25fc2VjdGlvbnMdAAAAYWNjb3VudGluZ1RyYW5zYWN0aW9uTGluZUxp
c3RzAwAAAHN1bXMJAAAAX2dldGl0ZXJfcxAAAAB0cmFuc2FjdGlvbl9saW5lcwgAAABxdWFudGl0
eXMDAAAAaW50cwUAAAByb3VuZHMEAAAATm9uZXMIAAAARElTQUJMRUQoAAAAACgAAAAAcw8AAABT
Y3JpcHQgKFB5dGhvbilzGAAAAHZhbGlkYXRlVHJhbnNhY3Rpb25MaW5lcwEAAABzRgAAAA0CBgEP
ARUDEAMSARIDHAEPAR4EBgENAAYBDQEdAiIBIAEaASYBKAEcAQYBOwEiARwBIQINAQ0BDQERAigB
FAMGAR8BHAEoAQAAAHMYAAAAdmFsaWRhdGVUcmFuc2FjdGlvbkxpbmVzKAEAAABzGAAAAHZhbGlk
YXRlVHJhbnNhY3Rpb25MaW5lcygAAAAAKAAAAABzDwAAAFNjcmlwdCAoUHl0aG9uKXMIAAAAPG1v
ZHVsZT4BAAAAcwAAAAA=</string> </value>
<value> <string encoding="base64">YwAAAAAAAAAAAQAAAEAAAABzDQAAAGQBAIQAAFoAAGQAAFMoAgAAAE5jAQAAABQAAAAuAAAAQwAA
AHPPAwAAZAEAawAAbAEAfQIAAWQCAH0DAHQDAHwAAGQDAIMCAH0FAHQGAHwFAGQEAIMCAH0HAHQG
AHQIAGQFAIMCAHwAAIMBAAF0BgB8BQBkBgCDAgBkBwBkCABkCQBnAgCDAAF9CQB0BgB8BQBkCgCD
AgBkBwBkCABkCQBnAgCDAAF9CgB0BgB8BQBkCwCDAgCDAABkDABmAQBqBwBvGQMBdAYAfAUAZA0A
gwIAZA4AaAAABGQHAGQPAGQQAGQRAGQSAGYEAAM8gwABfQsAZBMAfQwAeJ8CdA0AfAsAgwEARF2R
An0OAHwJAHwKAGoDAG8dAAF0BgB8DgBkFACDAgCDAABwBAABZBUAfQ8AbkMAAXQGAHwOAGQWAIMC
AIMAAHQGAHwOAGQXAIMCAIMAABh0BgB8DgBkGACDAgCDAAAXdAYAfA4AZBkAgwIAgwAAGH0PAHwM
AHQQAHQRAHwPAGQaABSDAQCDAQA3fQwAdAYAfA4AZBsAgwIAgwAAdBIAaggAbwcAAXHcAG4BAAF0
BgB0BgB8DgBkGwCDAgCDAABkHACDAgCDAABkHQBqAwBvbQABfAIAfAcAZB4AZB8AaAAABGQgAHQT
AHQGAHQGAHwOAGQbAIMCAIMAAGQhAIMCAIMAAGQiAIMCAAM8BGQjAHQTAHQGAHQGAHwOAGQbAIMC
AIMAAGQkAIMCAIMAAGQiAIMCAAM8gwEBggIAbgEAAXQGAHQGAHwOAGQbAIMCAIMAAGQlAIMCAIMA
AGQmAGQnAGYCAGoGAG8cAAF0BgB8DgBkCgCDAgCDAAB0EgBkAgBmAgBqBgBvZAABfAIAfAcAZCgA
ZB8AaAAABGQpAHQGAHwOAGQqAIMCAIMAAAM8BGQrAHQTAHQGAHQGAHQGAHwOAGQbAIMCAIMAAGQs
AIMCAIMAAGQtAIMCAIMAAGQiAIMCAAM8gwEBggIAbgEAAXQGAHQGAHwOAGQbAIMCAIMAAGQuAIMC
AGQvAIMBAG8cAAF0BgB8DgBkMACDAgCDAAB0EgBkAgBmAgBqBgBvZAABfAIAfAcAZDEAZB8AaAAA
BGQpAHQGAHwOAGQqAIMCAIMAAAM8BGQrAHQTAHQGAHQGAHQGAHwOAGQbAIMCAIMAAGQsAIMCAIMA
AGQtAIMCAIMAAGQiAIMCAAM8gwEBggIAcdwAAXHcAFd8DABkEwBqBABvEwABfAIAfAcAZDIAgwEA
ggIAcbUDAXwMAGQTAGoAAG8TAAF8AgB8BwBkMwCDAQCCAgBxtQMBbgEAAXQGAHwFAGQ0AIMCAGQ1
AGQTAIMAAQFkAABTKDYAAABOKAEAAABzEAAAAFZhbGlkYXRpb25GYWlsZWRzAAAAAHMGAAAAb2Jq
ZWN0cxQAAABCYXNlX1RyYW5zbGF0ZVN0cmluZ3MTAAAAdmFsaWRhdGVUcmFuc2FjdGlvbnMQAAAA
Z2V0U291cmNlU2VjdGlvbnMLAAAAcG9ydGFsX3R5cGVzBgAAAFBlcnNvbnMMAAAAT3JnYW5pc2F0
aW9ucxUAAABnZXREZXN0aW5hdGlvblNlY3Rpb25zDQAAAGdldFBvcnRhbFR5cGVzEwAAAEJhbGFu
Y2UgVHJhbnNhY3Rpb25zDQAAAGNvbnRlbnRWYWx1ZXNzBgAAAGZpbHRlcnMbAAAAQWNjb3VudGlu
ZyBUcmFuc2FjdGlvbiBMaW5lcx0AAABTYWxlIEludm9pY2UgVHJhbnNhY3Rpb24gTGluZXMaAAAA
UGF5IFNoZWV0IFRyYW5zYWN0aW9uIExpbmVzIQAAAFB1cmNoYXNlIEludm9pY2UgVHJhbnNhY3Rp
b24gTGluZWkAAAAAcwsAAABnZXRRdWFudGl0eWYDMC4wcw4AAABnZXRTb3VyY2VEZWJpdHMPAAAA
Z2V0U291cmNlQ3JlZGl0cxMAAABnZXREZXN0aW5hdGlvbkRlYml0cxQAAABnZXREZXN0aW5hdGlv
bkNyZWRpdGlkAAAAcw4AAABnZXRTb3VyY2VWYWx1ZXMSAAAAZ2V0VmFsaWRhdGlvblN0YXRlcwkA
AAB2YWxpZGF0ZWRzOAAAAEFjdGlvbiBpbXBvc3NpYmxlIDogQWNjb3VudCAke2FjY291bnRfdGl0
bGV9IGlzICR7c3RhdGV9cwcAAABtYXBwaW5ncw0AAABhY2NvdW50X3RpdGxlcxIAAABnZXRUcmFu
c2xhdGVkVGl0bGVzBAAAAHV0ZjhzBQAAAHN0YXRlcyEAAABnZXRUcmFuc2xhdGVkVmFsaWRhdGlv
blN0YXRlVGl0bGVzEAAAAGdldEFjY291bnRUeXBlSWRzCgAAAHJlY2VpdmFibGVzBwAAAHBheWFi
bGVzYgAAAEFjdGlvbiBpbXBvc3NpYmxlIDogbm8gVGhpcmQgUGFydHkgZGVmaW5lZCBmb3IgbGlu
ZSAke2xpbmV9IHdoZXJlIEFjY291bnQgVHlwZSBpcyAke2FjY291bnRfdHlwZX0ucwQAAABsaW5l
cwUAAABnZXRJZHMMAAAAYWNjb3VudF90eXBlcxMAAABnZXRBY2NvdW50VHlwZVZhbHVlcxgAAABn
ZXRUcmFuc2xhdGVkTG9naWNhbFBhdGhzCgAAAGlzTWVtYmVyT2ZzFwAAAGFjY291bnRfdHlwZS9h
c3NldC9iYW5rcxAAAABnZXRTb3VyY2VQYXltZW50c2MAAABBY3Rpb24gaW1wb3NzaWJsZSA6IG5v
IEJhbmsgQWNjb3VudCBkZWZpbmVkIGZvciBsaW5lICR7bGluZX0gd2hlcmUgQWNjb3VudCBUeXBl
IGlzICR7YWNjb3VudF90eXBlfS5zMAAAAEFjdGlvbiBpbXBvc3NpYmxlIDogY3JlZGl0IGlzIGdy
ZWF0ZXIgdGhhbiBkZWJpdHMwAAAAQWN0aW9uIGltcG9zc2libGUgOiBjcmVkaXQgaXMgc21hbGxl
ciB0aGFuIGRlYml0cyYAAABBY2NvdW50aW5nVHJhbnNhY3Rpb25fZGVsZXRlRW1wdHlMaW5lc3MI
AAAAcmVkaXJlY3QoFAAAAHMeAAAAUHJvZHVjdHMuRENXb3JrZmxvdy5EQ1dvcmtmbG93cxAAAABW
YWxpZGF0aW9uRmFpbGVkcw0AAABlcnJvcl9tZXNzYWdlcwkAAABfZ2V0aXRlbV9zDAAAAHN0YXRl
X2NoYW5nZXMLAAAAdHJhbnNhY3Rpb25zCQAAAF9nZXRhdHRyX3MCAAAATl9zCQAAAGNvbnRhaW5l
cnMOAAAAc291cmNlX3NlY3Rpb25zEwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25zHQAAAGFjY291bnRp
bmdUcmFuc2FjdGlvbkxpbmVMaXN0cwMAAABzdW1zCQAAAF9nZXRpdGVyX3MQAAAAdHJhbnNhY3Rp
b25fbGluZXMIAAAAcXVhbnRpdHlzAwAAAGludHMFAAAAcm91bmRzBAAAAE5vbmVzBwAAAHVuaWNv
ZGUoFAAAAHMMAAAAc3RhdGVfY2hhbmdlcx4AAABQcm9kdWN0cy5EQ1dvcmtmbG93LkRDV29ya2Zs
b3dzEAAAAFZhbGlkYXRpb25GYWlsZWRzDQAAAGVycm9yX21lc3NhZ2VzCQAAAF9nZXRpdGVtX3ML
AAAAdHJhbnNhY3Rpb25zCQAAAF9nZXRhdHRyX3MCAAAATl9zCQAAAGNvbnRhaW5lcnMOAAAAc291
cmNlX3NlY3Rpb25zEwAAAGRlc3RpbmF0aW9uX3NlY3Rpb25zHQAAAGFjY291bnRpbmdUcmFuc2Fj
dGlvbkxpbmVMaXN0cwMAAABzdW1zCQAAAF9nZXRpdGVyX3MQAAAAdHJhbnNhY3Rpb25fbGluZXMI
AAAAcXVhbnRpdHlzAwAAAGludHMFAAAAcm91bmRzBAAAAE5vbmVzBwAAAHVuaWNvZGUoAAAAACgA
AAAAcw8AAABTY3JpcHQgKFB5dGhvbilzGAAAAHZhbGlkYXRlVHJhbnNhY3Rpb25MaW5lcwEAAABz
SgAAAA0CBgEPARIDEAMeAR4DHAEPAR4EBgENAAYBDQEdAiIBIAEaAiACJQEMATEBNgMoARwBDAIc
AUIDHwEcAQwCHAFAAw0BEwENARoCKAEAAABzGAAAAHZhbGlkYXRlVHJhbnNhY3Rpb25MaW5lcygB
AAAAcxgAAAB2YWxpZGF0ZVRyYW5zYWN0aW9uTGluZXMoAAAAACgAAAAAcw8AAABTY3JpcHQgKFB5
dGhvbilzCAAAADxtb2R1bGU+AQAAAHMAAAAA</string> </value>
</item>
<item>
<key> <string>_dav_writelocks</string> </key>
......@@ -186,12 +202,6 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<key> <string>_filepath</string> </key>
<value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateTransactionLines</string> </value>
</item>
<item>
<key> <string>_owner</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>state_change</string> </value>
......@@ -199,7 +209,19 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<item>
<key> <string>_proxy_roles</string> </key>
<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>
</item>
<item>
......@@ -230,9 +252,10 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<string>Products.DCWorkflow.DCWorkflow</string>
<string>ValidationFailed</string>
<string>error_message</string>
<string>_getattr_</string>
<string>_getitem_</string>
<string>transaction</string>
<string>portal</string>
<string>_getattr_</string>
<string>N_</string>
<string>container</string>
<string>source_section</string>
<string>destination_section</string>
......@@ -244,7 +267,7 @@ ZHVsZT4BAAAAcwAAAAA=</string> </value>
<string>int</string>
<string>round</string>
<string>None</string>
<string>DISABLED</string>
<string>unicode</string>
</tuple>
</value>
</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