Hi,
I am writing behavior to restrict it with following 2 things.
1) On Create subTask due date can not be before Parent issue Creation date and not to be after Parent issue due date.
2) Users should not allow on Edit subTask due date can not be before Parent creation date and after Parent due date.
My code is as follow. Its working fine but setHelpText or setError is not showing when comparing SubTask Due date < Parent creation Date. Whats wrong with my code.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.MutableIssue
import java.sql.Timestamp
import java.lang.Object
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.web.util.OutlookDate
import com.atlassian.jira.web.util.OutlookDateManager
import com.onresolve.jira.groovy.user.FieldBehaviours
import com.onresolve.jira.groovy.user.FormField
import groovy.transform.BaseScript
import com.atlassian.jira.issue.CustomFieldManager
import com.opensymphony.workflow.InvalidInputException
import com.atlassian.jira.web.action.util.CalendarResourceIncluder
import static com.atlassian.jira.issue.IssueFieldConstants.*
import org.apache.log4j.Level
log.setLevel(Level.DEBUG)
@BaseScript FieldBehaviours fieldBehaviours
def DueDate = getFieldById(getFieldChanged())
def DueSubtask = DueDate.getValue()
Date newDueSubtask = (Date)DueSubtask
def newDueSubtaskformat = newDueSubtask.format('MM/dd/yyyy')
def actName = getActionName()
if(actName != "Create"){
def issueId = formContents["id"]
def issue = ComponentAccessor.getIssueManager().getIssueObject(issueId as Long)
MutableIssue parentEdit = issue.getParentObject() as MutableIssue;
Date ReqDue = parentEdit.getDueDate()
if(newDueSubtask.compareTo(ReqDue)>0) {
def parduedateformat = ReqDue.format('MM/dd/yyyy')
// DueDate.setHelpText("Workitem due date ${newDueSubtaskformat} cannot be > Request due date ${parduedateformat}")
DueDate.setError("Workitem due date (${newDueSubtaskformat}) cannot be > Request due date (${parduedateformat})")
}else {
//DueDate.clearHelpText()
DueDate.clearError()
}
}else{
def parent = getFieldById("parentIssueId")
Long parentIssueId = parent.getFormValue() as Long
def issueManager = ComponentAccessor.getIssueManager()
def parentIssue = issueManager.getIssueObject(parentIssueId)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
Date DueReq = parentIssue.getDueDate()
Date ReqCreatedate = parentIssue.getCreated()
log.warn "Parent create date" + ReqCreatedate
if(newDueSubtask.compareTo(ReqCreatedate)<0){
log.warn "I am in creation date comaprison ${newDueSubtask}"
def parentcreatedateformat = ReqCreatedate.format('MM/dd/yyyy')
DueDate.setError("Workitem due date cannot be < Request create date ")
// DueDate.setHelpText("Workitem due date cannot be < Request create date")
// DueDate.setFormValue("")
}else {
//DueDate.clearHelpText()
DueDate.clearError()
}
if((newDueSubtask.compareTo(DueReq)>0) ) {
def parduedateformat = DueReq.format('MM/dd/yyyy')
DueDate.setHelpText("Workitem due date (${newDueSubtaskformat}) cannot be > Request due date (${parduedateformat})")
DueDate.setFormValue("")
} else {
DueDate.clearHelpText()
}
}
Even seeing the error in logs as below
Cannot cast object '' with class 'java.lang.String' to class 'java.util.Date'
Any advise?