Search your query

Wednesday, November 5, 2025

Amount to Amount in Words (ARABIC) || GLOBAL Class Extension || Numerals To Text in Arabic

X++ Code for Numeral to Text in Arabic Language.


[ExtensionOf(classStr(Global))]

static class Global_OurModelName_Extension

{

    static TempStr numeralsToArabicTxt(real _num)

    {

        int     numOfPennies = any2int(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;

        int     fils;


        str     zero;

        str     comma;

        str     and;

        str     cent;


        real modOperator(real a1, real a2)

        {

            int tmpi;

            real tmp1, tmp2;


            tmp1 = a1 / a2;

            tmpi = real2int(tmp1);

            tmp2 = tmpi;

            return (tmp1 - tmp2)*a2;

        }


        str doubleDigit2ARTxt(real doubledigit,boolean _pennies = false)

        {

            str     txt;

            int     firstDigit;

            real    tempdigit;


            //if (_pennies)

            //{

            //    firstDigit = doubledigit * 10;

            //    doubledigit = doubledigit * 100;


            //    if (!firstDigit)

            //    {

            //        doubledigit = doubledigit mod 10;

            //        //txt = zero + " " + ones[doubledigit];

            //        txt = ones[doubledigit];

            //        return txt;

            //    }

            //}


            tempdigit = doubledigit;

            

            if (tempdigit >= 20)

            {

                tempdigit = tempdigit div 10;

                txt = tenths[tempdigit];

                doubledigit = doubledigit mod 10;

            }

            

            if (doubledigit >= 1)

            {

                txt = txt ?  (ones[doubledigit] + and + txt) : ones[doubledigit];

            }


            return txt;

        }


        real checkPower(real  _test,int64 _power)

        {

            int64   numOfPower;


            if (_test >= _power)

            {

                numOfPower = _test div _power;


                if (numOfPower >= 100)

                {

                    temp = numOfPower div 100;


                    if(temp > 9)// The validation was previously on 2

                    {

                        returntxt = returntxt ? (returntxt + and + ones[temp] + ' ' + hundreds) :(returntxt + ' ' + ones[temp] + ' ' + hundreds);

                    }

                    else

                    {

                        switch(temp)

                        {


                            Case 1:

                                returntxt = returntxt ? (returntxt + and + hundreds) : (returntxt + ' ' + hundreds);

                                break;

                            Case 2:

                                // TO DO need to insert a label for two hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "مائتين") :   returntxt + ' ' + "مائتين";

                                break;

                            Case 3:

                                // TO DO need to insert a label for three hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "ثلاثمائة") :   returntxt + ' ' + 'ثلاثمائة';

                                break;

                            Case 4:

                                // TO DO need to insert a label for four hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "اربعمائة") :   returntxt + ' ' + "اربعمائة";

                                break;

                            Case 5:

                                // TO DO need to insert a label for five hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "خمسمائة") :   returntxt + ' ' + "خمسمائة";

                                break;

                            Case 6:

                                // TO DO need to insert a label for six hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "ستمائة") :   returntxt + ' ' + "ستمائة";

                                break;

                            Case 7:

                                // TO DO need to insert a label for seven hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "سبعمائة") :   returntxt + ' ' + "سبعمائة";

                                break;

                            Case 8:

                                // TO DO need to insert a label for eight hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "ثمانمائة") :   returntxt + ' ' + "ثمانمائة";

                                break;

                            Case 9:

                                // TO DO need to insert a label for nine hundred in Arabic

                                returntxt = returntxt ? (returntxt + and + "تسعمائة") :   returntxt + ' ' + "تسعمائة";

                                break;


                        }

                    }

                    numOfPower = numOfPower mod 100;

                }


                if (numOfPower > 2 && _power > 100)

                {

                    returntxt = returntxt ?  (returntxt + and + doubleDigit2ARTxt(real2int(numOfPower))) : (returntxt  + ' ' + doubleDigit2ARTxt(real2int(numOfPower)));

                }

                else

                {

                    if(returntxt && numOfPower)

                    {

                        returntxt = returntxt + and + ' ';

                    }

                }


                switch(_power)

                {

                    case 1000000000000 :

                    {

                        if( numOfPower == 2)

                        {

                            // TO DO need to insert a label for two trillions in Arabic

                            returntxt = returntxt + "تريليونين ";

                        }

                        else

                        {

                            returntxt = numOfPower > 10 ||  numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + trillions) : (returntxt + ' ' + "تريليونات");

                        }

                        _test = modOperator(_test, 1000000000000.00);

                        break;

                    }

                    case 1000000000 :

                    {

                        if( numOfPower == 2)

                        {

                            // TO DO need to insert a label for two billions in Arabic

                            returntxt = returntxt + "مليارين";

                        }

                        else

                        {

                            returntxt = numOfPower > 10 ||  numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + billions) : (returntxt + ' ' + "مليارات");

                        }

                        _test = modOperator(_test, 1000000000);

                        break;

                    }

                    case 1000000 :

                    {

                        if( numOfPower == 2)

                        {

                            // TO DO need to insert a label for two Millions in Arabic

                            returntxt = returntxt + "مليونين";

                        }

                        else

                        {


                            returntxt = numOfPower > 10 || numOfPower == 1 || numOfPower == 0 ? (returntxt + ' ' + millions) : (returntxt + ' ' + "ملايين");


                        }

                        _test = modOperator(_test, 1000000);

                        break;

                    }

                    case 1000 :

                    {

                        if( numOfPower == 2)

                        {

                            // TO DO need to insert a label for two Thousands' in Arabic

                            returntxt = returntxt + "ألفين";

                        }

                        else

                        {

                            returntxt = numOfPower > 10 ||  numOfPower == 1 || numOfPower == 0  ? (returntxt + ' ' + thousands) : (returntxt + ' ' + "الاف");

                        }

                        _test = modOperator(_test, 1000);

                        break;

                    }

                    case 100 :

                    {

                        switch (numOfPower)

                        {

                            case 2:

                                returntxt = returntxt + "مائتين";

                                break;


                            case 3:

                                returntxt = returntxt +"ثلاثمائة";

                                break;


                            case 4:

                                returntxt = returntxt + "اربعمائة";

                                break;


                            case 5:

                                returntxt = returntxt + "خمسمائة";

                                break;


                            case 6:

                                returntxt = returntxt + "ستمائة";

                                break;


                            case 7:

                                returntxt = returntxt + "سبعمائة";

                                break;


                            case 8:

                                returntxt = returntxt + "ثمانمائة";

                                break;


                            case 9:

                                returntxt = returntxt + "تسعمائة";

                                break;


                            default:

                                returntxt = returntxt + ' ' + hundreds;

                        }


                        _test = modOperator(_test, 100);

                        break;

                    }

                }


            }

            return _test;


        }


