Wednesday, November 22, 2017

HOW TO DISPLAY NUMBERS INTO TEXT IN INVOICE BILL IN INDIAN FORMAT EG. FIVE THOUSAND ETC. : MICROSFOT DYNAMICS AX 2009 AX 2012 X++ CODE

HOW TO DISPLAY NUMBERS INTO TEXT IN INVOICE BILL IN INDIAN FORMAT EG. FIVE THOUSAND ETC. : MICROSFOT DYNAMICS AX 2009 AX 2012 X++ CODE


public  str numeralsToTxt(real totalAmount)
{
    int numOfPennies = (decround(frac( totalAmount), 2) * 100) mod 100;
    real test =   totalAmount - frac(  totalAmount);

    int numOfTenths;
    str 20 ones[19], tenths[9], hundreds, thousands, lakhs, crores;

    int64 temp;
    str 200 returntxt;
    str 200 pennytxt;
    int penny;

    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 10000000 :
    {
    returntxt = returntxt + ' ' + Crores;
    _test = modOperator(_test, 10000000);
    break;
    }
    case 100000 :
    {
    returntxt = returntxt + ' ' + lakhs;
    _test = modOperator(_test, 100000);
    break;
    }
    case 1000 :
    {
    returntxt = returntxt + ' ' + thousands;
    _test = modOperator(_test, 1000);
    break;
    }
    case 100 :
    {
    returntxt = returntxt + ' ' + hundreds;
    _test = modOperator(_test, 100);
    break;
    }
    }
    }
    return _test;
    }

    #Define.text_1('One')
    #Define.text_2('Two')
    #Define.text_3('Three')
    #Define.text_4('Four')
    #Define.text_5('Five')
    #Define.text_6('Six')
    #Define.text_7('Seven')
    #Define.text_8('Eight')
    #Define.text_9('Nine')
    #Define.text_10('Ten')
    #Define.text_11('Eleven')
    #Define.text_12('Twelve')
    #Define.text_13('Thirteen')
    #Define.text_14('Fourteen')
    #Define.text_15('Fifteen')
    #Define.text_16('Sixteen')
    #Define.text_17('Seventeen')
    #Define.text_18('Eighteen')
    #Define.text_19('Nineteen')
    #Define.text_20('Twenty')
    #Define.text_30('Thirty')
    #Define.text_40('Forty')
    #Define.text_50('Fifty')
    #Define.text_60('Sixty')
    #Define.text_70('Seventy')
    #Define.text_80('Eighty')
    #Define.text_90('Ninety')
    #Define.text_100('Hundred')
    #Define.text_1000('Thousand')
    #Define.text_100000('Lakh')
    #Define.text_10000000('Crore')
    #Define.text_and('Rupees and')
    #Define.text_paise('Paise Only')
    #Define.text_RUPEE('Rupees Only')

    ones[1] = #text_1;
    ones[2] = #text_2;
    ones[3] = #text_3;
    ones[4] = #text_4;
    ones[5] = #text_5;
    ones[6] = #text_6;
    ones[7] = #text_7;
    ones[8] = #text_8;
    ones[9] = #text_9;
    ones[10] = #text_10;
    ones[11] = #text_11;
    ones[12] = #text_12;
    ones[13] = #text_13;
    ones[14] = #text_14;
    ones[15] = #text_15;
    ones[16] = #text_16;
    ones[17] = #text_17;
    ones[18] = #text_18;
    ones[19] = #text_19;

    tenths[1] = 'Not used';
    tenths[2] = #text_20;
    tenths[3] = #text_30;
    tenths[4] = #text_40;
    tenths[5] = #text_50;
    tenths[6] = #text_60;
    tenths[7] = #text_70;
    tenths[8] = #text_80;
    tenths[9] = #text_90;

    hundreds = #text_100;
    thousands = #text_1000;
    lakhs = #text_100000;
    crores = #text_10000000;



    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 = real2int(test);
    returntxt = returntxt + ' ' + ones[numOfTenths];
    }

    if (numOfPennies)
    {
    if (numOfPennies >= 20)
    {
    penny = numOfPennies div 10;
    pennytxt = tenths[penny];
    numOfPennies = numOfPennies mod 10;
    }
    if (numOfPennies >= 1)
    {
    pennytxt = pennytxt + ' ' + ones[numOfPennies];
    }
    returntxt = returntxt + ' ' + #text_and + ' ' + pennytxt + ' ' +#text_paise;
    }
    else
    {
    returntxt = returntxt + ' ' + #text_RUPEE;
    }

    return returntxt;
}

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...