Thursday, January 21, 2016

Ax2012 convert figure to text

Below is the code to convert the figure to text : -

static TempStr ESG_numeralsToTxt(Real _num)
{
    int     numOfPennies = frac(_num)*100 mod 100;

    //int     test         = round(_num,0);
    int     test         = _num;
    int     numOfTenths;
    str 20  ones[19], tenths[9], hundreds, thousands, millions, billions;

    int     temp;
    str 200 returntxt;

      int checkPower(int  _test, int _power)
    {
        int     numOfPower;
        ;
           // info("num-->"+ num2str(_num,3,2,1,1));
           // info("_test-->"+ num2str(_test,3,2,1,1));
           // info("int test-->"+ int2str(test));
           //  info("_power-->"+ num2str(_power,3,2,1,1));
           // info("intnumOfPennies -->"+ int2str(numOfPennies));
           // info("test-->"+int2str(test));
        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 1000000 :
                {
                    returntxt = returntxt + ' ' + millions;
                    _test = _test MOD 1000000;
                    break;
                }
                case 1000 :
                {
                    returntxt = returntxt + ' ' + thousands;
                    _test = _test MOD 1000;
                    break;
                }
                case 100 :
                {
                    returntxt = returntxt + ' ' + hundreds;
                    _test = _test MOD 100;
                    break;
                }
            }
        }
        return _test;
    }

   //info(int2str(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";


    test = checkPower(test, 1000000000);
    test = checkPower(test, 1000000);
    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)
    {
        // Jillian - 04 April 2003
        returntxt = returntxt + ' ' + 'and cents';
        if (numOfPennies >= 20)
        {
            temp = numOfPennies DIV 10;
            returntxt = returntxt + ' ' + tenths[temp];
            numOfPennies = numOfPennies MOD 10;
        }
        if (numOfPennies >= 1)
        {
            returntxt = returntxt + ' ' + ones[numOfPennies];
            //numOfPower = numOfPower MOD 10;
        }

        returntxt = returntxt + ' ' + 'only';
        //returntxt = '***' + returntxt + ' ' + "@SYS5534" + ' ' + num2str(numOfPennies,0,0,0,0) + '/100';
        // end
    }
    else
    {
        returntxt = returntxt + ' ' + 'only';
        //returntxt = '***' + returntxt + ' ' + "@SYS5534" + ' ' + '00/100';
    }

    return returntxt;
}

Ax2012 generate number sequence

 Below is the code for generate number sequence :-

    NumberSeq       NumberSeq;
    NumberSequenceTable     numberSequenceTableNum;
    ;

    //NumberSeq = NumberSeq::newGetNum(PurchParameters::numRefShipInfoSeqCode(),true,False);
    numberSequenceTableNum = NumberSequenceTable::findByNaturalKey("SHIP");//find(5637147045);

    numberSeq = NumberSeq::newFromParameters(numberSequenceTableNum.Continuous);

    numberSeq.parmNumberSequenceCode(numberSequenceTableNum.NumberSequence);
    numberSeq.parmNumberSequenceId(numberSequenceTableNum.RecId);
    numberSeq.parmNumTableNum(numberSequenceTableNum);
    numberSeq.parmMakeDecisionLater(false);

    //NumberSeq.used();
    return  numberSeq.num();