Updating due-date on workflow transition, with a custom field off set

Hey

I have a challange, where a transaction, should change the due date of the issue. But the change is not static (+5 days, 1 month). the off set is based on a select custom field.

This field have have different periods (weekly, monthly, etc.)

Anyone know a way to solve this?

2 answers

1 accepted

Found that it could be done with a scripted post function, using Script Runner plugin

Hi Mikkel,

Did you manage to do it with script runner? Coud you post your script here?

Pierre

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.Issue
import java.text.SimpleDateFormat
import com.atlassian.jira.issue.comments.CommentManager

Issue issue = issue
ComponentManager componentManager = ComponentManager.getInstance()
CustomFieldManager cfManager = componentManager.getCustomFieldManager()
CommentManager comManager= componentManager.getCommentManager()

String value = issue.getCustomFieldValue(cfManager.getCustomFieldObjectByName("Control Frequency"));
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/MM/dd")
String originalDueDate = dateFormatter.format(issue.dueDate)

Calendar newDueDate = Calendar.getInstance()
newDueDate.setTimeInMillis(issue.dueDate.time)

boolean update = true

switch (value){
        case "Daily (weekdays)":

            newDueDate.add(Calendar.DAY_OF_YEAR, Calendar.getInstance().get(Calendar.DAY_OF_WEEK) == Calendar.FRIDAY ? 3 : 1)
            break

        case "Weekly":
            newDueDate.add(Calendar.WEEK_OF_YEAR, 1)
            break
.
.
.
        case "Every 4 years":
            newDueDate.add(Calendar.YEAR, 4)
            break

        case "Every 5 years":
            newDueDate.add(Calendar.YEAR, 5)
            break

        default:
            update = false
            break
    }

if (update){
    issue.dueDate.time = newDueDate.timeInMillis
    comManager.create(issue, "System", "Executed and Due date changed from " + originalDueDate + " to " + dateFormatter.format(issue.dueDate), false)
    issue.store()
}

Scripting.

JJupin:

if(customfield_12345 == "1") {

dueDate = currentDate() + "5d";

} else {

dueDate = currentDate() + "4w";

}

http://confluence.kepler-rominfo.com/display/JJUP20/Date+routines

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Posted Friday in Off-topic

Friday Fun: Riddle me this

Happy Friday, Funmakers! We had a Community Team offsite in Austin this week, and my mind feels primed for thinkin' from all the brainstorming we did!  So, this week's Friday Fun thread w...

144 views 19 3
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you