Tuesday 2 July 2013

converting numberic to Text in ax 2012


public str 5000 amountInWords(real _num)
{
    int     numOfPennies = (decround(frac(_num), 2) * 100) mod 100;

    real    test         =  _num  - (  frac(_num));

    int     numOfTenths;

    str 20  ones[19], tenths[9], hundreds, thousands, millions, billions, trillions;

    int64   temp ;

    str 200 returntxt;

    real  fracnum=frac(_num);

    real modOperator(real a1, real a2)

    {

    int tmpi;

    real tmp1, tmp2;

    tmp1 = a1 / a2;

    tmpi = real2int(tmp1);

    tmp2 = tmpi;

    return (tmp1  -  (tmp2))*a2;

    }

    real checkPower(real  _test, int64 _power)

    {

        int64   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 1000000000000 :

                {

                    returntxt = returntxt + ' ' + trillions;

                    _test = modOperator(_test, 1000000000000.00);

                    break;

                }

                case 1000000000 :

                {

                    returntxt = returntxt + ' ' + billions;

                    _test = modOperator(_test, 1000000000);

                    break;

                }

                case 1000000 :

                {

                    returntxt = returntxt + ' ' + millions;

                    _test = modOperator(_test, 1000000);

                    break;

                }

                case 1000 :

                {

                    returntxt = returntxt + ' ' + thousands;

                    _test = modOperator(_test, 1000);

                    break;

                }

                case 100 :

                {

                    returntxt = returntxt + ' ' + hundreds;

                    _test = modOperator(_test, 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";

    millions    = "@SYS26653";

    billions    = "@SYS26654";

    trillions   = "@SYS101697";



    test = checkPower(test, 1000000000000);

    test = checkPower(test, 1000000000);

    test = checkPower(test, 1000000);

    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 = real2int(test);

        returntxt = returntxt + ' ' + ones[numOfTenths];

    }



    if (numOfPennies)

    {

        returntxt =  returntxt + ' '+" Riyals "+  "@SYS5534" + ' halalas ';

         if(numOfPennies>=20)

         {

            numOfTenths=numOfPennies div 10;

            numOfPennies = numOfPennies mod 10;

            returntxt = returntxt + ' '  + tenths[numofTenths];

         }

          if (numOfPennies >= 1)

         {

            numOfTenths = real2int(numOfPennies);



            returntxt = returntxt + ' '+ ones[numOfTenths];
         }

        returntxt = returntxt;

    }

    else

    {

        returntxt =  returntxt +" Riyals ";

    }

    return  returntxt + "  Only";

}


No comments:

Post a Comment