From d9621295a49dd6eb925db540fa2b656b489493fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C5=81ukasz=20Nowak?= <luke@nexedi.com>
Date: Wed, 8 Feb 2012 13:15:47 +0100
Subject: [PATCH] Check that transition is possible before continuing.

---
 .../vifib_slap/SaleInvoiceTransaction_confirmPlanned.xml | 3 ++-
 .../vifib_slap/SaleInvoiceTransaction_stopConfirmed.xml  | 9 ++++++---
 master/bt5/vifib_slap/bt/revision                        | 2 +-
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_confirmPlanned.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_confirmPlanned.xml
index 74a6fbf83..409f85089 100644
--- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_confirmPlanned.xml
+++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_confirmPlanned.xml
@@ -52,7 +52,8 @@
             <key> <string>_body</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-if context.getSimulationState() == \'planned\' and context.getStartDate() < this_month:\n
+isTransitionPossible = context.getPortalObject().portal_workflow.isTransitionPossible\n
+if context.getSimulationState() == \'planned\' and context.getStartDate() < this_month and isTransitionPossible(context, \'confirm\'):\n
   context.confirm()\n
 
 
diff --git a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_stopConfirmed.xml b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_stopConfirmed.xml
index 7ad4f3969..00df74172 100644
--- a/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_stopConfirmed.xml
+++ b/master/bt5/vifib_slap/SkinTemplateItem/portal_skins/vifib_slap/SaleInvoiceTransaction_stopConfirmed.xml
@@ -50,9 +50,12 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>if context.getSimulationState() == \'confirmed\' and len(context.checkConsistency()) == 0:\n
-  context.start()\n
-  context.stop()\n
+            <value> <string>isTransitionPossible = context.getPortalObject().portal_workflow.isTransitionPossible\n
+if context.getSimulationState() == \'confirmed\' and len(context.checkConsistency()) == 0:\n
+  if isTransitionPossible(context, \'start\'):\n
+    context.start()\n
+  if isTransitionPossible(context, \'stop\'):\n
+    context.stop()\n
 </string> </value>
         </item>
         <item>
diff --git a/master/bt5/vifib_slap/bt/revision b/master/bt5/vifib_slap/bt/revision
index f5bba53e7..bccf25b78 100644
--- a/master/bt5/vifib_slap/bt/revision
+++ b/master/bt5/vifib_slap/bt/revision
@@ -1 +1 @@
-556
\ No newline at end of file
+557
\ No newline at end of file
-- 
2.30.9