Monday, April 22, 2013

How to convert Amount in Words using Crystal Report?


How to Convert Amount (Currency) in words directly on Crystal Report.

Just Simply copy paste below code in your function.
To Create function follow the steps given below:
i) go to Field Explorer
ii) right click on Formula Fields click on New give specific name
iii) Formula Editor window will open just paste the Code given below
iv) Save & Close...
v) Just drag the Field to your specific required Location that done...

Changes to be made from your side is
i) vwCostTypes.UnitCost : This is a Database Field. Change as per your requirement.
Please note if you have Currency as Datatype in SQL DB than Do use ToNumber() function to convert it to number otherwise it will throw error of Number Required.

Please have the below code:
//#####################

//Created by Anup Shah.
//#####################
numbervar RmVal:=0;
currencyVar Amt:=0;
numbervar pAmt:=0;
stringvar InWords :="Rupees ";
Amt := ({vwCostTypes.UnitCost});

if Amt > 10000000 then RmVal := truncate(ToNumber(Amt)/10000000);
if Amt = 10000000 then RmVal := 1;
if RmVal = 1 then
InWords := InWords + " " + towords(RmVal,0) + " crore"
else
if RmVal > 1 then InWords := InWords + " " + towords(RmVal,0) + " crores";

Amt := Amt - Rmval * 10000000;
if Amt > 100000 then RmVal := truncate(ToNumber(Amt)/100000);
if Amt = 100000 then RmVal := 1;
if RmVal >=1 then
InWords := InWords + " " + towords(RmVal,0) + " lakhs";

Amt := Amt - Rmval * 100000;
if Amt > 0 then InWords := InWords + " " + towords(truncate(Amt),0);
pAmt := (ToNumber(Amt) - truncate(ToNumber(Amt))) * 100;
if pAmt > 0 then
InWords := InWords + " and " + towords(pAmt,0) + " paisa only"
else
InWords := InWords + " only";
UPPERCASE(InWords)
//#####################


Happy Coding...!!! ;)


11 comments:

  1. "(TOTAL EURO "+UpperCase(Towords(sum({@Tot}),0))+" Point "+ UpperCase(Towords(remainder(sum({@Tot}),1)*100,0))

    ReplyDelete
  2. It's work very nice,

    Thank you.

    ReplyDelete
  3. Thanks for ya Code but how do u write it to convert into shillings

    ReplyDelete
  4. FOr 4 Crores it showing 4 crore 4 lakh only. there is some bug in it

    ReplyDelete
    Replies
    1. Did you get any response for this problem?

      Delete
  5. RUPEES TWO LAKHS THIRTY-FIVE THOUSAND FOUR HUNDRED FOURTEEN ONLY


    how to remove - between thirty and five

    ReplyDelete
  6. Thank you.......
    its very helpful

    ReplyDelete
  7. Great Thinking and Coding man ....
    So simple to use

    ReplyDelete