Blog

Name is Anant Dubey and the intent to create this blog is to discuss the problems and issues that developer face in the dynamics AX development and to share the new things that come up with the new version of AX.

Friday, 27 February 2015

Get amount in words in ax 2012

Get amount in words in ax 2012

static void amount2words(Args _args)
{
    real amount = 1011.05;
    int numOfPennies = frac(amount)*100 mod 100;
    int test = real2int(round(amount,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";
    }

    info(strFmt("%1",returntxt + " Only"));
}