Copy the string data into currency field

Jyoti Tripathi
Giga Guru

Hi All, I have a requirement to copy the pay rate(string field) from caller field to wage field(currency field) and it should be truncated to two decimal places.

 

Example- if user's pay rate is 56.8867 then wage field should populate as $56.88

JyotiTripathi_0-1701869337999.pngJyotiTripathi_1-1701869410599.png

 

please kindly help

 

1 ACCEPTED SOLUTION

Hi,

Try below:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading) {
        return;
    }
    if (newValue === '') {
        g_form.setValue('dollar_amount', 'USD;0.00');
        return;
    }
    var grievant = g_form.getReference('employee_id', callBack);

    function callback(grievant) {
        var payRate = parseFloat(grievant.u_pay_rate_amount);
		g_form.setValue('dollar_amount', 'USD;'+currValue);
        var currArr = payRate.split('.');
        var decPart = currArr[1];
        if (decPart.length > 2) {
            var x = Number(grievant.u_pay_rate_amount);
            var currValue = "USD;" + Math.round(x * 100) / 100;
            g_form.setValue('dollar_amount', currValue);

        }
    }
}
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

View solution in original post

15 REPLIES 15

Anil Lande
Kilo Patron

Hi,

If you are using server script then use :

var strValue = 56.8867;
var currValue = "USD;"+parseFloat(strValue).toFixed(2);
grObj.field_name.setDisplayValue(currValue); //use current or grObject

If it is client script then use:

var strValue = 56.8867;
var currValue = "USD;"+parseFloat(strValue).toFixed(2);
g_form.setValue('field_name' , currValue);
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

@Anil Lande : Thanks Anil, the code worked but after decimal it is getting round off if its more than 2 decimal.

can we copy the exact same data.

if it is 145.677, it should be 145.67 not 145.68

 

Then you need to take a long way:

var strValue = "123.4567";
currArr=strValue.split('.');
var decPart=currArr[1];
var currValue = "USD;"+parseFloat(strValue);
if(decPart.length>2){
var x =Number(strValue);
currValue="USD;"+Math.round(x*100)/100;
}
gr.fieldName.setDisplayValue(currValue);
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

@Anil Lande : I tried but it is not working, could you please what is the issue with code

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
   if (isLoading) {
      return;
   }
   
   if(newValue === ''){
      g_form.setValue('dollar_amount', '0.00');
      return;
   }

   var grievant = g_form.getReference('employee_id', callBack);
}

 var payRate = parseFloat(grievant.u_pay_rate_amount);

  var currArr=payRate.split('.');
var decPart=currArr[1];
if(decPart.length>2){
var x =Number(grievant.u_pay_rate_amount);
var currValue="USD;"+Math.round(x*100)/100;

   g_form.setValue('dollar_amount', currValue);

}