Invoke Form - Possible Distinct Outputs Scenario
- Last UpdatedJun 26, 2024
- 15 minute read
Scenario
Telematics company allows the users in Administration Department to initiate purchase order requisition. The purchase orders thus requested are send for the managers approval. During the approval process the manager has options to Approve, Reject, Apply Corrections, or Keep On Hold the request.
-
When the manager approves the request, the same is added to the AVEVA Work Tasks list that stores all the approved purchase order for further processing.
-
When the manager rejects the request, the information is send back to the requester with valid comments for rejection.
-
When the manager opts for Apply Corrections, the same request is send back to the requester with the comments from manager for applying required corrections before re-submitting.
-
When the manager keeps the request on hold, the same request is retained in manager's Inbox for later processing along with information being sent to the requester saying the request is kept on hold.
Requirements
-
Two users are in users list with name as Tim and John. For this scenario, John is considered as the manager of Tim.
-
Initial Form for the purchase order requisition.
-
Form to show the requested purchase order to the manager.
-
Form for the requester to make the corrections suggested by the manager.
-
List to store the approved purchase orders.
-
Approval process workflow.
Steps
-
Create Users with name John and Tim
-
In the Enterprise Console, click the Menu button, click Settings, and then click Users.
The Users page appears.
-
Add a new user with name John.
-
Add a new user with name Tim, and set the manager as John.
-
-
Provide security rights to the users. Skip this step if security is disabled.
-
In the Enterprise Console, point to the logged in user name, for example, admin, and then click Repository Settings.
The Repository Settings page appears.
-
In the Advanced Settings tab, click Manage Security Group - Resource Mapping.
The Security Mapping page appears.
-
Add a new security mapping for Tim as Contributor (from Map users tab).
-
Add a new security mapping for John as Contributor (from Map users tab).
Note: User search is case sensitive
-
-
Create Form for purchase order requisition
-
In the Enterprise Console, click the Menu button, and then click Forms.
The Forms page appears.
-
Create a new Workflow Initiator form and name it as Purchase Order Requisition.
-
Import the form definition from the Purchase Order Requisition_Form.xml using the Import menu option in Forms Designer. Alternatively, use the following XML for importing:
<BaseForm SaveButtonText="@@Finish@@" FormTitle="" EnableActionBar="False" ProductVersion="1" BuildVersion="50100100" Id="NF1" FormMode="NextGenMode" XmlNodeBoundTo="SKRootDefinition" Name="Purchase Order Requisition Form" xmlns="clr-namespace:Skelta.Forms.Core.Controls;assembly:Skelta.Forms.Core" xmlns:L="clr-namespace:System.Collections.Generic;assembly:mscorlib" xmlns:C="clr-namespace:Skelta.Forms.Core.Classes;assembly:Skelta.Forms.Core"><ScriptCode><![CDATA[]]></ScriptCode><Controls><TextInput XmlNodeBoundTo="ReferenceNumber" Name="Reference Number" Id="T1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><DateInput XmlNodeBoundTo="OrderedDate" Name="Ordered Date" Id="D1" /><DateInput XmlNodeBoundTo="RequiredDate" Name="Required Date" Id="D2" /><RadioButtonGroup XmlNodeBoundTo="Priority" Name="Priority" Id="R1"><Options><C:ColoredDictionary Key="High" Value="High" ForeColor="" BackColor="" /><C:ColoredDictionary Key="Medium" Value="Medium" ForeColor="" BackColor="" /><C:ColoredDictionary Key="Low" Value="Low" ForeColor="" BackColor="" /></Options><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></RadioButtonGroup><TextInput XmlNodeBoundTo="Status" Name="Status" Id="T2" Visible="False"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><PanelForm NumberOfColumns="1" TabbingSequence="Vertical" FormTitle="" EnableActionBar="False" ProductVersion="" BuildVersion="" Id="P1" FormMode="NextGenMode" XmlNodeBoundTo="" Name="Order details"><Controls><BaseForm ViewMode="Grid" FormTitle="" EnableActionBar="False" ProductVersion="" BuildVersion="" AddPosition="Bottom" Id="B1" DefaultRows="1" FormMode="NextGenMode" XmlNodeBoundTo="Items" Name="Items"><Controls><TextInput XmlNodeBoundTo="ItemNo" Name="Item No" Id="T3" /><TextInput XmlNodeBoundTo="PartNo" Name="Part No" Id="T4" /><TextInput XmlNodeBoundTo="Description" Name="Description" Id="T5" /><Number MaxValue="999999999999999" MinValue="-999999999999999" XmlNodeBoundTo="UnitPrice" Name="Unit Price" Id="N1"><DecimalDigits><![CDATA[0]]></DecimalDigits></Number><Number MaxValue="999999999999999" MinValue="-999999999999999" XmlNodeBoundTo="Quantity" Name="Quantity" Id="N2"><DecimalDigits><![CDATA[0]]></DecimalDigits></Number><TextInput XmlNodeBoundTo="ItemTotal" Name="Item Total" Id="T6" ReadOnly="True"><OnDataChangedScript><![CDATA[control.findByXmlNode("SubTotal").value=control.sumByXmlNode("ItemTotal");]]></OnDataChangedScript><PropertyExpressions><Property Name="Value"><Code><![CDATA[var qty=control.findByXmlNode("Quantity").value;
var price=control.findByXmlNode("UnitPrice").value;
return qty*price;]]></Code></Property></PropertyExpressions></TextInput></Controls><OnRowAddedScript><![CDATA[]]></OnRowAddedScript><OnRowDeletedScript><![CDATA[]]></OnRowDeletedScript></BaseForm><PanelForm NumberOfColumns="1" TabbingSequence="Vertical" FormTitle="" EnableActionBar="False" ProductVersion="" BuildVersion="" Id="P2" FormMode="NextGenMode" XmlNodeBoundTo="" Name="Estimation Details"><Controls><TextInput XmlNodeBoundTo="SubTotal" Name="Sub Total" Id="T7" ReadOnly="True"><OnDataChangedScript><![CDATA[var tax=(currentValue*12)/100;
control.findByXmlNode("Tax").value=tax;
var discount=(currentValue*1)/100;
control.findByXmlNode("Discount").value=discount;
control.findByXmlNode("Total").value=parseFloat(currentValue)+parseFloat(tax)-parseFloat(discount);]]></OnDataChangedScript></TextInput><TextInput XmlNodeBoundTo="Tax" Name="Tax" Id="T8" ReadOnly="True"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><Number MaxValue="999999999999999" MinValue="-999999999999999" XmlNodeBoundTo="Discount" ReadOnly="True" Name="Discount" Id="N3"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><TextInput XmlNodeBoundTo="Total" Name="Total" Id="T9" ReadOnly="True"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput></Controls></PanelForm></Controls></PanelForm><PanelForm NumberOfColumns="1" TabbingSequence="Vertical" FormTitle="" EnableActionBar="False" ProductVersion="" BuildVersion="" Id="P3" FormMode="NextGenMode" XmlNodeBoundTo="" Name="Approval details" Visible="False"><Controls><RichTextInput XmlNodeBoundTo="Comments" Name="Comments" Id="R2" /><UserLookUp FilterExpressions="{x:Null}" FilterDependencyIds="{x:Null}" IsFilterExpressionSetForProperty="False" XmlNodeBoundTo="Approver" Name="Approver" Id="U1" /></Controls></PanelForm></Controls></BaseForm>
-
Click Finish.
-
Select the form, and then select Associate from the ribbon to create association with the workflow.
The Bind window appears.
-
Select the task as Design a new Workflow, and then click Next.
-
-
Design the PurchaseOrderApprovalProcess workflow.
-
Enter the title of the Workflow as PurchaseOrderApprovalProcess.
-
Select Design the Workflow now, and then click Finish.
-
Using the import option from tools menu, import the workflow from 'PurchaseOrderApprovalProcess.xml'.
<workflow name="" version="2">
<diagramdatacollection>
<diagramdata key="DesignerInstanceId"><![CDATA[b1d252ef2cdf4715be94978fc9f08a24]]></diagramdata>
</diagramdatacollection>
<action name="Add to Approved Purchase Orders list" type="UpdateVariableValue" displayname="UpdateVariableValue" description="" looponoutput="">
<properties>
<property name="Set Variable">
<contentupdationfields>
<contentupdationfield name="XmlVariables.ApprovedPos.ApprovedPurchaseOrders" operator="=" mode="ObjTree" methodName="ff3e564e36d0411eb79c5abb50a09758"><![CDATA[XmlVariables.SFFormData.PurchaseOrder]]></contentupdationfield>
<classname><![CDATA[84f0afb6b2dc43079e965718ac011da5]]></classname>
<jstring><![CDATA[[{"RHSMode":"ObjTree",
"LHSColumn":"XmlVariables.ApprovedPos.ApprovedPurchaseOrders",
"RHSColumn":"XmlVariables.SFFormData.PurchaseOrder",
"OPRColumn":"",
"ColumnExpression":{"DisplayExpressionString":"",
"ActualExprtessionString":"",
"MethodParameterList":"",
"HtmlVerexpString":"",
"ReferenceList":"",
"ReferencedFunctionList":"",
"NodeInfo":""}}]]]></jstring>
</contentupdationfields>
</property>
<property name="StopOnExceptions"><![CDATA[Yes]]></property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>25</left>
<isloop>false</isloop>
<height>65</height>
<top>425</top>
<width>65</width>
</visual-attributes>
</action>
<action name="Apply Corrections" type="Invoke Form" displayname="Invoke Form" description="" looponoutput="">
<properties>
<property name="Action Display Name"><![CDATA[]]></property>
<property name="Delivery Channels">
<propertychannel selectedchannelscount="1">
<channels>
<channel name="WebWorkList">
<config url="" />
<forms>
<form name="Invoke Form" type="InvokeWebForm">
<actors grantaccess="True" />
<roles grantaccess="True" />
</form>
</forms>
</channel>
<removedchannels list="" />
</channels>
</propertychannel>
</property>
<property name="Work Item Fields">
<Workitemfields />
</property>
<property name="To">
<resource>
<providername><![CDATA[]]></providername>
<globalfilter><![CDATA[]]></globalfilter>
<dispglobalfilter><![CDATA[]]></dispglobalfilter>
<filter><![CDATA[[Title] = [Variable.SubmittedBy.Title]]]></filter>
<dispfilter><![CDATA[[SK User Name] = [Variable.SubmittedBy.SK User Name]]]></dispfilter>
<multipleproviderfilter><![CDATA[[Title] = [Variable.SubmittedBy.Title]]]></multipleproviderfilter>
<multipleproviderdispfilter><![CDATA[[SK User Name] = [Variable.SubmittedBy.SK User Name]]]></multipleproviderdispfilter>
<isuserconfiguredthroughuserlookup><![CDATA[False]]></isuserconfiguredthroughuserlookup>
<usersconfiguredthroughuserlookup><![CDATA[]]></usersconfiguredthroughuserlookup>
<isuserconfiguredthroughrolelookup><![CDATA[False]]></isuserconfiguredthroughrolelookup>
<rolesconfiguredthroughrolelookup><![CDATA[]]></rolesconfiguredthroughrolelookup>
<isuserconfiguredthroughsubmitter><![CDATA[False]]></isuserconfiguredthroughsubmitter>
</resource>
</property>
<property name="Assign Queue">
<queuevalue>
<value><![CDATA[]]></value>
<valueID><![CDATA[]]></valueID>
</queuevalue>
</property>
<property name="Min. Acknowledgements [% or Number]"><![CDATA[1]]></property>
<property name="Max. Acknowledgements [% or Number]"><![CDATA[100%]]></property>
<property name="Enable TakeOwnership"><![CDATA[No]]></property>
<property name="Forwarding Allowed?"><![CDATA[No]]></property>
<property name="Ignore Unavailable Resources?"><![CDATA[No]]></property>
<property name="Alternate Resource Allowed?"><![CDATA[Yes]]></property>
<property name="FormDetails"><![CDATA[Purchase Order Apply Corrections?0?2a1f685d-9fdd-422f-8085-04d09d7149ed?Apply Corrections]]></property>
<property name="InputInstanceXML"><![CDATA[SFFormData]]></property>
<property name="FormParameters">
<contentupdationfields>
<classname><![CDATA[f115bff0df63429aabd8e776df6d14ee]]></classname>
<jstring><![CDATA[]]></jstring>
</contentupdationfields>
</property>
<property name="SaveAsDraft"><![CDATA[Yes]]></property>
<property name="CloseOnSaveAsDraft"><![CDATA[Yes]]></property>
<property name="MaximizeOnLoad"><![CDATA[Yes]]></property>
<property name="MultiSelectFormDetails"><![CDATA[]]></property>
<property name="ResponsesFormDetails"><![CDATA[]]></property>
<property name="Subject">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[Apply Correction for PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%> ]]></value>
<valueHTML><![CDATA[Apply Correction for PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%>
]]></valueHTML>
<classname><![CDATA[871a8cb23b4d4f0db35dbbab60df2676]]></classname>
</workflowmemovalue>
</property>
<property name="Notes">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[170d1e0d937048c0ae62e2d7263f72d1]]></classname>
</workflowmemovalue>
</property>
<property name="WorkitemDetailViewURL"><![CDATA[]]></property>
<property name="CloseOnFormSubmit"><![CDATA[No]]></property>
<property name="From Email Address"><![CDATA[admin@domain.com]]></property>
<property name="Show Custom Document View Window"><![CDATA[0]]></property>
<property name="Priority"><![CDATA[Medium]]></property>
<property name="Send Notification Email"><![CDATA[No]]></property>
<property name="Notify if alternate considered"><![CDATA[No]]></property>
<property name="Redirect URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[ed8c16c8e74d415bbc19c818acbb131b]]></classname>
</workflowmemovalue>
</property>
<property name="Custom Document View URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[75e012b867534fa3b091285f164965ed]]></classname>
</workflowmemovalue>
</property>
<property name="OutputInstanceXML"><![CDATA[SFFormData]]></property>
<property name="AdvancedResponseStorage"><![CDATA[<ResponseStorage><IndRespNode></IndRespNode><AllRespsNode></AllRespsNode></ResponseStorage>]]></property>
<property name="Hide Responses?"><![CDATA[0]]></property>
<property name="Affirmative Answer for Approval [% or Number]"><![CDATA[100%]]></property>
<property name="Action Limit[% or Number]"><![CDATA[100%]]></property>
<property name="Wait For All The Participants To Act"><![CDATA[No]]></property>
<property name="Decisions">
<Decisions>
<JSDecisonString><![CDATA[]]></JSDecisonString>
<CompletionMaker><![CDATA[]]></CompletionMaker>
<AffirmativeOutput><![CDATA[]]></AffirmativeOutput>
<AffirmativePercentage><![CDATA[]]></AffirmativePercentage>
<AffirmativeNegativeOutput><![CDATA[]]></AffirmativeNegativeOutput>
<classname><![CDATA[7a046c0eceb94d92a318394e34677c7a]]></classname>
</Decisions>
</property>
<property name="Set Calendar"><![CDATA[]]></property>
<property name="Minimum Time for Action"><![CDATA[0]]></property>
<property name="Timeout warning for Acknowledgement"><![CDATA[0]]></property>
<property name="Timeout for Acknowledgement"><![CDATA[0]]></property>
<property name="Timeout warning for Action"><![CDATA[0]]></property>
<property name="Timeout for Action"><![CDATA[0]]></property>
<property name="Multiple TimeOut Warning"><![CDATA[]]></property>
<property name="Enable Redirection?"><![CDATA[No]]></property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>500</left>
<isloop>false</isloop>
<height>65</height>
<top>75</top>
<width>65</width>
</visual-attributes>
</action>
<action name="Approval of PO" type="Invoke Form" displayname="Invoke Form" description="" looponoutput="">
<properties>
<property name="Action Display Name"><![CDATA[]]></property>
<property name="Delivery Channels">
<propertychannel selectedchannelscount="1">
<channels>
<channel name="WebWorkList">
<config url="" />
<forms>
<form name="Invoke Form" type="InvokeWebForm">
<actors grantaccess="True" />
<roles grantaccess="True" />
</form>
</forms>
</channel>
<removedchannels list="" />
</channels>
</propertychannel>
</property>
<property name="Work Item Fields">
<Workitemfields />
</property>
<property name="To">
<resource>
<providername><![CDATA[]]></providername>
<globalfilter><![CDATA[]]></globalfilter>
<dispglobalfilter><![CDATA[]]></dispglobalfilter>
<filter><![CDATA[[Id] = [Variable.SubmittedBy.Manager]]]></filter>
<dispfilter><![CDATA[[SK User Id] = [Variable.SubmittedBy.SK Manager]]]></dispfilter>
<multipleproviderfilter><![CDATA[[Id] = [Variable.SubmittedBy.Manager]]]></multipleproviderfilter>
<multipleproviderdispfilter><![CDATA[[SK User Id] = [Variable.SubmittedBy.SK Manager]]]></multipleproviderdispfilter>
<isuserconfiguredthroughuserlookup><![CDATA[False]]></isuserconfiguredthroughuserlookup>
<usersconfiguredthroughuserlookup><![CDATA[]]></usersconfiguredthroughuserlookup>
<isuserconfiguredthroughrolelookup><![CDATA[False]]></isuserconfiguredthroughrolelookup>
<rolesconfiguredthroughrolelookup><![CDATA[]]></rolesconfiguredthroughrolelookup>
<isuserconfiguredthroughsubmitter><![CDATA[False]]></isuserconfiguredthroughsubmitter>
</resource>
</property>
<property name="Assign Queue">
<queuevalue>
<value><![CDATA[]]></value>
<valueID><![CDATA[]]></valueID>
</queuevalue>
</property>
<property name="Min. Acknowledgements [% or Number]"><![CDATA[1]]></property>
<property name="Max. Acknowledgements [% or Number]"><![CDATA[100%]]></property>
<property name="Enable TakeOwnership"><![CDATA[No]]></property>
<property name="Forwarding Allowed?"><![CDATA[No]]></property>
<property name="Ignore Unavailable Resources?"><![CDATA[No]]></property>
<property name="Alternate Resource Allowed?"><![CDATA[Yes]]></property>
<property name="FormDetails"><![CDATA[Purchase Order Approval Form?0?6b50ad12-5000-4433-a6da-b2a886c332f5?Approval of PO]]></property>
<property name="InputInstanceXML"><![CDATA[SFFormData]]></property>
<property name="FormParameters">
<contentupdationfields>
<classname><![CDATA[2c5c84cc1427420ba2b0b617447af148]]></classname>
<jstring><![CDATA[]]></jstring>
</contentupdationfields>
</property>
<property name="SaveAsDraft"><![CDATA[No]]></property>
<property name="CloseOnSaveAsDraft"><![CDATA[Yes]]></property>
<property name="MaximizeOnLoad"><![CDATA[Yes]]></property>
<property name="MultiSelectFormDetails"><![CDATA[]]></property>
<property name="ResponsesFormDetails"><![CDATA[]]></property>
<property name="Subject">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[Approval Request of PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%> ]]></value>
<valueHTML><![CDATA[Approval Request of PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%>
]]></valueHTML>
<classname><![CDATA[2cc3474df6ab4f9da47fcde5ac5ed9dd]]></classname>
</workflowmemovalue>
</property>
<property name="Notes">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[46637cac79774826b7c3dbb40431b312]]></classname>
</workflowmemovalue>
</property>
<property name="WorkitemDetailViewURL"><![CDATA[]]></property>
<property name="CloseOnFormSubmit"><![CDATA[Yes]]></property>
<property name="From Email Address"><![CDATA[admin@domain.com]]></property>
<property name="Show Custom Document View Window"><![CDATA[0]]></property>
<property name="Priority"><![CDATA[Medium]]></property>
<property name="Send Notification Email"><![CDATA[No]]></property>
<property name="Notify if alternate considered"><![CDATA[No]]></property>
<property name="Redirect URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[b6237f3653b04cbbaaac26a97177e30d]]></classname>
</workflowmemovalue>
</property>
<property name="Custom Document View URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[ba62c179ab774fcfb8dbbebd52b9b52a]]></classname>
</workflowmemovalue>
</property>
<property name="OutputInstanceXML"><![CDATA[SFFormData]]></property>
<property name="AdvancedResponseStorage"><![CDATA[<ResponseStorage><IndRespNode></IndRespNode><AllRespsNode></AllRespsNode></ResponseStorage>]]></property>
<property name="Hide Responses?"><![CDATA[0]]></property>
<property name="Affirmative Answer for Approval [% or Number]"><![CDATA[100%]]></property>
<property name="Action Limit[% or Number]"><![CDATA[100%]]></property>
<property name="Wait For All The Participants To Act"><![CDATA[No]]></property>
<property name="Decisions">
<Decisions>
<JSDecisonString><![CDATA[[{"ConditionString":"[{\"LHSBrace\":\"\",\n\"LHSColumn\":{\"DisplayText\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"Actualtext\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"DataType\":\"System.String\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"}},\n\"MHSActualText\":\"EQ\",\n\"MHSDisplayText\":\"Equals\",\n\"RHSColumn\":{\"DisplayText\":\"Approve\",\n\"Actualtext\":\"\",\n\"DataType\":\"\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"},\n\"ActualText\":\"Approve\"},\n\"LHSMode\":\"default\",\n\"RHSMode\":\"default\",\n\"LogicalOpr\":\"\",\n\"RHSValue\":\"Approve\",\n\"RHSBrace\":\"\",\n\"OprValidate\":\"no\",\n\"IsRHSExists\":true}]",
"OutPut":"Approved",
"HaltExecution":false},
{"ConditionString":"[{\"LHSBrace\":\"\",\n\"LHSColumn\":{\"DisplayText\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"Actualtext\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"DataType\":\"System.String\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"}},\n\"MHSActualText\":\"EQ\",\n\"MHSDisplayText\":\"Equals\",\n\"RHSColumn\":{\"DisplayText\":\"Reject\",\n\"Actualtext\":\"\",\n\"DataType\":\"\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"},\n\"ActualText\":\"Reject\"},\n\"LHSMode\":\"default\",\n\"RHSMode\":\"default\",\n\"LogicalOpr\":\"\",\n\"RHSValue\":\"Reject\",\n\"RHSBrace\":\"\",\n\"OprValidate\":\"no\",\n\"IsRHSExists\":true}]",
"OutPut":"Rejected",
"HaltExecution":false},
{"ConditionString":"[{\"LHSBrace\":\"\",\n\"LHSColumn\":{\"DisplayText\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"Actualtext\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"DataType\":\"System.String\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"}},\n\"MHSActualText\":\"EQ\",\n\"MHSDisplayText\":\"Equals\",\n\"RHSColumn\":{\"DisplayText\":\"Keep On Hold\",\n\"Actualtext\":\"\",\n\"DataType\":\"\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"},\n\"ActualText\":\"Keep On Hold\"},\n\"LHSMode\":\"default\",\n\"RHSMode\":\"default\",\n\"LogicalOpr\":\"\",\n\"RHSValue\":\"Keep On Hold\",\n\"RHSBrace\":\"\",\n\"OprValidate\":\"no\",\n\"IsRHSExists\":true}]",
"OutPut":"Keep On Hold",
"HaltExecution":false},
{"ConditionString":"[{\"LHSBrace\":\"\",\n\"LHSColumn\":{\"DisplayText\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"Actualtext\":\"Skelta.HWS.WorkItem.SubmissionContext.ButtonPressed\",\n\"DataType\":\"System.String\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"}},\n\"MHSActualText\":\"EQ\",\n\"MHSDisplayText\":\"Equals\",\n\"RHSColumn\":{\"DisplayText\":\"Apply Corrections\",\n\"Actualtext\":\"\",\n\"DataType\":\"\",\n\"RefFunction\":\"\",\n\"ParamList\":\"\",\n\"ColumnMode\":\"default\",\n\"ColumnExpression\":{\"DisplayExpressionString\":\"\",\n\"ActualExprtessionString\":\"\",\n\"MethodParameterList\":\"\",\n\"HtmlVerexpString\":\"\",\n\"ReferenceList\":\"\",\n\"ReferencedFunctionList\":\"\",\n\"NodeInfo\":\"\"},\n\"ActualText\":\"Apply Corrections\"},\n\"LHSMode\":\"default\",\n\"RHSMode\":\"default\",\n\"LogicalOpr\":\"\",\n\"RHSValue\":\"Apply Corrections\",\n\"RHSBrace\":\"\",\n\"OprValidate\":\"no\",\n\"IsRHSExists\":true}]",
"OutPut":"Corrections Required",
"HaltExecution":false},
]]]></JSDecisonString>
<CompletionMaker><![CDATA[<Outputs UpdateOnlyForCM='Yes'><Data Output='Approved' status='yes'></Data><Data Output='Rejected' status='yes'></Data><Data Output='Keep On Hold' status='no'></Data><Data Output='Corrections Required' status='yes'></Data></Outputs>]]></CompletionMaker>
<AffirmativeOutput><![CDATA[]]></AffirmativeOutput>
<AffirmativePercentage><![CDATA[]]></AffirmativePercentage>
<AffirmativeNegativeOutput><![CDATA[]]></AffirmativeNegativeOutput>
<classname><![CDATA[46470308f9ea447f920ebb1660c42f66]]></classname>
</Decisions>
</property>
<property name="Set Calendar"><![CDATA[]]></property>
<property name="Minimum Time for Action"><![CDATA[0]]></property>
<property name="Timeout warning for Acknowledgement"><![CDATA[0]]></property>
<property name="Timeout for Acknowledgement"><![CDATA[0]]></property>
<property name="Timeout warning for Action"><![CDATA[0]]></property>
<property name="Timeout for Action"><![CDATA[0]]></property>
<property name="Multiple TimeOut Warning"><![CDATA[]]></property>
<property name="Enable Redirection?"><![CDATA[No]]></property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>275</left>
<isloop>false</isloop>
<height>65</height>
<top>75</top>
<width>65</width>
</visual-attributes>
</action>
<action name="Information to submitted user" type="Information" displayname="Information" description="" looponoutput="">
<properties>
<property name="Action Display Name"><![CDATA[]]></property>
<property name="Delivery Channels">
<propertychannel selectedchannelscount="1">
<channels>
<channel name="WebWorkList">
<config url="" />
<forms>
<form name="Information Form" type="NativeWebForm">
<actors grantaccess="True" />
<roles grantaccess="True" />
</form>
</forms>
</channel>
<removedchannels list="" />
</channels>
</propertychannel>
</property>
<property name="Work Item Fields">
<Workitemfields />
</property>
<property name="To">
<resource>
<providername><![CDATA[]]></providername>
<globalfilter><![CDATA[]]></globalfilter>
<dispglobalfilter><![CDATA[]]></dispglobalfilter>
<filter><![CDATA[[Title] = [Variable.SubmittedBy.Title]]]></filter>
<dispfilter><![CDATA[[SK User Name] = [Variable.SubmittedBy.SK User Name]]]></dispfilter>
<multipleproviderfilter><![CDATA[[Title] = [Variable.SubmittedBy.Title]]]></multipleproviderfilter>
<multipleproviderdispfilter><![CDATA[[SK User Name] = [Variable.SubmittedBy.SK User Name]]]></multipleproviderdispfilter>
<isuserconfiguredthroughuserlookup><![CDATA[False]]></isuserconfiguredthroughuserlookup>
<usersconfiguredthroughuserlookup><![CDATA[]]></usersconfiguredthroughuserlookup>
<isuserconfiguredthroughrolelookup><![CDATA[False]]></isuserconfiguredthroughrolelookup>
<rolesconfiguredthroughrolelookup><![CDATA[]]></rolesconfiguredthroughrolelookup>
<isuserconfiguredthroughsubmitter><![CDATA[False]]></isuserconfiguredthroughsubmitter>
</resource>
</property>
<property name="Assign Queue">
<queuevalue>
<value><![CDATA[]]></value>
<valueID><![CDATA[]]></valueID>
</queuevalue>
</property>
<property name="Subject">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%> is <%#XmlVariables.SFFormData.PurchaseOrder.status%> ]]></value>
<valueHTML><![CDATA[PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%> is <%#XmlVariables.SFFormData.PurchaseOrder.status%>
]]></valueHTML>
<classname><![CDATA[97414f4e2a974d56b525c96f00c86242]]></classname>
</workflowmemovalue>
</property>
<property name="Notes">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[432da39ffdb04b36a888363e60303c57]]></classname>
</workflowmemovalue>
</property>
<property name="From Email Address"><![CDATA[admin@domain.com]]></property>
<property name="Show Custom Document View Window"><![CDATA[Yes]]></property>
<property name="Send Notification Email"><![CDATA[No]]></property>
<property name="Notify if alternate considered"><![CDATA[No]]></property>
<property name="Redirect URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[295f69eedfb446d8be537d05c5af22ec]]></classname>
</workflowmemovalue>
</property>
<property name="Custom Document View URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[11312f4a8fd6414aa35d590489e940d9]]></classname>
</workflowmemovalue>
</property>
<property name="Use html template from property"><![CDATA[No]]></property>
<property name="HTML template">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[c9d37d6adef24d88b705c2c6f407e433]]></classname>
</workflowmemovalue>
</property>
<property name="AttachReport">
<AttachmentInfo>
<SingleStringValue><![CDATA[]]></SingleStringValue>
<TypeOfAttachment><![CDATA[0]]></TypeOfAttachment>
<MailSendingOption><![CDATA[0]]></MailSendingOption>
<ClassName><![CDATA[78392f6821e54f158a67b078c8a45a49]]></ClassName>
</AttachmentInfo>
</property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>275</left>
<isloop>false</isloop>
<height>65</height>
<top>425</top>
<width>65</width>
</visual-attributes>
</action>
<action name="PO Kept On Hold" type="Information" displayname="Information" description="" looponoutput="">
<properties>
<property name="Action Display Name"><![CDATA[]]></property>
<property name="Delivery Channels">
<propertychannel selectedchannelscount="1">
<channels>
<channel name="WebWorkList">
<config url="" />
<forms>
<form name="Information Form" type="NativeWebForm">
<actors grantaccess="True" />
<roles grantaccess="True" />
</form>
</forms>
</channel>
<removedchannels list="" />
</channels>
</propertychannel>
</property>
<property name="Work Item Fields">
<Workitemfields />
</property>
<property name="To">
<resource>
<providername><![CDATA[]]></providername>
<globalfilter><![CDATA[]]></globalfilter>
<dispglobalfilter><![CDATA[]]></dispglobalfilter>
<filter><![CDATA[[Title] = [Variable.SubmittedBy.Title]]]></filter>
<dispfilter><![CDATA[[SK User Name] = [Variable.SubmittedBy.SK User Name]]]></dispfilter>
<multipleproviderfilter><![CDATA[[Title] = [Variable.SubmittedBy.Title]]]></multipleproviderfilter>
<multipleproviderdispfilter><![CDATA[[SK User Name] = [Variable.SubmittedBy.SK User Name]]]></multipleproviderdispfilter>
<isuserconfiguredthroughuserlookup><![CDATA[False]]></isuserconfiguredthroughuserlookup>
<usersconfiguredthroughuserlookup><![CDATA[]]></usersconfiguredthroughuserlookup>
<isuserconfiguredthroughrolelookup><![CDATA[False]]></isuserconfiguredthroughrolelookup>
<rolesconfiguredthroughrolelookup><![CDATA[]]></rolesconfiguredthroughrolelookup>
<isuserconfiguredthroughsubmitter><![CDATA[False]]></isuserconfiguredthroughsubmitter>
</resource>
</property>
<property name="Assign Queue">
<queuevalue>
<value><![CDATA[]]></value>
<valueID><![CDATA[]]></valueID>
</queuevalue>
</property>
<property name="Subject">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%> is on hold ]]></value>
<valueHTML><![CDATA[PO # <%#XmlVariables.SFFormData.PurchaseOrder.referenceNumber%> is on hold
]]></valueHTML>
<classname><![CDATA[e0612552c4314f07b8796364cccf36bf]]></classname>
</workflowmemovalue>
</property>
<property name="Notes">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[be3a8dfbd2384eb4aa04e5afb21776c0]]></classname>
</workflowmemovalue>
</property>
<property name="From Email Address"><![CDATA[admin@domain.com]]></property>
<property name="Show Custom Document View Window"><![CDATA[Yes]]></property>
<property name="Send Notification Email"><![CDATA[No]]></property>
<property name="Notify if alternate considered"><![CDATA[No]]></property>
<property name="Redirect URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[606bc1696e0b498d8d047ec00f8dc608]]></classname>
</workflowmemovalue>
</property>
<property name="Custom Document View URL">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[http://<%ApplicationPath%>/]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[f0d0ae00b44f45d8a1bb882047a5a484]]></classname>
</workflowmemovalue>
</property>
<property name="Use html template from property"><![CDATA[No]]></property>
<property name="HTML template">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
<classname><![CDATA[ff753c37c4954ef88066eed0d8337046]]></classname>
</workflowmemovalue>
</property>
<property name="AttachReport">
<AttachmentInfo>
<SingleStringValue><![CDATA[]]></SingleStringValue>
<TypeOfAttachment><![CDATA[0]]></TypeOfAttachment>
<MailSendingOption><![CDATA[0]]></MailSendingOption>
<ClassName><![CDATA[69bc1f03f4e14f8fb8071cb196cdeaf8]]></ClassName>
</AttachmentInfo>
</property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>525</left>
<isloop>false</isloop>
<height>65</height>
<top>225</top>
<width>65</width>
</visual-attributes>
</action>
<action name="Set status as Approved" type="UpdateVariableValue" displayname="UpdateVariableValue" description="" looponoutput="">
<properties>
<property name="Set Variable">
<contentupdationfields>
<contentupdationfield name="XmlVariables.SFFormData.PurchaseOrder.status" operator="=" mode="Default" methodName="e17f1e7fe43a493b9337b30ef7223c57"><![CDATA[Approved]]></contentupdationfield>
<classname><![CDATA[0651c1c0e3f94057a821bafaa89945e4]]></classname>
<jstring><![CDATA[[{"RHSMode":"Default",
"LHSColumn":"XmlVariables.SFFormData.PurchaseOrder.status",
"RHSColumn":"Approved",
"OPRColumn":"",
"ColumnExpression":{"DisplayExpressionString":"",
"ActualExprtessionString":"",
"MethodParameterList":"",
"HtmlVerexpString":"",
"ReferenceList":"",
"ReferencedFunctionList":"",
"NodeInfo":""}}]]]></jstring>
</contentupdationfields>
</property>
<property name="StopOnExceptions"><![CDATA[Yes]]></property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>125</left>
<isloop>false</isloop>
<height>65</height>
<top>275</top>
<width>65</width>
</visual-attributes>
</action>
<action name="Set status as Rejected" type="UpdateVariableValue" displayname="UpdateVariableValue" description="" looponoutput="">
<properties>
<property name="Set Variable">
<contentupdationfields>
<contentupdationfield name="XmlVariables.SFFormData.PurchaseOrder.status" operator="=" mode="Default" methodName="94044eb680d64a68af4f1232d2974293"><![CDATA[Rejected]]></contentupdationfield>
<classname><![CDATA[a58c3f8e7be3458bb2c0d6ef11f42f0c]]></classname>
<jstring><![CDATA[[{"RHSMode":"Default",
"LHSColumn":"XmlVariables.SFFormData.PurchaseOrder.status",
"RHSColumn":"Rejected",
"OPRColumn":"",
"ColumnExpression":{"DisplayExpressionString":"",
"ActualExprtessionString":"",
"MethodParameterList":"",
"HtmlVerexpString":"",
"ReferenceList":"",
"ReferencedFunctionList":"",
"NodeInfo":""}}]]]></jstring>
</contentupdationfields>
</property>
<property name="StopOnExceptions"><![CDATA[Yes]]></property>
<property name="RaiseError">
<raiseerror>
<enableraiseerrors><![CDATA[False]]></enableraiseerrors>
<value><![CDATA[]]></value>
<excludederroroutputs><![CDATA[]]></excludederroroutputs>
<includederroroutputs><![CDATA[]]></includederroroutputs>
<stoponerror><![CDATA[True]]></stoponerror>
<stoponexceptionpropertyoverrided><![CDATA[False]]></stoponexceptionpropertyoverrided>
</raiseerror>
</property>
</properties>
<visual-attributes>
<left>275</left>
<isloop>false</isloop>
<height>65</height>
<top>275</top>
<width>65</width>
</visual-attributes>
</action>
<action name="Start" type="Start" displayname="" description="" looponoutput="">
<properties>
<property name="Variables"><![CDATA[]]></property>
<property name="Contents"><![CDATA[]]></property>
<property name="XmlVariables">
<XmlVariables>
<XmlVariable>
<Name><![CDATA[SFFormData]]></Name>
<Description><![CDATA[Generated by Skelta Forms]]></Description>
<StorageType><![CDATA[XmlDocument]]></StorageType>
<Scope><![CDATA[global]]></Scope>
<Schema><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="SKRootDefinition">
<xs:complexType>
<xs:sequence>
<xs:element name="referenceNumber" type="xs:string" />
<xs:element name="dateOrdered" type="xs:date" />
<xs:element name="dateRequired" type="xs:date" />
<xs:element name="priority" type="xs:string" />
<xs:element name="status" type="xs:string" />
<xs:element maxOccurs="unbounded" name="Items">
<xs:complexType>
<xs:sequence>
<xs:element name="itemNo" type="xs:string" />
<xs:element name="partNo" type="xs:string" />
<xs:element name="description" type="xs:string" />
<xs:element name="unitPrice" type="xs:double" />
<xs:element name="quantity" type="xs:double" />
<xs:element name="itemTotal" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="subtotal" type="xs:string" />
<xs:element name="taxes" type="xs:string" />
<xs:element name="discount" type="xs:double" />
<xs:element name="total" type="xs:string" />
<xs:element maxOccurs="unbounded" name="approvalDetails">
<xs:complexType>
<xs:sequence>
<xs:element name="comments" type="xs:string" />
<xs:element name="approver" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>]]></Schema>
<Xsl><![CDATA[]]></Xsl>
<Storage>
<InternalStorage><![CDATA[variables]]></InternalStorage>
</Storage>
</XmlVariable>
<XmlVariable>
<Name><![CDATA[SKEventData]]></Name>
<Description><![CDATA[]]></Description>
<StorageType><![CDATA[XmlDocument]]></StorageType>
<Scope><![CDATA[global]]></Scope>
<Schema><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<xsd:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="SKEventData">
<xs:complexType>
<xs:sequence>
<xs:element name="EventProperties" />
<xs:element name="EventType" />
<xs:element name="EventProvider" />
<xs:element name="EventDateTimeUTC" type="xs:string" />
<xs:element name="EventDateTime" type="xs:string" />
<xs:element name="UserId" />
<xs:element name="UserName" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xsd:schema>]]></Schema>
<Xsl><![CDATA[]]></Xsl>
<Storage>
<InternalStorage><![CDATA[variables]]></InternalStorage>
</Storage>
</XmlVariable>
<XmlVariable>
<Name><![CDATA[ApprovedPos]]></Name>
<Description><![CDATA[]]></Description>
<StorageType><![CDATA[XmlSkeltaList]]></StorageType>
<Scope><![CDATA[global]]></Scope>
<Schema><![CDATA[<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ApprovedPurchaseOrders">
<xs:complexType>
<xs:sequence>
<xs:element name="referenceNumber" type="xs:string" />
<xs:element name="dateOrdered" type="xs:dateTime" />
<xs:element name="dateRequired" type="xs:dateTime" />
<xs:element name="priority" type="xs:string" />
<xs:element name="status" type="xs:string" />
<xs:element maxOccurs="unbounded" name="items">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element name="itemNo" type="xs:string" />
<xs:element name="partNo" type="xs:string" />
<xs:element name="description" type="xs:string" />
<xs:element name="unitPrice" type="xs:decimal" />
<xs:element name="quantity" type="xs:double" />
<xs:element name="itemTotal" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="subtotal" type="xs:decimal" />
<xs:element name="taxes" type="xs:decimal" />
<xs:element name="discount" type="xs:decimal" />
<xs:element name="total" type="xs:decimal" />
<xs:element maxOccurs="unbounded" name="approvalDetails">
<xs:complexType>
<xs:sequence>
<xs:element name="comments" type="xs:string" />
<xs:element name="approver" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="System_x003A_Internal">
<xs:complexType>
<xs:sequence>
<xs:element name="SaveAs">
<xs:complexType>
<xs:sequence />
<xs:attribute name="Published" type="xs:boolean" />
<xs:attribute name="NextVersionAsDraft" type="xs:boolean" />
<xs:attribute name="NextVersionAsPublished" type="xs:boolean" />
<xs:attribute name="NextMajorVersionAsDraft" type="xs:boolean" />
<xs:attribute name="NextMajorVersionAsPublished" type="xs:boolean" />
<xs:attribute name="NextMinorVersionAsDraft" type="xs:boolean" />
<xs:attribute name="NextMinorVersionAsPublished" type="xs:boolean" />
<xs:attribute name="SpecificVersionAsDraft" type="xs:string" />
<xs:attribute name="SpecificVersionAsPublished" type="xs:string" />
<xs:attribute name="AsFolder" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>]]></Schema>
<Xsl><![CDATA[]]></Xsl>
<Storage>
<ListName><![CDATA[Approved Purchase Orders]]></ListName>
<ListId><![CDATA[06706398-376e-412a-a792-0ebe1a4a64a2]]></ListId>
<FolderName><![CDATA[]]></FolderName>
<FolderId><![CDATA[00000000-0000-0000-0000-000000000000]]></FolderId>
<ListItemScope><![CDATA[New]]></ListItemScope>
<ListItemId><![CDATA[00000000-0000-0000-0000-000000000000]]></ListItemId>
<XmlTemplate><![CDATA[<?xml version="1.0"?><ApprovedPurchaseOrders><referenceNumber /><dateOrdered /><dateRequired /><priority /><status /><items><item><itemNo /><partNo /><description /><unitPrice /><quantity /><itemTotal /></item></items><subtotal /><taxes /><discount /><total /><approvalDetails><comments /><approver /></approvalDetails><System_x003A_Internal><SaveAs><Published /><NextVersionAsDraft /><NextVersionAsPublished /><NextMajorVersionAsDraft /><NextMajorVersionAsPublished /><NextMinorVersionAsDraft /><NextMinorVersionAsPublished /><SpecificVersionAsDraft /><SpecificVersionAsPublished /><AsFolder /></SaveAs></System_x003A_Internal></ApprovedPurchaseOrders>]]></XmlTemplate>
<ListQuery><![CDATA[]]></ListQuery>
<ListItemVersion><![CDATA[]]></ListItemVersion>
</Storage>
</XmlVariable>
</XmlVariables>
</property>
<property name="ExecutionView"><![CDATA[]]></property>
<property name="SOAObjects">
<SOAObjects />
</property>
<property name="Initialize Variable(s)">
<contentupdationfields>
<classname><![CDATA[e81fc9ff018b4531afdf65ae2ded948e]]></classname>
<jstring><![CDATA[]]></jstring>
</contentupdationfields>
</property>
<property name="Raise Exception if Completion Maker Output is not linked?"><![CDATA[Default [Backward Compatible]]]></property>
<property name="ExceptionTemplate">
<workflowmemovalue>
<height><![CDATA[350]]></height>
<width><![CDATA[650]]></width>
<value><![CDATA[]]></value>
<valueHTML><![CDATA[]]></valueHTML>
</workflowmemovalue>
</property>
</properties>
<visual-attributes>
<left>100</left>
<isloop>false</isloop>
<height>65</height>
<top>75</top>
<width>65</width>
</visual-attributes>
</action>
<link from="Start" to="Approval of PO" condition="" description="" name="Link0">
<visual-attributes>
<sourceport>r</sourceport>
<sourceportside>dynamic</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>r</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>165</sourceportfinalx>
<sourceportfinaly>108</sourceportfinaly>
<targetport>l</targetport>
<targetportside>dynamic</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>l</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>275</targetportfinalx>
<targetportfinaly>108</targetportfinaly>
<serializedpath>Link0;false;2;220;108;Link0,right,0,187,108,165,108,false,false,NaN,NaN,!,,Link0_0,;Link0,,0,187,108,187,108,false,false,NaN,NaN,!,,Link0_1,;Link0,right,0,253,108,187,108,false,true,220,108,!,,Link0_2,;Link0,,0,253,108,253,108,false,false,NaN,NaN,!,,Link0_3,;Link0,right,0,275,108,253,108,true,false,NaN,NaN,!,,Link0_4,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Approval of PO" to="Set status as Rejected" condition="Rejected" description="" name="Link1">
<visual-attributes>
<sourceport>b</sourceport>
<sourceportside>b</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>b</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>308</sourceportfinalx>
<sourceportfinaly>140</sourceportfinaly>
<targetport>t</targetport>
<targetportside>t</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>t</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>308</targetportfinalx>
<targetportfinaly>275</targetportfinaly>
<serializedpath>Link1;false;2;308;207;Link1,down,0,308,167,308,140,false,false,NaN,NaN,!,,Link1_0,;Link1,,0,308,167,308,167,false,false,NaN,NaN,!,,Link1_1,;Link1,down,0,308,248,308,167,false,true,308,207,!,,Link1_2,;Link1,,0,308,248,308,248,false,false,NaN,NaN,!,,Link1_3,;Link1,down,0,308,275,308,248,true,false,NaN,NaN,!,,Link1_4,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Approval of PO" to="Set status as Approved" condition="Approved" description="" name="Link2">
<visual-attributes>
<sourceport>bl</sourceport>
<sourceportside>bl</sourceportside>
<sourceportindex>1</sourceportindex>
<sourceportfinalside>bl</sourceportfinalside>
<sourceportfinalindex>1</sourceportfinalindex>
<sourceportfinalx>288</sourceportfinalx>
<sourceportfinaly>140</sourceportfinaly>
<targetport>t</targetport>
<targetportside>dynamic</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>t</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>158</targetportfinalx>
<targetportfinaly>275</targetportfinaly>
<serializedpath>Link2;true;3;180;164;Link2,down,0,288,144,288,140,false,false,288,140,!,,Link2_0,;Link2,,0,288,144,288,144,false,false,NaN,NaN,!,,Link2_1,;Link2,down,0,288,164,288,144,false,false,0,0,!,,Link2_2,;Link2,left,0,159,164,288,164,false,true,223,164,!,,Link2_3,;Link2,down,0,159,260,159,164,false,true,159,212,!,,Link2_4,;Link2,left,0,158,260,159,260,false,false,0,0,!,,Link2_5,;Link2,down,0,158,272,158,260,false,false,0,0,!,,Link2_6,;Link2,,0,158,272,158,272,false,false,NaN,NaN,!,,Link2_7,;Link2,down,0,158,275,158,272,true,false,158,275,!,,Link2_8,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Set status as Rejected" to="Information to submitted user" condition="Updated" description="" name="Link3">
<visual-attributes>
<sourceport>b</sourceport>
<sourceportside>dynamic</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>b</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>308</sourceportfinalx>
<sourceportfinaly>340</sourceportfinaly>
<targetport>t</targetport>
<targetportside>t</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>t</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>308</targetportfinalx>
<targetportfinaly>425</targetportfinaly>
<serializedpath>Link3;false;2;308;382;Link3,down,0,308,357,308,340,false,false,NaN,NaN,!,,Link3_0,;Link3,,0,308,357,308,357,false,false,NaN,NaN,!,,Link3_1,;Link3,down,0,308,408,308,357,false,true,308,382,!,,Link3_2,;Link3,,0,308,408,308,408,false,false,NaN,NaN,!,,Link3_3,;Link3,down,0,308,425,308,408,true,false,NaN,NaN,!,,Link3_4,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Set status as Approved" to="Information to submitted user" condition="Updated" description="" name="Link4">
<visual-attributes>
<sourceport>b</sourceport>
<sourceportside>dynamic</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>b</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>158</sourceportfinalx>
<sourceportfinaly>340</sourceportfinaly>
<targetport>l</targetport>
<targetportside>l</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>l</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>275</targetportfinalx>
<targetportfinaly>458</targetportfinaly>
<serializedpath>Link4;true;2;158;457;Link4,down,0,158,363,158,340,false,false,NaN,NaN,!,,Link4_0,;Link4,,0,158,363,158,363,false,false,NaN,NaN,!,,Link4_1,;Link4,down,0,158,458,158,363,false,true,158,410,!,,Link4_2,;Link4,right,0,252,458,158,458,false,true,205,458,!,,Link4_3,;Link4,,0,252,458,252,458,false,false,NaN,NaN,!,,Link4_4,;Link4,right,0,275,458,252,458,true,false,NaN,NaN,!,,Link4_5,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Approval of PO" to="PO Kept On Hold" condition="Keep On Hold" description="" name="Link5">
<visual-attributes>
<sourceport>rb</sourceport>
<sourceportside>rb</sourceportside>
<sourceportindex>1</sourceportindex>
<sourceportfinalside>rb</sourceportfinalside>
<sourceportfinalindex>1</sourceportfinalindex>
<sourceportfinalx>340</sourceportfinalx>
<sourceportfinaly>128</sourceportfinaly>
<targetport>tl</targetport>
<targetportside>tl</targetportside>
<targetportindex>1</targetportindex>
<targetportfinalside>tl</targetportfinalside>
<targetportfinalindex>1</targetportfinalindex>
<targetportfinalx>538</targetportfinalx>
<targetportfinaly>225</targetportfinaly>
<serializedpath>Link5;false;4;405;210;Link5,right,0,342,128,340,128,false,false,NaN,NaN,!,,Link5_0,;Link5,,0,342,128,342,128,false,false,NaN,NaN,!,,Link5_1,;Link5,right,0,350,128,342,128,false,false,0,0,!,,Link5_2,;Link5,down,0,350,210,350,128,false,true,350,169,!,,Link5_3,;Link5,right,0,538,210,350,210,false,true,444,210,!,,Link5_4,;Link5,down,0,538,222,538,210,false,false,0,0,!,,Link5_5,;Link5,,0,538,222,538,222,false,false,NaN,NaN,!,,Link5_6,;Link5,down,0,538,225,538,222,true,false,NaN,NaN,!,,Link5_7,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Approval of PO" to="Apply Corrections" condition="Corrections Required" description="" name="Link6">
<visual-attributes>
<sourceport>r</sourceport>
<sourceportside>dynamic</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>r</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>340</sourceportfinalx>
<sourceportfinaly>108</sourceportfinaly>
<targetport>l</targetport>
<targetportside>dynamic</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>l</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>500</targetportfinalx>
<targetportfinaly>108</targetportfinaly>
<serializedpath>Link6;false;2;420;108;Link6,right,0,372,108,340,108,false,false,NaN,NaN,!,,Link6_0,;Link6,,0,372,108,372,108,false,false,NaN,NaN,!,,Link6_1,;Link6,right,0,468,108,372,108,false,true,420,108,!,,Link6_2,;Link6,,0,468,108,468,108,false,false,NaN,NaN,!,,Link6_3,;Link6,right,0,500,108,468,108,true,false,NaN,NaN,!,,Link6_4,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Apply Corrections" to="Approval of PO" condition="Action Completed" description="" name="Link7">
<visual-attributes>
<sourceport>t</sourceport>
<sourceportside>t</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>t</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>533</sourceportfinalx>
<sourceportfinaly>75</sourceportfinaly>
<targetport>t</targetport>
<targetportside>t</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>t</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>308</targetportfinalx>
<targetportfinaly>75</targetportfinaly>
<serializedpath>Link7;true;0;421;32;Link7,up,0,533,67,533,75,false,false,NaN,NaN,!,,Link7_0,;Link7,,0,533,67,533,67,false,false,NaN,NaN,!,,Link7_1,;Link7,up,0,533,32,533,67,false,true,533,49,!,,Link7_2,;Link7,left,0,360,32,533,32,false,true,446,32,!,,Link7_3,;Link7,down,0,360,33,360,32,false,false,0,0,!,,Link7_4,;Link7,left,0,308,33,360,33,false,true,334,33,!,,Link7_5,;Link7,down,0,308,67,308,33,false,true,308,50,!,,Link7_6,;Link7,,0,308,67,308,67,false,false,NaN,NaN,!,,Link7_7,;Link7,down,0,308,75,308,67,true,false,NaN,NaN,!,,Link7_8,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
<link from="Set status as Approved" to="Add to Approved Purchase Orders list" condition="Updated" description="" name="Link8">
<visual-attributes>
<sourceport>l</sourceport>
<sourceportside>l</sourceportside>
<sourceportindex>0</sourceportindex>
<sourceportfinalside>l</sourceportfinalside>
<sourceportfinalindex>0</sourceportfinalindex>
<sourceportfinalx>125</sourceportfinalx>
<sourceportfinaly>308</sourceportfinaly>
<targetport>t</targetport>
<targetportside>t</targetportside>
<targetportindex>0</targetportindex>
<targetportfinalside>t</targetportfinalside>
<targetportfinalindex>0</targetportfinalindex>
<targetportfinalx>58</targetportfinalx>
<targetportfinaly>425</targetportfinaly>
<serializedpath>Link8;true;3;58;333;Link8,left,0,112,308,125,308,false,false,NaN,NaN,!,,Link8_0,;Link8,,0,112,308,112,308,false,false,NaN,NaN,!,,Link8_1,;Link8,left,0,58,308,112,308,false,true,85,308,!,,Link8_2,;Link8,down,0,58,402,58,308,false,true,58,355,!,,Link8_3,;Link8,,0,58,402,58,402,false,false,NaN,NaN,!,,Link8_4,;Link8,down,0,58,425,58,402,true,false,NaN,NaN,!,,Link8_5,</serializedpath>
<thickness>1</thickness>
<color>#000000</color>
<linetype />
<islocked>false</islocked>
</visual-attributes>
</link>
</workflow>
The Workflow looks as follows:

