Difference between revisions of "Make a Field Conditionally Required"

From SDU
Jump to: navigation, search
(New page: This article provides instructions for making a field conditionally required. In the steps that follow, the example code is used to ensure the Assignee is the only only able to close a ti...)
 
Line 2: Line 2:
  
 
In the steps that follow, the example code is used to ensure the Assignee is the only only able to close a ticket. Other examples are displayed at the bottom of this article.
 
In the steps that follow, the example code is used to ensure the Assignee is the only only able to close a ticket. Other examples are displayed at the bottom of this article.
 
  
 
== Step 1. Create the script ==
 
== Step 1. Create the script ==
Line 38: Line 37:
  
  
Another Example
+
== Another Example ==
 
+
 
Root Cause required when a Request is closed
 
Root Cause required when a Request is closed
Script:
 
 
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->cr&#58;&#58;zmyscript&#40;...&#41; {<br>string zmsg; <br>if&#40;is_null&#40;rootcause&#41;&#41; {<br>zmsg=format&#40;"Root Cause is required to close Request %s",ref_num&#41;; <br>set_error&#40;1&#41;; <br>set_return_data&#40;zmsg&#41;; <br>return; <br>} <br>}<!--c2--></div><!--ec2-->
 
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->cr&#58;&#58;zmyscript&#40;...&#41; {<br>string zmsg; <br>if&#40;is_null&#40;rootcause&#41;&#41; {<br>zmsg=format&#40;"Root Cause is required to close Request %s",ref_num&#41;; <br>set_error&#40;1&#41;; <br>set_return_data&#40;zmsg&#41;; <br>return; <br>} <br>}<!--c2--></div><!--ec2-->
  
Line 48: Line 45:
  
  
Tips
+
== Tips ==
 
String statements together using &&
 
String statements together using &&
 
Example
 
Example

Revision as of 02:24, 13 January 2008

This article provides instructions for making a field conditionally required.

In the steps that follow, the example code is used to ensure the Assignee is the only only able to close a ticket. Other examples are displayed at the bottom of this article.

Step 1. Create the script

The script is created as a .spl file and placed in the site/mods/majic directory.

CODE
cr::zmyscript(...) {
string zmsg;
if(assignee.userid != cst.userid) {
zmsg=format(" Assignee must be the same as the logged in user in order to close %s", ref_num);
set_error(1);
set_return_data(zmsg);
return;
}
}


Step 2. Create the trigger

The trigger is responsible for "triggering" the script.

r11.x triggers are created via the Schema Designer utility. Simply add a Site-Defined Trigger to the desired table.

Example: PRE_VALIDATE zmyscript() 113 FILTER(active == 0);

pre-r11.x triggers are made by creating a .mod file and placing it in the site/mods/majic directory.

Example: MODIFY cr PRE_VALIDATE zmyscript() 113 FILTER(active == 0);

Step 3. Publish the Schema changes

r11.x 1. Save your Schema changes 2. Stop the Service Desk service 3. Run pdm_publish from a command line 4. Start the Service Desk service

pre-r11.x Recycle the Service Desk service


Note: This logic can be used to greatly expand system functionality by ensuring that data gets collected when any number of conditions exist.


Another Example

Root Cause required when a Request is closed

CODE
cr::zmyscript(...) {
string zmsg;
if(is_null(rootcause)) {
zmsg=format("Root Cause is required to close Request %s",ref_num);
set_error(1);
set_return_data(zmsg);
return;
}
}

Trigger: PRE_VALIDATE zmyscript() 113 FILTER(status == "CL");


Tips

String statements together using && Example (is_null(anyfield1) && is_null(anyfield2))


For not null add an ! Example (!is_null(anyfield))