Overview:
Sometimes
we need to display amount in work instead of digits. In one of my
project I need to display total amount along with words. There are many
functionality in the Dynamics Ax to convert digits to words but
sometimes we need more better then built-in functionality. So h have
create method based on code which will return word instead of digits.
There are more functionality to convert digits to words for different country. If we need to convert digits in US Doller, in IN Rupees, in CA Doller etc…
Here I have convert Digits to words in IN Rupees.
Here
I have given simple demonstration to create amount to word in Dynamics
Ax. Here I have create method for return word value what you are passing
amount. Create below method in your class or form and pass parameter
you will get word value.
Example:-Public str 1000 ConvertAmountInWords(real _num,str 30 subCurrency="")
{
int numOfPennies = frac(_num)*100 mod 100;
int test = real2int(round(_num,0));
int paise;
int numOfTenths;
str 20 ones[20], tenths[9], hundreds, thousands, lakhs, crores, millions, billions;
str 40 textpaise;
int tmpnumofpennies;
int temp;
str 200 returntxt;
boolean Con2;
int checkPower(int _test, int _power)
{
int numOfPower;
if (_test >= _power)
{
Con2 = true;
numOfPower = _test DIV _power;
if (numOfPower >= 100)
{
temp = numOfPower DIV 100;
returntxt = returntxt + ' ' + ones[temp] + ' ' + hundreds;
numOfPower = numOfPower MOD 100;
}
if (numOfPower >= 20)
{
temp = numOfPower DIV 10;
returntxt = returntxt + ' ' + tenths[temp];
numOfPower = numOfPower MOD 10;
}
if (numOfPower >= 1)
{
returntxt = returntxt + ' ' + ones[numOfPower];
numOfPower = numOfPower MOD 10;
}
switch(_power)
{
case 1000000000 :
{
returntxt = returntxt + ' ' + billions;
_test = _test MOD 1000000000;
break;
}
case 10000000 :
{
returntxt = returntxt + ' ' + crores;
_test = _test MOD 10000000;
break;
}
case 100000 :
{
returntxt = returntxt + ' ' + lakhs;
_test = _test MOD 100000;
break;
}
case 1000 :
{
returntxt = returntxt + ' ' + thousands;
_test = _test MOD 1000;
break;
}
case 100 :
{
returntxt = returntxt + ' ' + hundreds;
_test = _test MOD 100;
break;
}
}
}
else if(_test == 0)
{
if(Con2 == false)
{
numOfPower = 20;
returntxt = returntxt + ' ' + ones[numOfPower];// + ' ' + hundreds;
Con2 = true;
}
//break;
}
return _test;
}
ones[20] = "Zero";
ones[1] = "@SYS26620";
ones[2] = "@SYS26621";
ones[3] = "@SYS26622";
ones[4] = "@SYS26626";
ones[5] = "@SYS26627";
ones[6] = "@SYS26628";
ones[7] = "@SYS26629";
ones[8] = "@SYS26630";
ones[9] = "@SYS26631";
ones[10] = "@SYS26632";
ones[11] = "@SYS26633";
ones[12] = "@SYS26634";
ones[13] = "@SYS26635";
ones[14] = "@SYS26636";
ones[15] = "@SYS26637";
ones[16] = "@SYS26638";
ones[17] = "@SYS26639";
ones[18] = "@SYS26640";
ones[19] = "@SYS26641";
tenths[1] = 'Not used';
tenths[2] = "@SYS26643";
tenths[3] = "@SYS26644";
tenths[4] = "@SYS26645";
tenths[5] = "@SYS26646";
tenths[6] = "@SYS26647";
tenths[7] = "@SYS26648";
tenths[8] = "@SYS26649";
tenths[9] = "@SYS26650";
hundreds = "@SYS26651";
thousands = "@SYS26652";
lakhs = "Lakh";
crores = "Crore";
millions = "@SYS26653";
billions = "@SYS26654";
test = checkPower(test, 1000000000);
test = checkPower(test, 10000000);
test = checkPower(test, 100000);
test = checkPower(test, 1000);
test = checkPower(test, 100);
if (test >= 20)
{
numOfTenths = test DIV 10;
returntxt = returntxt + ' ' + tenths[numofTenths];
numOfTenths = numOfTenths MOD 10;
test = test MOD 10;
}
if (test >= 1)
{
numOfTenths = test;
returntxt = returntxt + ' ' + ones[numOfTenths];
}
if (numOfPennies)
{
returntxt = returntxt + ' ' + "@SYS5534" + "\n\n";
}
paise = numofPennies;
if(paise)
{
if(paise >= 20)
{
numofTenths = paise DIV 10;
returntxt = returntxt + ' '+tenths[numofTenths];
numofTenths = numofTenths MOD 10;
paise = paise MOD 10;
}
if(paise >= 1)
{
numOfTenths=paise;
returntxt=returntxt+ ' '+ones[numOfTenths];
}
returntxt=returntxt + " Paise";
}
//Text = returntxt + " Only";
return returntxt ;
}
In my example like i m giving value of 1500.20 it will return.
"One Thousand Five Hundred And Twenty Paisa"
No comments:
Post a Comment
Thanks for your comment.