Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Script-Runner Network day between two custom field

Amar
April 5, 2019

Hi Folks,

 

I have below script for network days between two custom fields( Date field only). 

It gives me return value 0 always.

Please help to get the script corrected.

 

==================================

import com.atlassian.jira.component.ComponentAccessor
import java.sql.Timestamp
import java.time.DayOfWeek
import java.text.SimpleDateFormat;


def Plannedstartdate =ComponentAccessor.customFieldManager.getCustomFieldObject("customfield_16160")

def dateB = ComponentAccessor.customFieldManager.getCustomFieldObject("customfield_16281")

 

// both custom fields are only date field.


if (!issue.getCustomFieldValue(Plannedstartdate) || !issue.getCustomFieldValue(dateB)) {
return null
}

def startdate = (issue.getCustomFieldValue(Plannedstartdate)as Timestamp).toLocalDateTime().toLocalDate()
def enddate = (issue.getCustomFieldValue(dateB) as Timestamp).toLocalDateTime().toLocalDate()

if (!enddate.isBefore(startdate)) {
return null
}

def weekend = EnumSet.of(DayOfWeek.SATURDAY, DayOfWeek.SUNDAY)
def workingDays = 0

while (enddate.isBefore(startdate)) {
if (!(enddate.dayOfWeek in weekend)) {
workingDays += 1
}

enddate = enddate.plusDays(1)
}

workingDays

=========================================

2 answers

1 accepted

Suggest an answer

Log in or Sign up to answer
0 votes
Answer accepted
Guy LaRochelle
Contributor
May 2, 2019

Ok, I got it to work with this:

//Required Imports
import com.atlassian.jira.component.ComponentAccessor

def groupManager = ComponentAccessor.getGroupManager()
def userManager = ComponentAccessor.getUserManager()

// Get a pointer to the reporter field and get user
def reporterField = getFieldById("reporter")
def reporterValue = reporterField.getValue()
def reporterUser = userManager.getUserByName(reporterValue.toString())

if ( groupManager.isUserInGroup(reporterUser , "ReportersGroup")){
// Reporter is in the right group - clear all errors
reporterField.clearError()
}else{
// Reporter is not in the group, show error
reporterField.setError("Reporter must be in the Reporters group.")
reporterField.setFormValue(null)
}

 

0 votes
PD Sheehan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
May 2, 2019

Maybe try 

def userManager = ComponentAccessor.userManager

def reporterUser = userManager.getUserByName(ReporterField.value)
if(groupManager.isUserInGroup(reporterUser , 'ReportersGroup'){
...
}
Guy LaRochelle
Contributor
May 2, 2019

Thank you, but it doesn't quite work either.

behaviour errors.jpg

PD Sheehan
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
May 2, 2019

DId you actually try to run it?

Those static type checking errors are normal and expected with this. I generally ignore them.

But if you really need to eliminate the static type checking errors you could try

def userManager = ComponentAccessor.userManager

ApplicationUser reporterUser = userManager.getUserByName(ReporterField.value as String)
if(groupManager.isUserInGroup(reporterUser , 'ReportersGroup'){
...
}
Like Guy LaRochelle likes this
Guy LaRochelle
Contributor
May 2, 2019

I did not, no. I didn't know it could work even with the errors that were shown. Anyway, I did fix it in a way similar to yours, so, thanks!

TAGS
AUG Leaders

Atlassian Community Events