storageUnit.storageTypeId eq the cold-storage type. Set severity to error and the message to {item.id} must be stored in cold storage. A receipt into any other storage type is rejected with that message.
What a rule checks
Each rule holds a small condition tree, a match kind over one or more field/operator/value rows:- Match kind:
all(every condition must hold),any(at least one), ornone(none may hold). - Field: chosen from a fixed registry: item facts (
item.type,item.replenishmentSystem,item.itemTrackingType, custom fields), storage location (storageUnit.storageTypeId,storageUnit.locationId), work-center facts, and the line’stransaction.quantity. - Operator:
eq,neq,in,notIn,isSet,isNotSet,gt,lt.
{item.id} and {transaction.quantity}, so the
text can name the offending line. The rule “passes” when its conditions hold; a violation fires when they
don’t.
Operators
Where rules fire
A rule lists the surfaces (transaction types) it applies to. The available surfaces depend on the target:
Rules are evaluated server-side as the transaction posts, before any accounting or stock movement is
written. A blocked transaction writes nothing.
Block or warn
For instance, a
warn rule on inventory adjustments where transaction.quantity gt 750, with the
message Large adjustment — confirm the count, lets the count post once the user acknowledges it while still
flagging the outlier.
Scope and assignment
A rule reaches the lines it applies to in one of two ways:- By filter: item-target rules can scope to item types and/or item groups, combined with OR or AND. An empty filter matches every item.
- By assignment: pin a rule to a specific item from the item’s Rules tab, or to a specific work center. Work-center rules can also be set to apply to all work centers.