- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-13-2019 04:59 AM
Hi All,
1. Rent with VAT = Rent w/o VAT * with Tax VAT
2. Rent with VAT = 550 * 7.7% = 592.00
3. Rent with VAT = 550
Anyone having knowledge on this please help me.
Thanks
Raj
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2019 10:52 PM
H again,
The decimal separator i cannot manipulate. Thats the browser that determines that.
In Google Chrome i get:
And in Firefox i get:
Opposite group separators and decimal deparators
I have edited the script to take care of this but i cannot change the way its displayed
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
if(newValue == 'no'){ //Check the value of the "No" choice and adjust this if its not correct (maybe it "No" or something like that)
g_form.setValue('u_rent_with_vat', g_form.getValue('u_rent'));
}else{
var decimal_separator = g_user_decimal_separator; //We get decimal separator
var group_separator = g_user_grouping_separator; //Group separator - can be 1.000,50 as an example then the group separator is .
var re = new RegExp(RegExp.quote(group_separator),"g"); //Because we cannot just replace . through regex then we need to add \ before the . char
var rent = g_form.getValue('u_rent');
//rent is a currency field so format is currency;amount : USD;50.50
var currency = rent.split(';')[0]; //to get current currency
rent = parseFloat(rent.split(';')[1].replace(re, '').replace(decimal_separator, '.'));
var calculatedValue = ((rent / 100) * parseFloat(newValue)) + rent;
g_form.setValue('u_rent_with_vat', currency + ';' + calculatedValue);
}
}
RegExp.quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2019 01:39 AM
This is made with onChange on With tax (TVA)
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var rent = g_form.getValue('u_rent');
//rent is a currency field so format is currency;amount : USD;50
var currency = rent.split(';')[0]; //to get current currency
//If , (comma) is used then we need to change it to . (dot) so parseFloat doesnt ignore the number after the delimmiter
rent = parseFloat(rent.split(';')[1].replace(',', '.'));
var calculatedValue = ((rent / 100) * parseFloat(newValue)) + rent;
alert(calculatedValue);
g_form.setValue('u_rent_with_vat', currency + ';' + calculatedValue);
}
Script updated
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2019 01:54 AM
And remember that the value of your choice field needs to be with . (dot) and not , (comma). (in the above example the value is 7.7)
I have chosen "include none" so theres no need of validate if the VAT field have a "no" in that case
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2019 02:37 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2019 02:56 AM
The value of the choice should be changed from "VAT = 7.7%" to 7.7
Only the value. The label can be the same as now.
Remember that you calculate. You cannot calculate a value that is "VAT = 7.7%"
You also need to make sure that the other fields are correct. "u_rent" and "u_rent_with_vat"
Its the name of the fields you have created
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-14-2019 09:43 PM
Thanks so much, Simon for your supporting
Small issue in our code.
1. Vat = 7.7% .(dot)
Rent = 250.00
Rent with VAT = 250 * 7.7% = 269.25
Currently, I'm getting like in the below way
In the below way we want
2. Vat = No
Rent =255.75
Rent With VAT = 255.75
Currently, I'm getting like in the below way
In the below way we want
onChange Client script:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var rent = g_form.getValue('u_rent');
var currency = rent.split(';')[0];
rent = parseFloat(rent.split(';')[1].replace(',', '.'));
var calculatedValue = ((rent / 100) * parseFloat(newValue)) + rent;
g_form.setValue('u_rent_with_vat', currency + ';' + calculatedValue);
}
Thanks
Raj