Number Sequence Creation Through Code
Suppose we want create
number sequence for field on form in General ledger module
Consideration: EDT-NumberseqTest,
Table-NumberseqTestTable and Form- NumberseqTestTable
Step1. Create
new EDT with name NumberseqTest
Step 2. Modify load module() method
on NumberSeqModuleLedger class
{
datatype.parmDatatypeId(extendedTypeNum(NumberseqTest));
datatype.parmReferenceHelp(literalStr("NumberseqTest"));
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
numRefNumberseqTest()
{
return NumberSeqReference::findReference(extendedTypeNum(NumberseqTest));
}
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;
NumberseqTest num;
;
numberSeq =
NumberSeq::newGetNum(ProjParameters:: numRefNumberseqTest ());
num =
numberSeq.num();
info(num);
}
Step 7.Now
we want that Number Sequence in form level(NumberseqTest 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:: numRefNumberseqTest
().NumberSequenceId,
element,
NumberseqTestTable_DS,
fieldNum(NumberseqTestTable,
NumberseqTest)
);
}
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)
{
NumberseqTestTable.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();
}
thank you
ReplyDelete