js/preventing-unwanted-updates/paid-status-check.js (25 lines of code) (raw):
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
exports.rule = entities.Issue.onChange({
title: 'Request must be authorized to be marked as paid',
guard: function(ctx) {
return ctx.issue.fields.becomes(ctx.State, ctx.State.Paid);
},
action: function(ctx) {
var fs = ctx.issue.fields;
workflow.check(fs.AuthStatus &&
fs.AuthStatus.name === ctx.AuthStatus.Authorized.name,
'Only authorized requests can be marked as paid!');
},
requirements: {
AuthStatus: {
type: entities.EnumField.fieldType,
name: 'Authorization status',
Authorized: {},
},
State: {
type: entities.State.fieldType,
Paid: {}
}
}
});