Convert amount to words in Ax 2012

 

static void John_AmountToWords(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”));
}

Changing Form color based on the current Company in Ax 2012

Changing Form color based on the current Company

By default, all the forms look the same. This can be confusing for those super users that switch between companies preforming different task.

Well I came across a neat little trick that I am going to post here. I am not sure how well this will work in Dynamics AX 4.0, but for AX 3.0 it works great.

Basically you override the SysSetupFormRun.run() method. Below is some sample code:

public void run()
{
;
super();

// Set the color scheme of this instance of te SysFormRUn to RGB
this.design().colorScheme(FormColorScheme::RGB);

// Switch and based on the current company change colors, or not for default
switch (curext())
{

case ‘DEM’:
this.design().backgroundColor(WinAPI::navisionColorRed());
break;

case ‘dat’:
this.design().backgroundColor(WinAPI::navisionColorBeige());
break;

default:
break;

}
}

Now when you switch between the two companies and launch a form, you will see visually, that you are in a different company. Granted the WinAPI::navisionColorBeige(), ..Blue(), ..Red() are not that great looking, but still you get the idea. And if you know RGB colors, then you can supply really any valid RGB color you like!

Anyway this is a neat little trick that is ran each time a new instance of a given form (other that the main menu) is ran.