Friday, February 27, 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"));
}

No comments:

Post a Comment