Hi,
I have the following script listener to update a User Picker field (Accepted By) and Date Time field (Accepted Date) with current user and current timestamp when a user populates a checkbox called P.O. Accepted.
Assistance for the script was provided by @Thanos Batagiannis [Adaptavist] in Scriptrunner-listener-to-update-custom-date-time-field (again thank you Thanos!)
The script does the 2 updates as required, however the issue history tab does not show that the Accepted By & Accepted Date fields have been updated. It only shows that the checkbox field (P.O. Accepted) that triggers the updates of both these fields has been changed.
What am i missing/doing wrong?
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import java.sql.Timestamp
Issue issue = issue
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def change = event?.getChangeLog()?.getRelated("ChildChangeItem").find {it.field == "P.O. Accepted"}
if (change) {
if (change.newstring == "Accepted as Done")
{
def cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Accepted Date")
def changeHolder = new DefaultIssueChangeHolder()
def now = new Timestamp(new Date().getTime())
cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), now),changeHolder)
def cf2 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Accepted By")
def changeHolder2 = new DefaultIssueChangeHolder()
cf2.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf2), currentUser),changeHolder2)
}
if (change.newstring != "Accepted as Done")
{
def cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Accepted Date")
def changeHolder = new DefaultIssueChangeHolder()
cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), null),changeHolder)
def cf2 = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Accepted By")
def changeHolder2 = new DefaultIssueChangeHolder()
cf2.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf2), null),changeHolder2)
}
}
Many thanks in advance,
Conor