From d4c00331c65ec9a5fe723b443a94f5c471f65a7b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Mon, 30 Jan 2006 17:39:15 +0000
Subject: [PATCH] validate lines with converted quantities

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@5443 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../scripts/validateTransactionLines.xml      | 71 +++++++++++--------
 1 file changed, 41 insertions(+), 30 deletions(-)

diff --git a/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransactionLines.xml b/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransactionLines.xml
index ec538b389a..e24882a9be 100755
--- a/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransactionLines.xml
+++ b/bt5/erp5_accounting/WorkflowTemplateItem/portal_workflow/accounting_workflow/scripts/validateTransactionLines.xml
@@ -68,63 +68,74 @@
             <key> <string>_body</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
+"""Validate Transaction Lines for the source.\n
+"""\n
+\n
 from Products.DCWorkflow.DCWorkflow import ValidationFailed\n
 \n
 error_message = \'\'\n
 transaction = state_change[\'object\']\n
-N_ = transaction.Base_TranslateString\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(portal_type = [\'Person\', \'Organisation\',\'Category\'])\n
-destination_section = transaction.getDestinationSection(portal_type = [\'Person\', \'Organisation\',\'Category\'])\n
+source_section = transaction.getSourceSection(\n
+  portal_type = [\'Person\', \'Organisation\',\'Category\'])\n
+destination_section = transaction.getDestinationSection(\n
+  portal_type = [\'Person\', \'Organisation\',\'Category\'])\n
 \n
 # Check transaction lines.\n
 if transaction.getPortalType() not in (\'Balance Transaction\',) :\n
-  accountingTransactionLineList = transaction.contentValues(\n
-                    filter={\'portal_type\': (\'Accounting Transaction Line\',\n
-                                            \'Sale Invoice Transaction Line\',\n
-                                            \'Pay Sheet Transaction Line\',\n
-                                            \'Purchase Invoice Transaction Line\' )})\n
+  accounting_transaction_line_list = transaction.contentValues(\n
+         filter={ \'portal_type\':\n
+               transaction.getPortalAccountingMovementTypeList()})\n
   sum = 0\n
-  for transaction_line in accountingTransactionLineList:\n
+  for transaction_line in accounting_transaction_line_list:\n
     if source_section != destination_section :\n
-      quantity = transaction_line.getQuantity() or 0.0\n
+      quantity = transaction_line.getSourceInventoriatedTotalAssetPrice() or 0\n
     else :\n
-      quantity = transaction_line.getSourceDebit() - transaction_line.getSourceCredit() + \\\n
-                 transaction_line.getDestinationDebit() - transaction_line.getDestinationCredit()\n
+      quantity = transaction_line.getSourceInventoriatedTotalAssetPrice() or 0 +\\\n
+                 transaction_line.getDestinationInventoriatedTotalAssetPrice() or 0\n
+      \n
     sum += int(round(quantity * 100))\n
-\n
-    if transaction_line.getSourceValue() is None : continue\n
+    if transaction_line.getSourceValue() is None :\n
+      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
+      raise ValidationFailed, N_(\n
+            \'Action impossible : Account ${account_title} is ${state}\',\n
+            mapping = {\'account_title\':  unicode(transaction_line\\\n
+                           .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.getDestinationSection() in (None, "") :\n
+    if transaction_line.getSourceValue().getAccountTypeId() in (\n
+              "receivable", "payable") and \\\n
+              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
+             \'Action impossible : no Third Party defined for line ${line} \'+\n
+             \'where Account Type is ${account_type}.\',\n
              mapping = { \'line\': transaction_line.getId(),\n
-                                   \'account_type\' : unicode(transaction_line.getSourceValue()\n
-                                                                 .getAccountTypeValue().getTranslatedLogicalPath(), \'utf8\')})\n
+                \'account_type\' : unicode(transaction_line.getSourceValue()\\\n
+                .getAccountTypeValue().getTranslatedLogicalPath(), \'utf8\')})\n
     \n
     if transaction_line.getSourceValue().isMemberOf("account_type/asset/cash") \\\n
           and transaction_line.getSourcePayment() in (None, "") :\n
        raise ValidationFailed, N_(\n
-            \'Action impossible : no Bank Account defined for line ${line} where Account Type is ${account_type}.\',\n
+            \'Action impossible : no Bank Account defined for line ${line} \'+\n
+            \'where Account Type is ${account_type}.\',\n
             mapping = { \'line\': transaction_line.getId(),\n
-                                   \'account_type\' : unicode(transaction_line.getSourceValue()\n
-                                                       .getAccountTypeValue().getTranslatedLogicalPath(), \'utf8\')})\n
+             \'account_type\' : unicode(transaction_line.getSourceValue()\\\n
+                .getAccountTypeValue().getTranslatedLogicalPath(), \'utf8\')})\n
 \n
   if sum > 0:\n
-    raise ValidationFailed, N_(\'Action impossible : credit is greater than debit\')\n
+    raise ValidationFailed, N_(\n
+              \'Action impossible : credit is greater than debit\')\n
   elif sum < 0:\n
-    raise ValidationFailed, N_(\'Action impossible : credit is smaller than debit\')\n
+    raise ValidationFailed, N_(\n
+              \'Action impossible : credit is smaller than debit\')\n
 \n
 transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
 
@@ -145,7 +156,7 @@ transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
         </item>
         <item>
             <key> <string>_filepath</string> </key>
-            <value> <string>Script (Python):/nexedi/portal_workflow/accounting_workflow/scripts/validateTransactionLines</string> </value>
+            <value> <string>Script (Python):/erp5/portal_workflow/accounting_workflow/scripts/validateTransactionLines</string> </value>
         </item>
         <item>
             <key> <string>_params</string> </key>
@@ -204,7 +215,7 @@ transaction.AccountingTransaction_deleteEmptyLines(redirect=0)\n
                             <string>container</string>
                             <string>source_section</string>
                             <string>destination_section</string>
-                            <string>accountingTransactionLineList</string>
+                            <string>accounting_transaction_line_list</string>
                             <string>sum</string>
                             <string>_getiter_</string>
                             <string>transaction_line</string>
-- 
2.30.9