Wednesday 2 May 2012

Amount In Words


How to Convert amount in words





display Tempstr numberToRupees()
{
     int     numOfPennies = frac(TmpChequePrintout.AmountCur)*100 mod 100;
     int     test         = real2int(round(TmpChequePrintout.AmountCur,0));
     int     paise;
     int     numOfTenths;
     str 20  ones[19], tenths[9], hundreds, thousands, lakhs, crores, millions, billions;
     str 40  textpaise;
     int     tmpnumofpennies;
     int     temp;
     str 200 returntxt;

     int checkPower(int  _test, int _power)
     {
         int     numOfPower;

         if (_test >= _power)
         {
             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;
                 }
             }
         }
         return _test;
     }



     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";
     }

    return   returntxt + "  Only";
    //return "(Amount in words)" +' ' + ' Rupees'+ " " +returntxt+" Only";
}