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
}