Issue Comparing Values

arobertson
Tera Guru

Hi All,

 

I have the following script that compares if the repair cost of a machine is greater than the value of the laptop and then returns if the laptop should be disposed or repaired.

 

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
     if (isLoading || newValue == '') {
           return;
     }
     
     var value = g_form.getValue('u_net_book_value');
     var repair = g_form.getValue('u_repair_cost____');
     
     if (repair > value) {
           g_form.setValue('u_dispose_ci_', 'Dispose');
     }
     else {
           g_form.setValue('u_dispose_ci_', 'Repair');
     }
}

 

The issue i have is that sometimes it's advising me to repair a laptop even though it should be disposed.

 

For example in the below screenshot. The laptop is worth £33.81 and the repair cost is £10.000. it should tell me to dispose but it's not.

Capture.PNG

 

I have tried setting "Net Book Value ( £)" & "Repair Cost ( £)" to decimal and integer but its makes no difference.

1 ACCEPTED SOLUTION

Ok. Just tried below one and it worked.


Please try this as well



var value = parseInt(g_form.getValue('u_price').toString().replace(',',''));


var repair = parseInt(g_form.getValue('u_price_2').toString().replace(',',''));



replace the variables with your variables


View solution in original post

18 REPLIES 18

If both of the fields are integer, you don't need to parse them as float. This should work by simply getting the value and comparing both. It is working for me perfectly fine. Please check if both the fields are Integer as your screen shot does not suggest so.


Removing parseFloat now correctly alerts the numbers that are inputted but now both types are returned as object.


If they are returned as object how are you verifying that they are returning the same value which you have input?


By alerting the values.



alert("value\n" + typeof(value) + "\n" + value);


alert("repair\n" + typeof(repair) + "\n" + repair);


Try parseInt instead of parseFloat and it should work.