Skip to main content

Number sequence with existing module and new module

Number sequence customization in Dynamics 365

Create a number sequence in a standard module

Step 1: Create new EDT

Step 2: Add a new code block to the loadModule in the NumberSeqModuleXXX class

Step 3: Add a new static method to the parameters table of the module to get the number sequence reference

Using Extension

[ExtensionOf(classStr(NumberSeqModuleCustomer))] final class NumberSeqModuleCustTest_Extension
{
protected void loadModule()
{
NumberSeqDatatype datatype = NumberSeqDatatype::construct();
next loadModule();
datatype.parmDatatypeId(extendedTypeNum(TestId));
datatype.parmReferenceHelp(literalStr(‘Test ID’));
datatype.parmWizardIsContinuous(false);
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmSortField(1);
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
}
}

[ExtensionOf(tableStr(CustParameters))] final class CustParametersTest_Extension
{
client server static NumberSequenceReference numRefTestId()
{
return NumberSeqReference::findReference(extendedTypeNum(TestId));
}
}

Create a number sequence in a new module

Step 1: Add a new element to the NumberSeqModule base enum.

Step 2: Create a NumberSeqModule* class for our module.

Step 3: To add a new element to the NumberSeqModule Base Enum we can use an extension.

Step 4: Now we need to create a new class extends with NumberSeqApplicationModule
class NumberSeqModuleTest extends NumberSeqApplicationModule
{
protected void loadModule()
{
NumberSeqDatatype datatype = NumberSeqDatatype::construct();
datatype.parmDatatypeId(extendedTypeNum(TestId));
datatype.parmReferenceHelp(literalStr(‘Test ID’));
datatype.parmWizardIsContinuous(false);
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmSortField(1);
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
}

public NumberSeqModule numberSeqModule()
{
return NumberSeqModule::Test;
}

[SubscribesTo(classstr(NumberSeqGlobal),delegatestr(NumberSeqGlobal, buildModulesMapDelegate))]
static void buildModulesMapSubsciber(Map numberSeqModuleNamesMap)
{
NumberSeqGlobal::addModuleToMap(classnum(NumberSeqModuleTest), numberSeqModuleNamesMap);
}
}
Job: (To load all module number sequences)
static void Test_NumSeqLoad(Args _args)
   {
      NumberSeqApplicationModule::loadAll();
   }

Comments

Popular posts from this blog

[D365/AX7] How to: Create and Use number sequence

[D365/AX7] How to: Create number sequence Posted on January 7, 2018 Updated on January 11, 2018 Number sequences are used to generate readable, unique identifiers for master data records and transaction records that require identifiers. A master data record or transaction record that requires an identifier is referred to as a reference. On this example, we are going to create a new number sequence for customer group. Create a new class that extends the NumberSeqModuleCustomer class and then create the method loadModule_Extension and add the following code: class NumberSeqModuleCustomer_CFS extends NumberSeqModuleCustomer {         public void loadModule_Extension()         {                 NumberSeqDatatype datatype = NumberSeqDatatype::construct();          ...

CREATE AND POSTING PURCHASE ORDER THROUGH X++ IN AX 2012 DYNAMICS AX

CREATE AND POSTING PURCHASE ORDER THROUGH X++ IN AX 2012 DYNAMICS AX   static void PurchOrderCreate(Args _args)   { NumberSeq numberSeq; PurchTable purchTable; PurchLine purchLine; ttsBegin; numberSeq = NumberSeq::newGetNum(PurchParameters::numRefPurchId()); numberSeq.used(); purchTable.PurchId = numberSeq.num(); purchTable.initValue(); purchTable.initFromVendTable(VendTable::find('1001')); if (!purchTable.validateWrite()) { throw Exception::Error; } purchTable.insert(); purchLine.PurchId = purchTable.PurchId; purchLine.ItemId = '1205'; purchLine.createLine(true, true, true, true, true, true); ttsCommit; info(strFmt( "Purchase order '%1' has been created", purchTable.PurchId)); } .............................................. static void PurchOrderPost(Args _args) { PurchFormLetter purchFormLetter; PurchTable purchTable; purchTable = PurchTable::find('000409'); purchFormLetter = PurchFormLetter::construct( D...