Hey,
I have a script what calculate the date and based on if date is expired or not it should update another custom it works but not save those change when I go to edit it show still old value
Code bellow
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import java.util.Date.*
import java.text.SimpleDateFormat
import java.time.LocalDate
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date
import java.util.concurrent.TimeUnit
import java.lang.Object
import static org.junit.Assert.*;
import com.atlassian.jira.bc.issue.search.SearchService;
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.*;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.customfields.manager.OptionsManager;
import com.atlassian.jira.issue.customfields.option.Option;
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.IssueInputParameters
int optionYes = 11529;
int optionNo = 11530;
IssueService issueService = ComponentAccessor.getComponent(IssueService);
def optionsManager = ComponentAccessor.getComponent(OptionsManager);
//def customFieldManager = ComponentAccessor.getComponent(CustomFieldManager);
IssueInputParameters issueInputParameters = issueService.newIssueInputParameters()
def user = ComponentAccessor.getJiraAuthenticationContext().loggedInUser
//normal date
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate localDate = LocalDate.now();
def pro2=dtf.format(localDate);
//parse String date to Date
String sDate1=pro2;
Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);
//get Deadline date
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def deadline= customFieldManager.getCustomFieldObjectByName('Deadline');
def deadlineDate= issue.getCustomFieldValue(deadline) as Date
//decalre two dates
Date firstDate = date1
Date secondDate = deadlineDate
//comparison
long diffInMillies = secondDate.getTime() - firstDate.getTime();
//condition
if (diffInMillies<0){
def diff = "Expired: " + Math.abs(TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS))+" days ago";
def cf = customFieldManager.getCustomFieldObjectByName("Overdue")
def cfConfig = cf.getRelevantConfig(issue)
value = ComponentAccessor.optionsManager.getOptions(cfConfig)?.find { it.toString() == 'Yes' }
issue.setCustomFieldValue(cf, value)
//def tgtField = customFieldManager.getCustomFieldObjects(issue).find {it.name == "Overdue"}
//def changeHolder = new DefaultIssueChangeHolder();
// tgtField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(tgtField), "No"),changeHolder);
CustomField targetCf = customFieldManager.getCustomFieldObject(10821);
Options targetCfOptions = ComponentAccessor.getOptionsManager().getOptions(targetCf.getRelevantConfig(issue));
Option ChoosenOption = targetCfOptions.getOptionById(optionYes);
targetCf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(targetCf), ChoosenOption), new DefaultIssueChangeHolder());
return diff
}
else {
def diff2 = "Days to Deadline: " + TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
def diff = "Expired: " + Math.abs(TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS))+" days ago";
def cf = customFieldManager.getCustomFieldObjectByName("Overdue")
def cfConfig = cf.getRelevantConfig(issue)
value = ComponentAccessor.optionsManager.getOptions(cfConfig)?.find { it.toString() == 'No' }
issue.setCustomFieldValue(cf, value)
//def tgtField = customFieldManager.getCustomFieldObjects(issue).find {it.name == "Overdue"}
//def changeHolder = new DefaultIssueChangeHolder();
//tgtField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(tgtField), "No"),changeHolder);
CustomField targetCf = customFieldManager.getCustomFieldObject(10821);
Options targetCfOptions = ComponentAccessor.getOptionsManager().getOptions(targetCf.getRelevantConfig(issue));
Option ChoosenOption = targetCfOptions.getOptionById(optionNo);
targetCf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(targetCf), ChoosenOption), new DefaultIssueChangeHolder());
return diff2
}
Hello,
After you set customfield value, you need to update the issue as well. Could you try this after you set the field values:
updateIssue(ApplicationUser user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will store the provided issue to the JIRA datastore.
For example:
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
You need to import event dispatch option, too
import com.atlassian.jira.event.type.EventDispatchOption
Regards,
Hello,
After you set customfield value, you need to update the issue as well. Could you try this after you set the field values:
updateIssue(ApplicationUser user, MutableIssue issue, EventDispatchOption eventDispatchOption, boolean sendMail)
This method will store the provided issue to the JIRA datastore.
For example:
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
You need to import event dispatch option, too
import com.atlassian.jira.event.type.EventDispatchOption
Regards,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Sorry, something went wrong and my answer is posted twice :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Validate your expertise in managing Jira Service Projects for Cloud. Master configuration, optimize workflows, and manage users seamlessly. Earn global 🗺️ recognition and advance your career as a trusted Jira Service management expert.
Get Certified! ✍️Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.