-
Publish the Workflow.
-
-
Create Purchase Order Approval Form for the approver.
-
In the Enterprise Console, click the Menu button, and then click Forms.
The Forms page appears.
-
Create a new Form named Purchase Order Approval Form which will be used for the approvals.
-
Import the form definition from 'Purchase Order Approval_Form.xml' using the Import menu option in Forms Designer, or use the following xml for importing and publish the form.
<BaseForm SaveButtonText="@@Finish@@" FormTitle="Purchase Order Approval Form" ShowSubmitButton="False" ProductVersion="1" BuildVersion="40107100" Id="NF1" FormMode="NextGenMode" XmlNodeBoundTo="PurchaseOrder" Name="Purchase Order Requisition Form" Description="Purchase Order Requisition" xmlns="clr-namespace:Skelta.Forms.Core.Controls;assembly:Skelta.Forms.Core" xmlns:L="clr-namespace:System.Collections.Generic;assembly:mscorlib" xmlns:C="clr-namespace:Skelta.Forms.Core.Classes;assembly:Skelta.Forms.Core"><ScriptCode><![CDATA[]]></ScriptCode><Controls><TextInput XmlNodeBoundTo="referenceNumber" Name="Reference Number" Id="T1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><DateInput XmlNodeBoundTo="dateOrdered" Name="Ordered Date" Id="D1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></DateInput><DateInput XmlNodeBoundTo="dateRequired" Name="Required Date" Id="D2"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></DateInput><DropDownChoice DefaultText="High" XmlNodeBoundTo="priority" Enabled="False" Name="Priority" Id="D3"><Options><C:ColoredDictionary Key="High" Value="High" ForeColor="#d33333" BackColor="" /><C:ColoredDictionary Key="Medium" Value="Medium" ForeColor="#3427a9" BackColor="" /><C:ColoredDictionary Key="Low" Value="Low" ForeColor="" BackColor="" /></Options><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></DropDownChoice><TextInput XmlNodeBoundTo="status" Name="Status" Id="T2" Visible="False"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P1" FormMode="NextGenMode" XmlNodeBoundTo="items" Name="Order details"><Controls><BaseForm FormTitle="" ProductVersion="" BuildVersion="" Id="B1" FormMode="NextGenMode" XmlNodeBoundTo="item" Name="Items" ViewMode="Grid" AddPosition="Bottom" DefaultRows="1"><Controls><TextInput XmlNodeBoundTo="itemNo" Name="Item No" Id="T5"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><TextInput XmlNodeBoundTo="partNo" Name="Part No" Id="T4"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><TextInput XmlNodeBoundTo="description" Name="Description" Id="T3"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><Number XmlNodeBoundTo="unitPrice" Name="Unit Price" Id="N1"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><Number XmlNodeBoundTo="quantity" Name="Quantity" Id="N2"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><Number XmlNodeBoundTo="itemTotal" Name="Item Total" Id="T6"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript><PropertyExpressions><Property Name="Value"><Code><![CDATA[qty = control.findById(/*Quantity*/"N2").value;
price = control.findById(/*Unit Price*/"N1").value;
return parseInt(qty)*parseInt(price);]]></Code></Property></PropertyExpressions></Number></Controls><OnRowAddedScript><![CDATA[]]></OnRowAddedScript><OnRowDeletedScript><![CDATA[]]></OnRowDeletedScript></BaseForm></Controls></PanelForm><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P2" FormMode="NextGenMode" XmlNodeBoundTo="" Name="Estimation Details"><Controls><Number EnableValueAutoUpdate="True" XmlNodeBoundTo="subtotal" Name="Sub Total" Id="T7"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[Taxcontrol = control.findById("T8");
taxVal = (currentValue*12)/100;
Taxcontrol.value = taxVal;
DiscountControl = control.findById("N3");
discountVal = (currentValue*1)/100;
DiscountControl.value=discountVal;
TotalControl = control.findById("T9");
TotalControl.value = parseInt(currentValue)+parseInt(taxVal)-parseInt(discountVal);]]></OnDataChangedScript><PropertyExpressions><Property Name="Value"><Code><![CDATA[return parseFloat(control.parentForm.sumById("T6"));]]></Code></Property></PropertyExpressions></Number><TextInput XmlNodeBoundTo="taxes" Name="Tax" Id="T8"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><Number EnableValueAutoUpdate="True" XmlNodeBoundTo="discount" Name="Discount" Id="N3"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><TextInput XmlNodeBoundTo="total" Name="Total" Id="T9"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput></Controls></PanelForm><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P3" FormMode="JCSMode" XmlNodeBoundTo="approvalDetails" Name="Approval details"><Controls><TextInput IsMandatory="True" XmlNodeBoundTo="comments" Name="Comments" Id="T10"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><UserLookUp FilterExpressions="{x:Null}" FilterDependencyIds="{x:Null}" IsFilterExpressionSetForProperty="False" XmlNodeBoundTo="approver" Enabled="False" Name="Approver" Id="U1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript><PropertyExpressions><Property Name="Value"><Code><![CDATA[return SFU.getVirtualActorId();]]></Code></Property></PropertyExpressions></UserLookUp></Controls><ScriptCode><![CDATA[]]></ScriptCode></PanelForm><FormButton ShowAsFormLevelButton="True" ButtonText="Apply Corrections" ButtonAlignment="Left" XmlNodeBoundTo="" LabelPosition="Left" Id="F1"><ClickScript><![CDATA[if(control.findById("T10").value === "")
{
SFU.showAlert("You need to enter comments");
}
else
{
control.submitForm(event);
}]]></ClickScript></FormButton><FormButton ShowAsFormLevelButton="True" ButtonText="Keep On Hold" XmlNodeBoundTo="" Id="F2"><ClickScript><![CDATA[]]></ClickScript></FormButton><FormButton ShowAsFormLevelButton="True" ButtonText="Reject" XmlNodeBoundTo="" Id="F3"><ClickScript><![CDATA[if(control.findById("T10").value === "")
{
SFU.showAlert("You need to enter reason for rejection in comments");
}
else
{
control.submitForm(event);
}]]></ClickScript></FormButton><FormButton ShowAsFormLevelButton="True" ButtonText="Approve" XmlNodeBoundTo="" Id="F4"><ClickScript><![CDATA[]]></ClickScript></FormButton></Controls></BaseForm>
-
-
Create Purchase Order Apply Corrections Form for the requestors to make corrections based on the comments provided by approver.
-
In the Enterprise Console, click the Menu button, and then click Forms.
The Forms page appears.
-
Create a new Form named Purchase Order Apply Corrections, which will be used for the requester for making corrections suggested by approver.
-
Import the Form definition from 'Purchase Order Apply Corrections_Form.xml' using the Import menu option in Forms Designer or use the following xml file for importing.
<BaseForm SaveButtonText="@@Finish@@" FormTitle="" ProductVersion="1" BuildVersion="40107100" Id="NF1" FormMode="NextGenMode" XmlNodeBoundTo="PurchaseOrder" Name="Purchase Order Apply Corrections" Description="Purchase Order Apply Corrections" xmlns="clr-namespace:Skelta.Forms.Core.Controls;assembly:Skelta.Forms.Core" xmlns:L="clr-namespace:System.Collections.Generic;assembly:mscorlib" xmlns:C="clr-namespace:Skelta.Forms.Core.Classes;assembly:Skelta.Forms.Core"><ScriptCode><![CDATA[]]></ScriptCode><Controls><TextInput XmlNodeBoundTo="referenceNumber" ReadOnly="True" Name="Reference Number" Id="T1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><DateInput XmlNodeBoundTo="dateOrdered" Name="Ordered Date" Id="D1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></DateInput><DateInput XmlNodeBoundTo="dateRequired" Name="Required Date" Id="D2"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></DateInput><RadioButtonGroup XmlNodeBoundTo="priority" Name="Priority" Id="R1"><Options><C:ColoredDictionary Key="High" Value="High" ForeColor="#d61717" BackColor="" /><C:ColoredDictionary Key="Medium" Value="Medium" ForeColor="#2d649f" BackColor="" /><C:ColoredDictionary Key="Low" Value="Low" ForeColor="" BackColor="" /></Options><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></RadioButtonGroup><TextInput XmlNodeBoundTo="status" ReadOnly="True" Name="Status" Id="T2"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P1" FormMode="NextGenMode" XmlNodeBoundTo="items" Name="Order details"><Controls><BaseForm ViewMode="Grid" FormTitle="" ProductVersion="" BuildVersion="" AddPosition="Bottom" Id="B1" DefaultRows="1" FormMode="NextGenMode" XmlNodeBoundTo="item" Name="Items"><Controls><TextInput XmlNodeBoundTo="itemNo" Name="Item No" Id="T3"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><TextInput XmlNodeBoundTo="partNo" Name="Part No" Id="T4"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><TextInput XmlNodeBoundTo="description" Name="Description" Id="T5"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><Number MaxValue="999999999999999" MinValue="-999999999999999" XmlNodeBoundTo="unitPrice" Name="Unit Price" Id="N1"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><Number MaxValue="999999999999999" MinValue="-999999999999999" XmlNodeBoundTo="quantity" Name="Quantity" Id="N2"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><Number XmlNodeBoundTo="itemTotal" Name="Item Total" Id="T6"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript><PropertyExpressions><Property Name="Value"><Code><![CDATA[qty = control.findById(/*Quantity*/"N2").value;
price = control.findById(/*Unit Price*/"N1").value;
return parseInt(qty)*parseInt(price);]]></Code></Property></PropertyExpressions></Number></Controls><OnRowAddedScript><![CDATA[]]></OnRowAddedScript><OnRowDeletedScript><![CDATA[]]></OnRowDeletedScript></BaseForm></Controls></PanelForm><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P2" FormMode="NextGenMode" XmlNodeBoundTo="" Name="Estimation Details "><Controls><Number XmlNodeBoundTo="subtotal" Name="Sub Total" Id="T7"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[Taxcontrol = control.findById("T8");
taxVal = (currentValue*12)/100;
Taxcontrol.value = taxVal;
DiscountControl = control.findById("N3");
discountVal = (currentValue*1)/100;
DiscountControl.value=discountVal;
TotalControl = control.findById("T9");
TotalControl.value = parseInt(currentValue)+parseInt(taxVal)-parseInt(discountVal);]]></OnDataChangedScript><PropertyExpressions><Property Name="Value"><Code><![CDATA[return parseFloat(control.parentForm.sumById("T6"));]]></Code></Property></PropertyExpressions></Number><TextInput XmlNodeBoundTo="taxes" Name="Tax" Id="T8"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><Number MaxValue="999999999999999" MinValue="-999999999999999" XmlNodeBoundTo="discount" Name="Discount" Id="N3"><DecimalDigits><![CDATA[0]]></DecimalDigits><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></Number><TextInput XmlNodeBoundTo="total" Name="Total" Id="T9"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P3" FormMode="NextGenMode" XmlNodeBoundTo="approvalDetails" Name="Approval Details"><Controls><TextInput XmlNodeBoundTo="comments" Name="Comments" Id="T10"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></TextInput><UserLookUp FilterExpressions="{x:Null}" FilterDependencyIds="{x:Null}" IsFilterExpressionSetForProperty="False" XmlNodeBoundTo="approver" Name="Reviewer" Id="U1"><OnDataChangedScript><![CDATA[]]></OnDataChangedScript></UserLookUp></Controls></PanelForm></Controls></PanelForm></Controls></BaseForm>
-
Publish the form.
-
-
Create Approved Purchase Orders list to store the approved purchase orders.
-
In the Enterprise Console, click the Menu button, click Tools, and then click Manage List.
The Manage List page appears.
-
Create a new List named Approved Purchase Orders.
The List Designer appears.
-
Import the list definition from Approved Purchase Orders_List.xml using Import menu option in List Designer or use the following XML:
<ListMainForm IsTableVersioned="False" DefaultField="Reference Number" UniqueField="" EnableRecordIds="True" LockEnabled="False" OnEditCreateNewVersion="False" OnEditCreateNewVersionforVG="False" UniqueTitle="False" AllowChildItems="True" OldTableName="" TableName="SKEListItemDataNV" TableId="6e370043-9f0d-43e6-ab45-5bab735c7a40" FormTitle="" ProductVersion="" BuildVersion="" Id="_sys_approved purchase orders_list_skeltadynamiclist" FormMode="JCSMode" XmlNodeBoundTo="ApprovedPurchaseOrders" Name="Approved Purchase Orders" Description="Approved Purchase Orders" xmlns="clr-namespace:Skelta.Forms.Core.Controls;assembly:Skelta.Forms.Core" xmlns:R="clr-namespace:System;assembly:mscorlib" xmlns:x="http://uri.skelta.com/default/serializer"><Controls><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="Title" GridDisplayWidth="100" DisplayInLookup="True" XmlNodeBoundTo="referenceNumber" Name="Reference Number" Id="_sys_ListForms_Titled05a335c720345699ba2f0b5c154c513" /><ListDateDataItem DisplayInGridAs="{x:Null}" BoundToTableField="datetime1" XmlNodeBoundTo="dateOrdered" Name="Date Ordered" Id="L1"><MaxDate><![CDATA[12/31/2099 23:59:59]]></MaxDate><MinDate><![CDATA[01/01/1901 00:00:00]]></MinDate><DateFormat><![CDATA[]]></DateFormat><Culture><![CDATA[]]></Culture><Interval><![CDATA[01:00:00]]></Interval><TimeFormat><![CDATA[]]></TimeFormat></ListDateDataItem><ListDateDataItem DisplayInGridAs="{x:Null}" BoundToTableField="datetime2" XmlNodeBoundTo="dateRequired" Name="Date Required" Id="L2"><MaxDate><![CDATA[12/31/2099 23:59:59]]></MaxDate><MinDate><![CDATA[01/01/1901 00:00:00]]></MinDate><DateFormat><![CDATA[]]></DateFormat><Culture><![CDATA[]]></Culture><Interval><![CDATA[01:00:00]]></Interval></ListDateDataItem><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="nvarchar1" XmlNodeBoundTo="priority" Name="Priority" Id="L3" /><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="nvarchar2" XmlNodeBoundTo="status" Name="Status" Id="L4" /><ListTableForm OldTableName="" IsTableVersioned="True" TableName="SKEListItemDataNV" TableId="d6c4c0cf-0781-4172-b96d-705e8a842553" FormTitle="" ProductVersion="" BuildVersion="" Id="_sys_ApprovedPurchaseOrders_9c80ff1f2eca4427823aa01f471f4953" FormMode="JCSMode" XmlNodeBoundTo="items/item" Name="Items"><Controls><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="nvarchar1" XmlNodeBoundTo="itemNo" Name="Item No" Id="L6" /><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="nvarchar2" XmlNodeBoundTo="partNo" Name="Part No" Id="L7" /><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="nvarchar3" XmlNodeBoundTo="description" Name="Description" Id="L8" /><ListDecimalDataItem DisplayInGridAs="{x:Null}" BoundToTableField="decimal1" XmlNodeBoundTo="unitPrice" Name="Unit Price" Id="L9" /><ListIntDataItem DisplayInGridAs="{x:Null}" BoundToTableField="int1" XmlNodeBoundTo="quantity" Name="Quantity" Id="L10" /><ListDecimalDataItem DisplayInGridAs="{x:Null}" BoundToTableField="decimal2" XmlNodeBoundTo="itemTotal" Name="Item Total" Id="L11" /></Controls></ListTableForm><ListDecimalDataItem DisplayInGridAs="{x:Null}" BoundToTableField="decimal1" XmlNodeBoundTo="subtotal" Name="Sub Total" Id="L12" /><ListDecimalDataItem DisplayInGridAs="{x:Null}" BoundToTableField="decimal2" XmlNodeBoundTo="taxes" Name="Taxes" Id="L13" /><ListDecimalDataItem DisplayInGridAs="{x:Null}" BoundToTableField="decimal3" XmlNodeBoundTo="discount" Name="Discount" Id="L14" /><ListDecimalDataItem DisplayInGridAs="{x:Null}" BoundToTableField="decimal4" XmlNodeBoundTo="total" Name="Total" Id="L15" /><ListTableForm OldTableName="" IsTableVersioned="True" TableName="SKEListItemDataNV" TableId="f2bb005d-9f99-42f1-b0b6-2a071c6bd15f" FormTitle="" ProductVersion="" BuildVersion="" Id="_sys_ApprovedPurchaseOrders_c3054ad789a349e680fa6da0372f12b7" FormMode="JCSMode" XmlNodeBoundTo="approvalDetails" Name="Approval Details"><Controls><ListTextDataItem DisplayInGridAs="{x:Null}" BoundToTableField="nvarchar1" XmlNodeBoundTo="comments" Name="Comments" Id="L17" /><ListUserLookUp ShowDefaultUser="True" ForeignKeyQuery="" MappedParentControl="" MappedParentControlName="" DisplayInGridAs="approver100" BoundToTableField="uniqueidentifier1" XmlNodeBoundTo="approver" Name="Approver" Id="L18"><BoundToTableFieldType><x:type typename="System.Guid" /></BoundToTableFieldType></ListUserLookUp></Controls></ListTableForm></Controls></ListMainForm>
-
On submitting, a default Form for the List will be generated.
-
Say Yes to edit the generated (default) Form .
To change the look and feel of this Default Form, import the Approved Purchase Orders_Form.xml from Import menu option in Forms Designer or use this XML:
<BaseForm SaveButtonText="@@Finish@@" FormTitle="" ProductVersion="1" BuildVersion="40107100" Id="NF1" FormMode="NextGenMode" XmlNodeBoundTo="ApprovedPurchaseOrders" Name="Approved Purchase Orders" xmlns="clr-namespace:Skelta.Forms.Core.Controls;assembly:Skelta.Forms.Core" xmlns:R="clr-namespace:System;assembly:mscorlib" xmlns:x="http://uri.skelta.com/default/serializer"><ScriptCode><![CDATA[]]></ScriptCode><Controls><TextInput MaxLength="250" DisplayInLookup="True" XmlNodeBoundTo="referenceNumber" Name="Reference Number" Id="_sys_ListForms_Titled05a335c720345699ba2f0b5c154c513" /><DateTimeInput Interval="01:00:00" BoundToTableField="datetime1" GridDisplayWidth="20" DisplayInLookup="True" XmlNodeBoundTo="dateOrdered" Name="Date Ordered" Id="L1"><BoundToTableFieldType><x:type typename="System.DateTime" /></BoundToTableFieldType></DateTimeInput><DateTimeInput Interval="01:00:00" BoundToTableField="datetime2" GridDisplayWidth="20" DisplayInLookup="True" XmlNodeBoundTo="dateRequired" Name="Date Required" Id="L2"><BoundToTableFieldType><x:type typename="System.DateTime" /></BoundToTableFieldType></DateTimeInput><TextInput MaxLength="255" DisplayInLookup="True" XmlNodeBoundTo="priority" Name="Priority" Id="L3" /><TextInput MaxLength="255" DisplayInLookup="True" XmlNodeBoundTo="status" Name="Status" Id="L4" /><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="P1" FormMode="NextGenMode" XmlNodeBoundTo="items" Name="Order Details"><Controls><BaseForm FormTitle="" ProductVersion="" BuildVersion="" Id="_sys_ApprovedPurchaseOrders_9c80ff1f2eca4427823aa01f471f4953" FormMode="JCSMode" XmlNodeBoundTo="item" Name="Items" ViewMode="Grid" IsTableVersioned="True" AddPosition="Bottom"><Controls><TextInput MaxLength="255" DisplayInLookup="True" XmlNodeBoundTo="itemNo" Name="Item No" Id="L6" /><TextInput MaxLength="255" DisplayInLookup="True" XmlNodeBoundTo="partNo" Name="Part No" Id="L7" /><TextInput MaxLength="255" DisplayInLookup="True" XmlNodeBoundTo="description" Name="Description" Id="L8" /><Number MaxValue="9999999999999998" MinValue="-9999999999999998" BoundToTableField="decimal1" DisplayInLookup="True" XmlNodeBoundTo="unitPrice" Name="Unit Price" Id="L9"><DecimalDigits><![CDATA[2]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Decimal" /></BoundToTableFieldType></Number><Number MaxValue="2147483647" MinValue="-2147483648" BoundToTableField="int1" DisplayInLookup="True" XmlNodeBoundTo="quantity" Name="Quantity" Id="L10"><DecimalDigits><![CDATA[0]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Int32" /></BoundToTableFieldType></Number><Number MaxValue="9999999999999998" MinValue="-9999999999999998" BoundToTableField="decimal2" DisplayInLookup="True" XmlNodeBoundTo="itemTotal" Name="Item Total" Id="L11"><DecimalDigits><![CDATA[2]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Decimal" /></BoundToTableFieldType></Number></Controls><OnRowAddedScript><![CDATA[]]></OnRowAddedScript><OnRowDeletedScript><![CDATA[]]></OnRowDeletedScript></BaseForm></Controls></PanelForm><Number MaxValue="9999999999999998" MinValue="-9999999999999998" BoundToTableField="decimal1" DisplayInLookup="True" XmlNodeBoundTo="subtotal" Name="Sub Total" Id="L12"><DecimalDigits><![CDATA[2]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Decimal" /></BoundToTableFieldType></Number><Number MaxValue="9999999999999998" MinValue="-9999999999999998" BoundToTableField="decimal2" DisplayInLookup="True" XmlNodeBoundTo="taxes" Name="Taxes" Id="L13"><DecimalDigits><![CDATA[2]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Decimal" /></BoundToTableFieldType></Number><Number MaxValue="9999999999999998" MinValue="-9999999999999998" BoundToTableField="decimal3" DisplayInLookup="True" XmlNodeBoundTo="discount" Name="Discount" Id="L14"><DecimalDigits><![CDATA[2]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Decimal" /></BoundToTableFieldType></Number><Number MaxValue="9999999999999998" MinValue="-9999999999999998" BoundToTableField="decimal4" DisplayInLookup="True" XmlNodeBoundTo="total" Name="Total" Id="L15"><DecimalDigits><![CDATA[2]]></DecimalDigits><BoundToTableFieldType><x:type typename="System.Decimal" /></BoundToTableFieldType></Number><PanelForm NumberOfColumns="1" FormTitle="" ProductVersion="" BuildVersion="" Id="_sys_ApprovedPurchaseOrders_c3054ad789a349e680fa6da0372f12b7" FormMode="JCSMode" XmlNodeBoundTo="approvalDetails" Name="Approval Details"><Controls><TextInput MaxLength="255" DisplayInLookup="True" XmlNodeBoundTo="comments" Name="Comments" Id="L17" /><UserLookUp FilterExpressions="{x:Null}" FilterDependencyIds="{x:Null}" IsFilterExpressionSetForProperty="False" BoundToTableField="uniqueidentifier1" DisplayInLookup="True" XmlNodeBoundTo="approver" Name="Approver" Id="L18"><BoundToTableFieldType><x:type typename="System.Guid" /></BoundToTableFieldType></UserLookUp></Controls></PanelForm></Controls></BaseForm>
-
Submit and publish the form.
-
-
Execute and check.
-
Log on to the Enterprise Console as Tim
-
In the Enterprise Console, click the Menu button, and then click Fill Form.
The Fill Form page appears.
-
Select the Purchase Order Requisition form, fill the details, and then submit the request.
-
Go to the Inbox of John, leave a comment, and click Apply Corrections.
The request is returned to Tim.
When Tim resubmits, the changed details can be seen in John's Inbox.
When John when keeps it on Hold, information is sent to Tim but the work item will be retained in John's Inbox.
When John Approves, the requested purchase order is added to the Approved Purchase Orders list.
-