From ca17816ba6e05829fbdeeee0aaa9cab92c82a6a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Mon, 30 Jan 2006 17:40:32 +0000 Subject: [PATCH] validate accounting period from organisations git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@5444 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../scripts/validateTransaction.xml | 76 +++++++++++-------- 1 file changed, 45 insertions(+), 31 deletions(-) diff --git a/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransaction.xml b/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransaction.xml index aa8f5079ef..e5a1f2027a 100755 --- a/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransaction.xml +++ b/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransaction.xml @@ -68,52 +68,66 @@ <key> <string>_body</string> </key> <value> <string encoding="cdata"><![CDATA[ -from Products.DCWorkflow.DCWorkflow import ValidationFailed\n +"""Validates the transaction from the source section.\n +Currently only works for \n +"""\n \n +from Products.DCWorkflow.DCWorkflow import ValidationFailed\n error_message = \'\'\n \n -# Purchase Invoice Transaction or Sale Invoice Transaction.\n transaction = state_change[\'object\']\n skip_period_validation = state_change[\'kwargs\'].get(\'skip_period_validation\', 0)\n transition = state_change[\'transition\']\n if transition.id in (\'plan_action\', \'confirm_action\') :\n skip_period_validation = 1\n \n -if transaction.getStopDate() in (None, \'\') : \n +N_ = transition.Base_translateString\n +\n +# Get sections and a currency.\n +source_section = transaction.getSourceSectionValue(\n + portal_type = [\'Organisation\',\'Category\'])\n +if source_section and source_section.getPortalType() != \'Organisation\' :\n + source_section = source_section.getMappingRelatedValue(\n + portal_type = \'Organisation\')\n +if not source_section :\n + raise ValidationFailed, N_(\n + \'Action impossible : Source Section is not Defined.\')\n + \n +destination_section = transaction.getDestinationSection(\n + portal_type = [\'Organisation\', \'Person\'])\n +# if it\'s not an invoice, then we can validate without destination.\n +if not destination_section and \\\n + transaction.getPortalType() in transaction.getPortalInvoiceTypeList() :\n + raise ValidationFailed, N_(\n + \'Action impossible : Destination Section is not Defined.\')\n +\n +currency = transaction.getResource()\n +if not currency :\n + raise ValidationFailed, N_(\n + \'Action impossible : Currency is not Defined.\')\n +\n +if transaction.getStopDate() in (None, \'\') :\n error_message = \'date is not defined\'\n -else: \n +else:\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 + transaction.getStopDate().day(),\n + # we don\'t care about hour:minutes\n + )\n + for apd in source_section.searchFolder(\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 + 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\',\'Category\'])\n -destination_section = transaction.getDestinationSection(portal_type = [\'Organisation\', \'Person\'])\n -currency = transaction.getResource()\n -\n -if source_section in (None, \'\'):\n - error_message = \'Source Section is not defined\'\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 +if error_message :\n + raise ValidationFailed, N_(\'Action impossible : \' + error_message)\n ]]></string> </value> @@ -132,7 +146,7 @@ if error_message != \'\':\n </item> <item> <key> <string>_filepath</string> </key> - <value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateTransaction</string> </value> + <value> <string>Script (Python):/erp5/portal_workflow/accounting_workflow/scripts/validateTransaction</string> </value> </item> <item> <key> <string>_params</string> </key> @@ -189,16 +203,16 @@ if error_message != \'\':\n <string>_getattr_</string> <string>skip_period_validation</string> <string>transition</string> + <string>N_</string> + <string>source_section</string> + <string>destination_section</string> + <string>currency</string> <string>None</string> <string>valid_date</string> <string>DateTime</string> <string>transaction_date</string> <string>_getiter_</string> - <string>context</string> <string>apd</string> - <string>source_section</string> - <string>destination_section</string> - <string>currency</string> </tuple> </value> </item> -- 2.30.9