Difference between revisions of "Make a Field Conditionally Required"

From SDU
Jump to: navigation, search
Line 7: Line 7:
  
 
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->cr&#58;&#58;zmyscript&#40;...&#41; {<br>string zmsg; <br>if&#40;assignee.userid != cst.userid&#41; {<br>zmsg=format&#40;" Assignee must be the same as the logged in user in order to close %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;assignee.userid != cst.userid&#41; {<br>zmsg=format&#40;" Assignee must be the same as the logged in user in order to close %s", ref_num&#41;; <br>set_error&#40;1&#41;; <br>set_return_data&#40;zmsg&#41;; <br>return; <br>} <br>}<!--c2--></div><!--ec2-->
 +
  
 
== Step 2. Create the trigger ==
 
== Step 2. Create the trigger ==
Line 20: Line 21:
 
Example:
 
Example:
 
MODIFY cr PRE_VALIDATE zmyscript() 113 FILTER(active == 0);
 
MODIFY cr PRE_VALIDATE zmyscript() 113 FILTER(active == 0);
 +
  
 
== Step 3. Publish the Schema changes ==
 
== Step 3. Publish the Schema changes ==
Line 31: Line 33:
 
pre-r11.x
 
pre-r11.x
 
Recycle the Service Desk service
 
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.
 
Note: This logic can be used to greatly expand system functionality by ensuring that data gets collected when any number of conditions exist.
Line 48: Line 49:
 
Example
 
Example
 
(is_null(anyfield1) && is_null(anyfield2))
 
(is_null(anyfield1) && is_null(anyfield2))
 
  
 
For not null add an !
 
For not null add an !
 
Example
 
Example
 
(!is_null(anyfield))
 
(!is_null(anyfield))

Revision as of 02:28, 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))