You need to sign in to do that
Don't have an account?
Geetha Reddy
Urgent Issue Converting number to Word......
How can i convert number to word11
for eg: if i give Input : 1265
output: twelve hundred sixty five only.
i have tried this in javascript, its working fine , but unable to pass javascript value to custom object field value.
<HTML>
<HEAD>
<script type = "text/javascript">
function test_skill() {
var junkVal="1000" //
//var junkVal=document.getElementById('rupees').value;
junkVal=Math.floor(junkVal);
var obStr=new String(junkVal);
numReversed=obStr.split("");
actnumber=numReversed.reverse();
if(Number(junkVal) >=0){
//do nothing
}
else{
alert('wrong Number cannot be converted');
return false;
}
if(Number(junkVal)==0){
document.getElementById('container').innerHTML=obStr+''+'Rupees Zero Only';
return false;
}
if(actnumber.length>9){
alert('Oops!!!! the Number is too big to covertes');
return false;
}
var iWords=["Zero", " One", " Two", " Three", " Four", " Five", " Six", " Seven", " Eight", " Nine"];
var ePlace=['Ten', ' Eleven', ' Twelve', ' Thirteen', ' Fourteen', ' Fifteen', ' Sixteen', ' Seventeen', ' Eighteen', ' Nineteen'];
var tensPlace=['dummy', ' Ten', ' Twenty', ' Thirty', ' Forty', ' Fifty', ' Sixty', ' Seventy', ' Eighty', ' Ninety' ];
var iWordsLength=numReversed.length;
var totalWords="";
var inWords=new Array();
var finalWord="";
j=0;
for(i=0; i<iWordsLength; i++){
switch(i)
{
case 0:
if(actnumber[i]==0 || actnumber[i+1]==1 ) {
inWords[j]='';
}
else {
inWords[j]=iWords[actnumber[i]];
}
inWords[j]=inWords[j]+' Only';
break;
case 1:
tens_complication();
break;
case 2:
if(actnumber[i]==0) {
inWords[j]='';
}
else if(actnumber[i-1]!=0 && actnumber[i-2]!=0) {
inWords[j]=iWords[actnumber[i]]+' Hundred and';
}
else {
inWords[j]=iWords[actnumber[i]]+' Hundred';
}
break;
case 3:
if(actnumber[i]==0 || actnumber[i+1]==1) {
inWords[j]='';
}
else {
inWords[j]=iWords[actnumber[i]];
}
if(actnumber[i+1] != 0 || actnumber[i] > 0){
inWords[j]=inWords[j]+" Thousand";
}
break;
case 4:
tens_complication();
break;
case 5:
if(actnumber[i]==0 || actnumber[i+1]==1) {
inWords[j]='';
}
else {
inWords[j]=iWords[actnumber[i]];
}
if(actnumber[i+1] != 0 || actnumber[i] > 0){
inWords[j]=inWords[j]+" Lakh";
}
break;
case 6:
tens_complication();
break;
case 7:
if(actnumber[i]==0 || actnumber[i+1]==1 ){
inWords[j]='';
}
else {
inWords[j]=iWords[actnumber[i]];
}
inWords[j]=inWords[j]+" Crore";
break;
case 8:
tens_complication();
break;
default:
break;
}
j++;
}
function tens_complication() {
if(actnumber[i]==0) {
inWords[j]='';
}
else if(actnumber[i]==1) {
inWords[j]=ePlace[actnumber[i-1]];
}
else {
inWords[j]=tensPlace[actnumber[i]];
}
}
inWords.reverse();
for(i=0; i<inWords.length; i++) {
finalWord+=inWords[i];
}
document.getElementById('container').innerHTML=finalWord; // we are getting values in to it.
}
</script>
</HEAD>
<BODY onload="test_skill()">
<div id="container"></div>
</BODY>
</HTML>
i want that value (document.getElementById('container').innerHTML=finalWord;) in field namely amountinwords__c .
You should be able to do this if you have a form in the page with an input backed by that field. You can access the underlying input element using the $Component global.
but value is coming from javascript na
so I have a doubt ...
What do you mean by coming from javascript na? Does that mean that your javascript is returning the string 'na'?
no actually i am redering a pdf
in it i have a field namely TotalPrice from that all procedure are done in javascript after that value is stored in finalword .
Now i want final word value to amountinwords__c .
PDF can't use javascript - that's in the visualforce developers guide. You'll need to push that code server side. I'd imagine you'll need a custom controller with a getter that returns the field in question converted.
ya i too know that we can not use javascript while generating pdf ..
but i want to convert number to word so i tried to write in visualforce page .
I'm confused as to what you are looking for now. You can't use javascript, so it will have to be done in Apex and the correct value rendered through a component.
I'm also looking for a similar solution but my requirements are little different. It's a professional edition hence there is no apex available.
I want opportunity amount to be converted into words. Doesn't matter even if it is done with a click of button. I have created a custom button in opportunity. On clicking this button, javascript will be executed to convert number into word. I am facing similar problem what Geetha faced.. "unable to pass javascript value to custom object field value"
I referred this code initially and I can pass a text value directly in Next Step field.
I tried to use same logic to pass a value calculated from javascript function but it's not working...
Am I missing any basic step?
Here is the working sample of Currency to Words using Custom Button and Javascript.
Custom Text field:
Click on Your Name > Setup > App Setup > Customize > Opportunities > Fields
Click on new button and create a custom "Text" field.
Name it as "amount in words".
Add it on Page Layout.
Custom Button:
Click on Your Name > Setup > App Setup > Customize > Opportunities > Buttons and Links
Click new button to create a custom button. Name it as "Currency to Words"
Set Display Type as "Detail Page Button"
Set Behavior as "Execute JavaScript".
Paste the below mentioned code in "OnClick JavaScript" & Save.
Add this button on opportunity page layout
Hope this will help... Next challenge is to create this as a dynamic functionality. Currently there is no control to check whether currency the text and opportunity amount is correct or wrong.
Here I want that Currency in Words button also cover paise in words.
like if an amount is 110.12 rupees then it shows One Hundred Ten Rupee and 12 Paise Only
The below code works for the number range 1000 - 99,99,999
Just set the respective value for the num. variable. [ you can make the code as a method also and can be called where ever necessary]
Hope this helps someone.
Public Class AmountInWords_New{
Long num = 45678;
Integer k, ends;
long a ,b, c, d, f, g;
public Map<Integer,String> wordMap = new Map<Integer, String>();
public List<String> inWords = new List<String>();
public string amountinWords {get;set;}
public AmountInWords_New(){
amountInWords = 'Amount in words';
//Load the map starts here
wordMap.put(99, 'Ninty Nine');
wordMap.put(98, 'Ninty Eight');
wordMap.put(97, 'Ninty Seven');
wordMap.put(96, 'Ninty Six');
wordMap.put(95, 'Ninty Five');
wordMap.put(94, 'Ninty Four');
wordMap.put(93, 'Ninty Three');
wordMap.put(92, 'Ninty Two');
wordMap.put(91, 'Ninty One');
wordMap.put(90, 'Ninty');
wordMap.put(89, 'Eighty Nine');
wordMap.put(88, 'Eighty Eight');
wordMap.put(87, 'Eighty Seven');
wordMap.put(86, 'Eighty Six');
wordMap.put(85, 'Eighty Five');
wordMap.put(84, 'Eighty Four');
wordMap.put(83, 'Eighty Three');
wordMap.put(82, 'Eighty Two');
wordMap.put(81, 'Eighty One');
wordMap.put(80, 'Eighty');
wordMap.put(79, 'Seventy Nine');
wordMap.put(78, 'Seventy Eight');
wordMap.put(77, 'Seventy Seven');
wordMap.put(76, 'Seventy Six');
wordMap.put(75, 'Seventy Five');
wordMap.put(74, 'Seventy Four');
wordMap.put(73, 'Seventy Three');
wordMap.put(72, 'Seventy Two');
wordMap.put(71, 'Seventy One');
wordMap.put(70, 'Seventy');
wordMap.put(69, 'Sixty Nine');
wordMap.put(68, 'Sixty Eight');
wordMap.put(67, 'Sixty Seven');
wordMap.put(66, 'Sixty Six');
wordMap.put(65, 'Sixty Five');
wordMap.put(64, 'Sixty Four');
wordMap.put(63, 'Sixty Three');
wordMap.put(62, 'Sixty Two');
wordMap.put(61, 'Sixty One');
wordMap.put(60, 'Sixty');
wordMap.put(59, 'Fifty Nine');
wordMap.put(58, 'Fifty Eight');
wordMap.put(57, 'Fifty Seven');
wordMap.put(56, 'Fifty Six');
wordMap.put(55, 'Fifty Five');
wordMap.put(54, 'Fifty Four');
wordMap.put(53, 'Fifty Three');
wordMap.put(52, 'Fifty Two');
wordMap.put(51, 'Fifty One');
wordMap.put(50, 'Fifty');
wordMap.put(49, 'Fourty Nine');
wordMap.put(48, 'Fourty Eight');
wordMap.put(47, 'Fourty Seven');
wordMap.put(46, 'Fourty Six');
wordMap.put(45, 'Fourty Five');
wordMap.put(44, 'Fourty Four');
wordMap.put(43, 'Fourty Three');
wordMap.put(42, 'Fourty Two');
wordMap.put(41, 'Fourty One');
wordMap.put(40, 'Fourty');
wordMap.put(39, 'Thirty Nine');
wordMap.put(38, 'Thirty Eight');
wordMap.put(37, 'Thirty Seven');
wordMap.put(36, 'Thirty Six');
wordMap.put(35, 'Thirty Five');
wordMap.put(34, 'Thirty Four');
wordMap.put(33, 'Thirty Three');
wordMap.put(32, 'Thirty Two');
wordMap.put(31, 'Thirty One');
wordMap.put(30, 'Thirty');
wordMap.put(29, 'Twenty Nine');
wordMap.put(28, 'Twenty Eight');
wordMap.put(27, 'Twenty Seven');
wordMap.put(26, 'Twenty Six');
wordMap.put(25, 'Twenty Five');
wordMap.put(24, 'Twenty Four');
wordMap.put(23, 'Twenty Three');
wordMap.put(22, 'Twenty Two');
wordMap.put(21, 'Twenty One');
wordMap.put(20, 'Twenty');
wordMap.put(19, 'Ninteen');
wordMap.put(18, 'Eighteen');
wordMap.put(17, 'Seventeen');
wordMap.put(16, 'Sixtenn');
wordMap.put(15, 'Fifteen');
wordMap.put(14, 'Fourteen');
wordMap.put(13, 'thirteen');
wordMap.put(12, 'Twelve');
wordMap.put(11, 'Eleven');
wordMap.put(10, 'Ten');
wordMap.put(9, 'Nine');
wordMap.put(8, 'Eight');
wordMap.put(7, 'Seven');
wordMap.put(6, 'Six');
wordMap.put(5, 'Five');
wordMap.put(4, 'Four');
wordMap.put(3, 'Three');
wordMap.put(2, 'Two');
wordMap.put(1, 'One');
//Load the map ends here
While (ends != 0){
//Calculate the length of the AmountInWords
if( num >= 9999999){
k = 2;
}
else
k = 1;
String nu = num.format();
system.debug('the value is' + nu);
Integer len = nu.length();
len= len - k;
system.debug('the length is' + len);
system.debug('the number is' + num);
//Scenario 10,00,000 or 55,66,777
if(len >= 6){
system.debug('inside the 1st loop');
a = num / 100000;
system.debug('the value is a' + a);
//check mod is 0 or not
b = Math.mod(num , 100000);
//for scenario 55,00,000;
if(b == 0){
inWords.add(wordMap.get(a.intValue()));
inWords.add('Lakhs');
ends = 0;
}
//for scenario 55,00,057
else if(b < 100){
system.debug('word is' + wordMap.get(a.intValue()));
inWords.add(wordMap.get(a.intValue()));
inWords.add('Lakhs');
inWords.add(wordMap.get(b.intValue()));
ends = 0;
}
else{
inWords.add(wordMap.get(a.intValue()));
inWords.add('Lakhs');
num = b;
system.debug('some other scenario mod >=100');
}
}
//Scenario 99,789 or 9,789
else if(len == 5 || len == 4){
system.debug('inside the 2nd loop');
c = num / 1000;
//check mod is 0 or not
d = Math.mod(num , 1000);
//for scenario 55,000 or 5000
if(d == 0){
inWords.add(wordMap.get(c.intValue()));
inWords.add('Thousand');
ends = 0;
}
//for scenario 55,057 or 5,057
else if(d < 100){
inWords.add(wordMap.get(c.intValue()));
inWords.add('Thousand');
inWords.add(wordMap.get(d.intValue()));
ends = 0;
}
//for scenario 55,678 or 5,987
else{
inWords.add(wordMap.get(c.intValue()));
inWords.add('Thousand');
num = d;
system.debug('some other scenario mod >=100');
}
}
else {
system.debug('inside the 3rd loop');
f = num / 100;
//check mod is 0 or not
g = Math.mod(num , 100);
if(g == 0){
inWords.add(wordMap.get(f.intValue()));
inWords.add('Hundred');
ends = 0;
}
else if(g < 100){
inWords.add(wordMap.get(f.intValue()));
inWords.add('Hundred');
inWords.add(wordMap.get(g.intValue()));
ends = 0;
}
else{
num = g;
system.debug('some other scenario mod >=100 ');
}
}
}
inWords.add('only');
inWords.add('\n');
system.debug('the list is' + inWords);
for(Integer z = 0;z<inWords.size()-1;z++){
amountInWords = amountInWords + ' ' + string.ValueOf(inWords[z]);
}
system.debug('in words is:' + amountInWords);
}
}
Thank You,
Adiga,
Hosanagara.