It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

script to set the date based on custom field value

Srikanth Gogineni Apr 19, 2019

Hi ,

Please find the below scenario

we have two custom fields.

Field A the value = 2 

Field B ( Date field)

Now i need to set the date ( exclude Saturday and Sunday ) for the custom field B as current date + 2 ( which means if today is Monday then field B value should be Thursday's date)

Can any one help with the post script for the above scenario.

Thanks

2 answers

1 accepted

0 votes
Answer accepted
Antoine Berry Apr 19, 2019

Hi @Srikanth Gogineni ,

This code should do the trick (credits to this post) : 

import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.component.ComponentAccessor

int numberFieldId = 13100
int dateFieldId = 13101

def customFieldManager = ComponentAccessor.getCustomFieldManager()

def numberField = customFieldManager.getCustomFieldObject(numberFieldId)
def dateField = customFieldManager.getCustomFieldObject(dateFieldId)

def numberFieldValue = issue.getCustomFieldValue(numberField)
def dateFieldValue = issue.getCustomFieldValue(dateField)

Calendar c1 = GregorianCalendar.getInstance();
c1.setTime(dateFieldValue)

for(int i=1;i<=numberFieldValue;i++){
c1.add(Calendar.DAY_OF_MONTH, 1);
if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY)
c1.add(Calendar.DAY_OF_MONTH, 1);
if (c1.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY)
c1.add(Calendar.DAY_OF_MONTH, 1);
}

dateField.updateValue(null, issue, new ModifiedValue(dateFieldValue, c1.getTime().toTimestamp()), new DefaultIssueChangeHolder())

Of course update custom field ids.

Antoine

Srikanth Gogineni Apr 22, 2019

Hi @Antoine Berry 

Thank you very much for your code and it is working fine but there is small issue with the script.

Date field is not getting calculated properly when i move to previous/other transitions and changing the "Numberfieldvalue" . it is increment from the existing set date to new date ( not from the current date ).

example : 

Current Date : 4/22/2019

Numberfieldvalue : 2 

Set Date : 4/24/2019 ( after executing the script)

Now if i go back and change the numberfieldvalue to 1 then the new Set Date is getting updated to 4/25/2019( 2 +1 ) instead of 4/23/2019.

 

please help on the same.. Thanks 

Antoine Berry Apr 23, 2019

Hi @Srikanth Gogineni ,

Sorry did not catch it was current date + 2. Just replace the setTime line with this : 

c1.setTime(new Date())

and it should work fine.

Antoine

Srikanth Gogineni Apr 23, 2019

Hi @Antoine Berry ,,

 

Thanks a lot . Your script worked like a charm... Thank you very much.

 

Regards

Srikanth

Like Antoine Berry likes this
0 votes
Alexey Matveev Community Leader Apr 19, 2019

Hello,

If you already have a scripting plugin, then you should add a tag with the plugin to your question, because there are multiple plugins available and you should provide info for the one you have.

Suggest an answer

Log in or Sign up to answer
This widget could not be displayed.
This widget could not be displayed.
Community showcase
Published in Jira

Try Jira Cloud for Outlook: Organize your work without leaving your inbox

Hi Atlassian community, My name is Max and I work on the product integration team at Atlassian. I am pleased to announce the early access program for the Jira Cloud add-in for Outlook. This add-in...

794 views 0 12
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you