Generate number Sequence
Suppose we want create number sequence for Test field on form in General ledger module
Consideration: EDT-Test, Table-TestTable and Form- TestTable
Step1. Create new EDT with name Test
Step 2. Modify load module() method on NumberSeqModuleLedger class
{
datatype.parmDatatypeId(extendedTypeNum(Test));
datatype.parmReferenceHelp(literalStr("Test"));
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmWizardHighest(999);
datatype.parmSortField(30);
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
}
Step 3.Create a method on LedgerParameters Table
client server static NumberSequenceReference numRefTest()
{
return NumberSeqReference::findReference(extendedTypeNum(Test));
}
Step 4.Write and run following job
static void NumberSeqLoadAll(Args _args)
{
NumberSeqApplicationModule::loadAll();
}
Step 5.Then run the wizard
Organization Administration -> CommonForms -> Numbersequences->Numbersequences-> Generate -> run the wizard.
Step 6.Now we have to check the number sequence is correctly working for that write a job:
static void NumSeq(Args _args)
{
NumberSeq numberSeq;
Test num;
;
numberSeq = NumberSeq::newGetNum(ProjParameters:: numRefTest ());
num = numberSeq.num();
info(num);
}
Step 7.Now we want that Number Sequence in form level(Test Table):
Write below code in class declaration
public class FormRun extends ObjectRun
{
NumberSeqFormHandler numberSeqFormHandler;
}
Step 8.Write the NumberSeqFormHandler() in form methods node.
NumberSeqFormHandler numberSeqFormHandler()
{
if (!numberSeqFormHandler)
{
numberSeqFormHandler = NumberSeqFormHandler::newForm(LedgerParameters:: numRefTest ().NumberSequenceId,
element,
TestTable_DS,
fieldNum(TestTable, Test)
);
}
return numberSeqFormHandler;
}
Step 9.Write the Create(),Delete(),Write() , Validate Write(),Link Active() on the Data source methods node.
Create() Method
void create(boolean append = false,
boolean extern = false)
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(append);
if (!extern)
{
element.numberSeqFormHandler().formMethodDataSourceCreate(true);
}
}
Delete() Method
public void delete()
{
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
}
Write()Method
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
Validate Write() Method
public boolean validateWrite()
{
boolean ret;
ret = super();
ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;
if (ret)
{
TestTable.validateWrite();
}
return ret;
}
Link Active() Method
public void linkActive()
{
;
element.numberSeqFormHandler().formMethodDataSourceLinkActive();
super();
}
Step 10.Finally add Close() method on form
void close()
{
if (numberSeqFormHandler)
{
numberSeqFormHandler.formMethodClose();
}
super();
}
Thanks. I am successfully able to create numseq by following your post.
ReplyDeletewhat is the process in STEP 5..why we need to do it?
ReplyDeleteare we using it in class?
This comment has been removed by the author.
ReplyDeleteMs Priya ,Step 5 is mandatory because u should add your created number sequence to Account Receivable or Accounts payable Modules via that wizard!
ReplyDeleteHope this clears your doubt!
I am getting error in 6th steps saying numRefTest is not a class method.
ReplyDeletewhat is ProjParameters should i change it?