Numerals to TXT in QAR(Qatar)

Numerals to TXT in QAR(Qatar):

static TempStr numeralsToTxt_QAR(real _num)
    {
        int     numOfPennies = (decRound(frac(_num), 2) * 100) mod 100;
        real    test         = _num - frac(_num);

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

        int64   temp;
        str 200 returntxt;
        int64   testLoc;
        boolean checkStatus = false;
        #define.dirhams("Dirhams")

        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)
            {
                testLoc = real2double(_test);
                numOfPower = testLoc 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)
        {
            testLoc = real2double(test);
            numOfTenths = testLoc div 10;

            returntxt = returntxt + ' ' + tenths[numofTenths];
            numOfTenths = numOfTenths mod 10;
            test = real2int(test) mod 10;
        }
        if (test >= 1)
        {
            numOfTenths = real2int(test);
            returntxt = returntxt + ' ' + ones[numOfTenths];
        }

        if (numOfPennies)
        {
            returntxt =  returntxt +' Qatari Riyal and';
        }
        if (numOfPennies >= 100)
        {
            numOfTenths = numOfPennies div 100;
            returntxt =  returntxt +' '+ ones[numofTenths]+ ' ' +hundreds;
            numOfTenths = numOfTenths mod 100;
            numOfPennies = numOfPennies mod 100;
            checkStatus = true;
        }

        if (numOfPennies >= 20 && numOfPennies<=99)
        {
            numOfTenths = numOfPennies div 10;
            returntxt =  returntxt +' '+ tenths[numofTenths];
            numOfTenths = numOfTenths mod 10;
            numOfPennies = numOfPennies mod 10;
            checkStatus = true;
        }

        if (numOfPennies >= 1)
        {
            numOfTenths = real2int(numOfPennies);
            returntxt = checkStatus == true ? returntxt + ' ' + ones[numOfTenths] : returntxt + ' ' + ones[numOfTenths] + ' ' + #Dirhams + ' only ';
            checkStatus = true;
        }
        if (numOfPennies == 0 && !checkStatus)
        {
            returntxt = returntxt + ' ' + " Qatari Riyal Only";//+' '+"@SYS2068";
        }



        return   returntxt ;//+ ' ' + #Dirhams + ' only ';
    }

Comments

Popular posts from this blog

Getting Workflow Approvers In Dynamics AX (AX 2012)

Creating a numbersequence in form level in ax 2012

AX 2012 R3 Line by line invoicing the sales order using X++ code