This example expands the query detailed in "JavaScript onDelete Function Example 1: Checking a Single Condition" [ |http://#_bookmark111]by showing how to prevent open activities from being deleted if the parent (Account) is a customer. In this case, deleting records that are open for prospects is allowed, but not for customers. The following assumptions are made in this example:
- The status is stored in the field CUSTKW02.
- The status value that is being checked is Open.
- The parent (Account) module ID is 2.
- The Account Type field in the parent is ACCTKW01.
- The value that is being checked in Account Type is Customer.
An example of a complete onDelete query, which checks multiple conditions, is as follows:
<html><head><title>OnDeleteExample2</title> <script type="text/javascript"> function fieldsOnDelete(){ return "CALTYPE,1.ACCTKW01";} function onDelete(Type,AccountType){ if( Type == 'Call' && AccountType == 'Prospect' ){ window.location = "MELT://showAlert: You cannot delete open Call Activities from Prospect Accounts"; return false; }else{ return true; } } </script></head><body></Body></html>
where:
- function fieldsOnDelete(){ return "CALTYPE"; } is enhanced to include a second field to check for. A comma is inserted first to indicate another field, and as that field is in a parent module, the Module ID of the parent object must be included with a period symbol (.) separating the module ID and field name. The code in onDelete example 2 is as follows:
function fieldsOnDelete(){ return "CALTYPE,1.ACCTKW01"; }
- A name is given to the second fields so function onDelete(status) is enhanced to include the second field called accttype. The code in onDelete example 2 is as follows:
onDelete(Type,AccountType)
- if( Type == 'Call') is enhanced to include the second parameter (does AccountType include Prospect?). A double ampersand (&&) after the first line separates the two parameters. The code in onDelete example 2 is as follows:
if( Type == 'Call' && AccountType == 'Prospect')
The message changes from You cannot delete open Activities in onDelete example 1 to You cannot delete open Activities from Customer Accounts in onDelete example 2.