        infolog.language("AR");


        and     = ' ' + "@SYS5534" + ' ';

        comma   = "درهم"; // United Arab Emirates

        comma =  "ريـال"; // Saudi Arabia

        

        //comma = "@SYS80142";

        

        zero    = "@SYS2068";

        cent    = "فلس";    // United Arab Emirates

        cent    = "هللــه"; // Saudi Arabia


        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(returntxt && test)

        {

            returntxt = returntxt + and + doubleDigit2ARTxt(real2int(test));

        }

        else

        {

            returntxt = returntxt + ' ' + doubleDigit2ARTxt(real2int(test));

        }


        if(numOfPennies)

        {

            //Removing the stars and addin the pound and cent wording to fullfil the Egyptian requierment

            returntxt = ' فقط ' + returntxt + ' ' + comma + ' ' + and + doubleDigit2ARTxt(numOfPennies,true) + ' ' + cent + ' لاغير ';

            //returntxt = '***' + returntxt + ' ' + comma + ' ' + doubleDigit2ARTxt(numOfPennies,true);


        }

        else

        {

            //Removing the stars and the zeros if no cents to fullfil the Egyptian requierment

            returntxt = ' فقط ' + returntxt + ' ' + comma + ' لاغير ';


            //returntxt = '***' + returntxt + ' ' + comma + ' ' + zero + ' ' + zero;

        }


      

        return returntxt;

    }

}

No comments:

Post a Comment