Microsoft
Dynamics AX has a number sequence framework to generate alphanumeric number
sequences that are used to identify transaction documents such as sales orders,
purchase order and others.
We can
create number sequence with existing module or new module. For both condition,
first we create a table “BookTable” with two fields “BookId” and “Name” and
create index on table called “BookIdx” and drag-drop “BookId” field on it.
Figure 1. Create BookTable
Create a
form “BookForm” and drag-drop “BookTable” in the datasource and create design
according figure 2.
Figure 2. Create BookForm
Now, we create
number sequence with existing module or new module.
1.Create a EDT that extends num and
Add a relation in EDT.
Figure
3. Create EDT
2.Edit a class
NumberseqReference_CustTable and modify “loadModule()” method
numRef.dataTypeId = typeId2ExtendedTypeId(typeid(Book_edt));
numRef.referenceHelp="Unique key for the Complaint Report";
numRef.wizardContinuous = true;
numRef.wizardManual = NoYes::No;
numRef.wizardAllowChangeDown = NoYes::No;
numRef.wizardAllowChangeUp= NoYes::No;
numRef.wizardHighest= 999999;
numRef.sortField = 19;
this.create(numRef);
3.Modify CustParameters Table and Add
methods.
static client server NumberSequenceReference numRefComplaintId()
{
return
NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(Book_edt)));
}
4.In the “BookForm” classDeclaration
declare NumberSeqFormHandler.
5.On “BookForm” under “BookTable” datasource – Override write(),
Delete(), create() methods like:
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
public void delete()
{
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
}
public void create(boolean _append =
false)
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(_append);
element.numberSeqFormHandler().formMethodDataSourceCreate();
}
6.create method on “BookForm” form methods.
NumberSeqFormHandler numberSeqFormHandler()
{
if (!numberSeqFormHandler)
{
numberSeqFormHandler
= NumberSeqFormHandler::newForm(CustParameters::numRefComplaintId().NumberSequence,
element, BookTable.dataSource(), fieldnum(BookTable, BookId));
}
return numberSeqFormHandler;
}
7. Goto>Basic>Setup>Number
sequences>create new Number sequence code and set fields according to you
8. Goto> References>find new
number sequence reference and set number sequence code field.
2. Create
number sequence with new module
1.Create a EDT that extends num and
Add a relation in EDT
2.Modify numseqmodule Enum and a
element “Book”.
3.Create a class NumberseqReference_Book that extend NumberSeqReference class and Add loadModule() method and numberSeqModule().
protected void loadModule()
{
NumberSequenceReference numRef;
;
/* Setup Book Details */
numRef.DataTypeId = typeId2ExtendedTypeId(typeid(Book_edt));
numRef.ConfigurationKeyId = configurationkeynum(Test);
numRef.ReferenceHelp ="Unique key for test identification. ";
numRef.WizardManual = NoYes::No;
numRef.WizardAllowChangeDown = NoYes::No;
numRef.WizardAllowChangeUp = NoYes::No;
numRef.SortField = 1;
this.create(numRef);
}
public static client server
NumberSeqModule numberSeqModule()
{
;
return NumberSeqModule::Book;
}
4.Create “BookParameters” Table and Add methods
client server static
NumberSequenceReference numRefBookId()
{
return
NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(Book_edt)));
}
Figure
4. Create BookParameters Table
5.In the “BookForm” classDeclaration
declare NumberSeqFormHandler.
6.On “BookForm” under “BookTable” datasource – Override write(),
Delete(), create() methods like:
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
public void delete()
{
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
}
public void create(boolean _append =
false)
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(_append);
element.numberSeqFormHandler().formMethodDataSourceCreate();
}
7.create method on “BookForm” form methods.
NumberSeqFormHandler
numberSeqFormHandler()
{
if (!numberSeqFormHandler)
{
numberSeqFormHandler =
NumberSeqFormHandler::newForm(BookParameters::numRefBookId().NumberSequence,
element, BookTable.dataSource(), fieldnum(BookTable, BookId));
}
return numberSeqFormHandler;
}
8. Goto>Basic>Setup>Number
sequences>create new Number sequence code and set fields according to you
9. Goto> References>find new
number sequence reference and set number sequence code field.
3. In Dynamics Ax 2012 it is require that Create
a new job with the following code and run it to call all loadModule:
static void NumberSeqLoadAll(Args _args)
{
NumberSeqApplicationModule::loadAll();
}