Item Rule Utility Functions

Use these functions in building more complex expressions.

Date Operators

The + (plus) and - (minus) operators add or subtract the specified number of days from a date. A single number is interpreted as a number of days. You can also use dates in the format specified by the standard ISO 8601.

Syntax:

expression1 + expression2
expression1 - expression2

Example:

The following example expresses a time 3 days after the Item Lead Time

[Item].[Logistics].[LeadTime] + 3

auto_sequence

Syntax:

auto_sequence("Sequence Name", starting_num, increment_by)

Searches for Sequence Name in the database tables. Enclose the sequence name in quotation marks to preserve space characters in the name. The sequence name isn't case-sensitive. If the sequence exists, then the function returns the next value from the sequence. If the sequence doesn't exist, then the function creates a sequence with the specified name and returns starting_num. Further numbers in the sequence are incremented by increment_by. This function can be used in defining the return value of assignment and validation rules.

Example: The following expression used as the return value of a rule whose target attribute is [General attributes].[EDC Number] produces a sequence of numbers beginning at 1000 and increasing by 5 for each new item:

auto_sequence("EDC Number", 1000, 5)

between

Syntax:

between(value, minimum, maximum)

Returns TRUE if value falls between minimum and maximum. Returns FALSE otherwise. All arguments are of type Number, Date, or DateTime.

decode

Syntax:

decode(expression, search1, result1, [search2, result2, ...], [default])

Compares expression to the specified series of search arguments, one at a time, and returns the corresponding result when the first match is found. If no match is found, returns default. If default is omitted, returns null. Requires specification of at least expression, search1, and result1. You can specify an unlimited number of pairs of search and result arguments. The default argument is optional.

Example:

The following example returns RED COLOR if the item's body color is RED, BLUE COLOR if it's BLUE, and causes a rejection if none of those colors is matched.

Severity: Reject
If Expression: decode([Item].[BODY ATTR].[COLOR], "RED", "RED COLOR", "BLUE", "BLUE COLOR", "NONE") == "NONE"

in

Syntax:

in(expression, value1, value2,...)

Returns TRUE if expression is found in value1, value2, or other following value arguments. Returns FALSE otherwise. Requires specifying at least expression and value1. You can specify an unlimited number of value arguments.

Example:

The following example returns TRUE if "RED" is contained in the value of either of the specified attributes for colors.

If Expression: in("RED",[Item].[BODY ATTR].[COLOR], [Item].[COVER ATTR].[COLOR])
Note: The functions in() and not_in() accept arguments of either String or Number. All arguments must be of the same type. The type of the first argument determines the type assigned to the subsequent arguments.

not_in

Syntax:

not_in(expression, value1, value2,...)

Returns TRUE if expression isn't found in value1, value2, or other following value arguments. Returns FALSE otherwise. Requires specifying at least expression and value1. You can specify an unlimited number of value arguments.

Example:

The following example returns TRUE if "RED" isn't contained in the value of either of the specified attributes for colors.

If Expression: not_in("RED",[Item].[BODY ATTR].[COLOR], [Item].[COVER ATTR].[COLOR])

to_number

Syntax:

to_number(string)

Returns string as a value of type Number.

Example:

The following example returns the count of an item as a string.

to_number([Item].[PHYSICAL PROP].[COUNT])