From b98abcceb93283ef787897e542e14ccb45872807 Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <vincent@nexedi.com>
Date: Mon, 3 Mar 2008 15:22:56 +0000
Subject: [PATCH] Disallow check deposit of the same check more than once in
 the same deposit document.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@19652 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../scripts/validateConsistency.xml                | 14 +++++++++++++-
 bt5/erp5_banking_check/bt/revision                 |  2 +-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/bt5/erp5_banking_check/WorkflowTemplateItem/portal_workflow/check_deposit_workflow/scripts/validateConsistency.xml b/bt5/erp5_banking_check/WorkflowTemplateItem/portal_workflow/check_deposit_workflow/scripts/validateConsistency.xml
index 83bac47a62..212967d734 100644
--- a/bt5/erp5_banking_check/WorkflowTemplateItem/portal_workflow/check_deposit_workflow/scripts/validateConsistency.xml
+++ b/bt5/erp5_banking_check/WorkflowTemplateItem/portal_workflow/check_deposit_workflow/scripts/validateConsistency.xml
@@ -112,6 +112,7 @@ if state_change[\'transition\'].getId() == "wait_action":\n
     \n
 \n
 bank_account_dict = {}\n
+seen_check_dict = {}\n
 \n
 # Check each check operation line.\n
 for check_operation_line in transaction.contentValues(filter = {\'portal_type\' : \'Check Operation Line\'}):\n
@@ -139,6 +140,14 @@ for check_operation_line in transaction.contentValues(filter = {\'portal_type\'
     msg = Message(domain=\'ui\', message=\'Bank account not defined on line $line.\'\n
                   , mapping={"line" : check_operation_line.getId()})\n
     raise ValidationFailed, (msg,)\n
+\n
+  seen_check_dict_key = (source_bank_account, check_type, check_number)\n
+  seen_check = seen_check_dict.get(seen_check_dict_key)\n
+  if seen_check is not None:\n
+    msg = Message(domain=\'ui\', message=\'Check on line $line is already used on line $oldline.\'\n
+                  , mapping={"line" : check_operation_line.getId(), "oldline": seen_check})\n
+    raise ValidationFailed, (msg,)\n
+  seen_check_dict[seen_check_dict_key] = check_operation_line.getId()\n
 \n
   # Test check is valid based on date\n
   transaction.Check_checkIntervalBetweenDate(resource=check_operation_line.getAggregateResourceValue(),\n
@@ -245,14 +254,17 @@ if transaction.getSimulationState() == "draft" and state_change[\'transition\'].
                             <string>destination_bank_account</string>
                             <string>context</string>
                             <string>bank_account_dict</string>
+                            <string>seen_check_dict</string>
                             <string>_getiter_</string>
                             <string>check_operation_line</string>
                             <string>check_number</string>
                             <string>check_type</string>
                             <string>source_bank_account</string>
+                            <string>seen_check_dict_key</string>
+                            <string>seen_check</string>
+                            <string>_write_</string>
                             <string>account_path</string>
                             <string>check_price</string>
-                            <string>_write_</string>
                             <string>error</string>
                             <string>check</string>
                           </tuple>
diff --git a/bt5/erp5_banking_check/bt/revision b/bt5/erp5_banking_check/bt/revision
index e41567feb8..c4c828bd4e 100644
--- a/bt5/erp5_banking_check/bt/revision
+++ b/bt5/erp5_banking_check/bt/revision
@@ -1 +1 @@
-384
\ No newline at end of file
+386
\ No newline at end of file
-- 
2.30.9