Setting dates after x days of creation date.

Hi! 

I'm trying to set a deadline to a custom field “Deadline" (date field), 90 days after the ticket is created - and if the field “Priority” of the ticket is low. I'll repeat this with other Priorities and number of dates, e.g. 30 days for High Priority tickets. 

Goal is to have this field set upon ticket creation, but also when the priority changes. 

I'm using the workflow below. Youtrack is throwing an error: Processing Issue 78-986588: Cannot set value to custom field Deadline
 jetbrains.youtrack.scripts.wrappers.impl.CustomSimpleFieldValueResolver.set(CustomSimpleFieldValueResolver.kt:57)

What am I doing wrong? 

 

const entities = require('@jetbrains/youtrack-scripting-api/entities');
exports.rule = entities.Issue.onChange({
 title: 'Set Deadline for Low Priority Issues',
 guard: function(ctx) {
   return (ctx.issue.fields.isChanged(ctx.Priority) && ctx.issue.fields.Priority.name === 'Low') || (ctx.issue.fields.Deadline === null && ctx.issue.fields.Priority.name === 'Low');
 },
 action: function(ctx) {
   var issue = ctx.issue;
   var creationDate = issue.created;
   var Date = new Date(creationDate.getFullYear, creationDate.getMonth, creationDate.getDate + 90);
   issue.fields.Deadline = Date;
 },
 requirements: {
   Priority: {
     name: 'Priority',
     type: entities.EnumField.fieldType
   },
   Deadline: {
     name: 'Deadline',
     type: entities.Field.dateType
   }
 }
});
1
1 comment

Hi!

You don't need to convert the issue's creation date. Please use the following code instead:

  var creationDate = issue.created;
  var NewDate = creationDate + 86400000*90;

86400000*90 is one day in milliseconds multiplied by days number.

0

Please sign in to leave a comment.