js/estimation-accumulation/accumulate-subtasks.js (22 lines of code) (raw):

var entities = require('@jetbrains/youtrack-scripting-api/entities'); exports.rule = new entities.Issue.onChange({ title: "Accumulate estimates", guard: function(ctx) { var issue = ctx.issue; return issue.fields.isChanged(ctx.IntEstimation) && issue.links['subtask of'].isNotEmpty(); }, action: function(ctx) { var parent = ctx.issue.links['subtask of'].first(); var estimation = 0; parent.links['parent for'].forEach(function(child) { estimation += child.fields[ctx.IntEstimation.name]; }) parent.fields[ctx.IntEstimation.name] = estimation; }, requirements: { IntEstimation: { type: entities.Field.integerType } } });