Friday, October 5, 2012

Changing numerals to text in Indian Format amount in words India


Changing numerals to text in Indian Format

static TempStr numerals2Txt_IN(real _num)
{

int numOfPennies = (decround(frac(_num), 2) * 100) mod 100;

real test = _num - frac(_num);
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_ruppe('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_ruppe;

}

return returntxt;

}

Tuesday, September 4, 2012

Get day, month and year from date in axapta x++

Get day, month and year from date in axapta x++
Hi, everybody!
In Dynamics AX, sometimes we need to get the day, month or year from a date and we don't know how to do this... but we can do this easily...

//Get day from date
dayOfMth(systemdateget())

//Get month from date
mthOfYr(systemdateget())

//Get year from date
year(systemdateget())

Good DaXing!

Friday, August 31, 2012

Cross-company Support In Ax2012

Cross-company Support
Microsoft Dynamics AX can have multiple companies in one data base. Ex: container conCompanies = [ 'cee', 'ceu' ]; custTable custTable;
while select crossCompany : conCompanies custTable
{
print custTable.accountNum;
}
pause;

Eventing In Ax2012

Eventing
Lets the user use a publisher and subscriber model when modifying MDAX2012.
Events can be modeled in the AOT or be used as a programming construct and can be handled in either X++ code or in managed code.
NOTE: Modeled events are only available on classes and not tables or forms.
Eventing Terminology
MDAX2012 events are modeled after the .NET event concepts :
Producer :- The producer is the logic that contains the code that causes a change. This means that it is the entity that emits events.
Consumer :- The consumer is the application code that manifested an interest in being notified when a specific event occurs. This means that it is an entity that receives events.
Event :- An event is a representation of a change that happened in the producer. Microsoft Dynamics AX 6.0 supports Pre and Post events that occur before and after a method is called.
Event Payload :- The event payload is the information that the event carries with it. If a person is hired, for example, the payload includes the employee's name and date of birth, and so on.
Delegate :- A delegate is the definition of the information passed from the producer to the consumer when an event happens.
Event Handlers
Event handlers are methods that are called when the delegate is called, directly through code (for the coded events) or from the environment (in the modeled events). The relationship between the delegate and the handlers can be maintained in code or in the AOT.
Delegate is a keyword.
When program conditions meet the programmer's criteria for the event, the X++ code can call the delegate, and that causes the delegate to call all the event handler methods that are added to the delegate.
To create a delegate, right-click the class and select New->Delegate.
Adding Handlers in the AOT
The user must identify a static method to handle the event on the delegate. However, when adding event handlers from code, described in the following material, instance methods are also applicable as event handlers. Event handlers can be added to the delegate by dragging the event handler to the delegate node that represents the event to be handled.
Adding Handlers in Code
Use special X++ syntax to remove or add event handlers to events. The delegate name appears on the left side of the += operator.
private void AddStaticHandler()
{
;
this.MyDelegate += eventhandler
(Subscriber::MyHandler);
}
Pre and Post Events
You can subscribe an event handler to automatically run immediately before a method is run.
The event handler can change the parameter values before they are entered into the method. You can also subscribe an event handler to run immediately after a method is run. The event handler can change the value that is returned by the method, before the return value is received by the caller of the method.

Event handlers for these before and after events are visible in the AOT as sub nodes on the methods to which they apply.
Primary Index
A primary key is one or more columns that uniquely identify one record in a table from all the other records. A primary index is a unique index for a table that defines the primary key for that table. To set an index as a unique index, set the index property Allow Duplicates to No.
To set the primary index on a table, open the property sheet for the table. The PrimaryIndex property allows any unique index with a key that is mandatory and cannot be edited.
Surrogate Key
When a primary index is not specified, Microsoft Dynamics AX 2012 uses a Surrogate Key as the primary index. This key is the RecId field and, if the table is saved per company, the DataAreaId. The surrogate key is used on many relations between tables.

Tables Vs Classes In Ax2012

Tables as Classes
A table can be considered an independent class used to address fields or methods defined on that table. In fact when a table is instantiated, it is done so with the system class called xRecord. This class contains methods called when committing record changes to the database and some other system methods that operate on records.
Differences between tables and classes include the following:
• A place for a table buffer is automatically assigned in a table (in classes the new method is used).
• Fields in tables are public; they can be referred to from everywhere.
• Fields in tables can be referred to directly; for example, in a report, whereas variables in a method can only be referred to using accessor methods.
Table Code
The following example illustrates how table code differs from code for a class.
str text;
text = CustTable.name; // Fields in a table are public
print CustTable.name; // Fields in a table can be referred to directly

X++ Attributes In Ax2012

X++ Attributes
MDAX-2012 supports attributes being assigned to X++ code. This allows for a rich set of metadata to be built. It describes methods and types that are defined within X++ code. Attributes are defined as classes that are derived from the SysAttribute class. The following code for the SampleAttribute class is an example of an attribute class:
public class SampleAttribute extends SysAttribute
{
str sMetadata; // A field in classDeclaration.
public str GetMetadata()
{
return sMetadata;
}
public void new(str _sMetadata)
{
super();
sMetadata = _sMetadata;
}
}
Attributes can then be used on other classes and methods. The following example shows the structure of a new Attribute class, AuthorAttribute:
class AuthorAttribute extends SysAttribute
{
str author;
public str Author()
{
return author;
}
public void new(str _author)
{
super();
author = _author;
}
}
In the following example, AuthorAttribute is used to decorate other classes and methods:
[AuthorAttribute("Isaac")]
public class MyClass()
{
...
}
[AuthorAttribute("Isaac")]
void MyMethod()
{
...
}