Calculated number field

Hi,

I am trying to add two custom fields and i am using below script,

<!-- @@Formula:

(issue.get("customfield_11907") != null ? issue.get("customfield_11907") : 0) +

(issue.get("customfield_11912") != null ? issue.get("customfield_11912") : 0)

 -->

Is there anything wrong in this?

Because the values in the fields are displaying in the screen but it is not adding.

For example:

customfield_11907 has value : 100

customfield_11912 has value : 40

addition of these fields : 10,040 (i am getting answers like this)

expected answer is 140

Can any1 please help.

 

Thanks,

Nandeesh

2 answers

1 accepted

Hi Nandees,

 

here your code :

 

import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.customfields.option.Option;
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
MutableIssue issue = issue;
CustomField cf1 = customFieldManager.getCustomFieldObject('customfield_11907');
CustomField cf2 = customFieldManager.getCustomFieldObject('customfield_11912');
Double value1 = issue.getCustomFieldValue(cf1) != null ? new Double(issue.getCustomFieldValue(cf1).toString()): new Double(0);
Double value2 = issue.getCustomFieldValue(cf2) != null ? (Double)issue.getCustomFieldValue(cf2): new Double(0);
return value1+value2;

Hope this helps,

Fabio

Hi Fabio, Great!! It worked. Thank you so much your help :) Thanks, Nandeesh

Hi Nandeesh,

The reason for your getting 10,040 rather than 140 is that your initial values are being treated as strings and so when you use the + operation it concatenates the two values together giving you 10040 but then this is being displayed as a number.

See https://innovalog.atlassian.net/wiki/display/KB/Using+issue.get(%3Cfield_name%3E)+in+scripts for a more comprehensive explanation as to why.

The solution is to ensure that you treat the value returned in the formula as numbers not a string then the + operation will work fine.

Eg 

(issue.get("customfield_11907") != null ? (Integer.parseInt((String)issue.get("customfield_11907")) : 0) 

please note this is from memory and not tested.

 

Hope this helps 

Phill

Hi Phill, Its not working!!When i try with your example, its not showing any value. <!-- @@Formula: (issue.get("customfield_11907") != null ? (Integer.parseInt((String)issue.get("customfield_11907")) : 0) + (issue.get("customfield_11912") != null ? (Integer.parseInt((String)issue.get("customfield_11912")) : 0) -->

HI Nandeesh Can you confirm what custom field type your two fields (11907 and 11912) are. You may also like to try this format <!-- @@Formula: (issue.get("customfield_11907") != null ? (Integer.parseInt(issue.get("customfield_11907")) : 0) + (issue.get("customfield_11912") != null ? (Integer.parseInt(issue.get("customfield_11912")) : 0) -->

Hi Phill, No luck.. it dint work. 11907 - select list 11912 - number field Thanks, Nandeesh

Suggest an answer

Log in or Join to answer
Community showcase
Sarah Schuster
Posted Jan 29, 2018 in Jira

What are common themes you've seen across successful & failed Jira Software implementations?

Hey everyone! My name is Sarah Schuster, and I'm a Customer Success Manager in Atlassian specializing in Jira Software Cloud. Over the next few weeks I will be posting discussion topics (8 total) to ...

3,293 views 14 20
Join discussion

Atlassian User Groups

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

Find a group

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

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you
Atlassian Team Tour

Join us on the Team Tour

We're bringing product updates and pro tips on teamwork to ten cities around the world.

Save your spot