Usecase
Some of the customers want to use multiple number sequence for single table that is not currently available in AX 2009.
i.e. In invent module to create different types of items one required to use different sequence, here addon comes into picture.
Technical Section
Create new class “NumberSeqDialog” and add methods as listed below.
class NumberSeqDialog extends RunBase
{
NumberSequenceCode parentCode;
NumberSequenceCode selectedCode;
DialogField dialogFieldNumberSeq;
Dialog dialog;
}
public Object dialog()
{
;
dialog = super();
dialog.caption("Select number sequance");
dialog.allowUpdateOnSelectCtrl(true);
dialogFieldNumberSeq = dialog.addField(TypeID(NumberSequenceCode),"Select Number Sequence: ");
return dialog;
}
public void dialogPostRun(DialogRunbase _dialog)
{
;
_dialog.formRun().controlMethodOverload(true);
_dialog.formRun().controlMethodOverloadObject(this);
super(_dialog);
}
Below method will give you answer of populer question
“How to override Control’s event method?”
Also gives you an idea of
“How to create lookup field on Dialog?”
public void Fld1_1_lookup()
{
Object control = dialog.formRun().controlCallingMethod();
;
NumberSequenceTable::lookupNumberSequenceCode(control, this.parmParentCode());
}
public boolean getFromDialog()
{
;
this.selectedNumberSeqCode(dialogFieldNumberSeq.value());
return true;
}
Below to method say, if you don’t want to use “pack unpack” create me like this!!!
container pack()
{
return connull();
}
boolean unpack(container _packedValues)
{
return true;
}
NumberSequenceCode parmParentCode(NumberSequenceCode _parentCode = parentCode)
{
parentCode = _parentCode;
return parentCode;
}
NumberSequenceCode selectedNumberSeqCode(NumberSequenceCode _selectedCode = selectedCode)
{
selectedCode = _selectedCode;
return selectedCode;
}
Modify NumberSequenceTable table
Add below fields to NumberSequenceTable
“NumberSequenceParent” to set parent Number sequence. EDT, which will refer to NumberSequenceCode.
“Search for parent” to NoYes type enum field.
So finally it will look like,
Create instance of above class in “NumberSeqFormHandler” class.
Put below code in to newForm method
if(NumberSequenceTable::find(_numberSequenceCode).SearchForParent)
{
numberSeqDialog = new NumberSeqDialog();
numberSeqDialog.parmParentCode(_numberSequenceCode);
if(numberSeqDialog.prompt())
{
_numberSequenceCode = numberSeqDialog.selectedNumberSeqCode();
}
}
So after adding above code your newForm method will look like,
static NumberSeqFormHandler newForm(NumberSequenceCode _numberSequenceCode,
ObjectRun _callerForm,
FormDataSource _formDataSource,
fieldId _fieldIdNum,
boolean _dontThrowOnMissingRefSetUp = false
)
{
NumberSeqFormHandler numberSeqFormHandler;
NumberSeqDialog numberSeqDialog;
;
if (!_formDataSource || !_fieldIdNum)
throw error(strfmt("@SYS70841",funcname()));
//<Intech>
if(NumberSequenceTable::find(_numberSequenceCode).SearchForParent)
{
numberSeqDialog = new NumberSeqDialog();
numberSeqDialog.parmParentCode(_numberSequenceCode);
if(numberSeqDialog.prompt())
{
_numberSequenceCode = numberSeqDialog.selectedNumberSeqCode();
}
}
//</Intech>
numberSeqFormHandler = NumberSeqFormHandler::construct(_formDataSource);
numberSeqFormHandler.parmNumberSequenceCode(_numberSequenceCode);
numberSeqFormHandler.parmFormDataSource(_formDataSource);
numberSeqFormHandler.parmFieldIdNum(_fieldIdNum);
numberSeqFormHandler.parmDontThrowOnMissingRefSetUp(_dontThrowOnMissingRefSetUp);
return numberSeqFormHandler;
}
Direction of use
First of all you have to decide on which form you want to use multiple number sequence. Let’s say you have chosen InventTable and want to create items on item details page with different number sequence.
Next step is, go to Basic Setup> Number Sequences. Find which number sequence is currently y in use to create new item. Let’s say its “Inv_60”, Remember this Number Sequence will be treat as BASE or say PARENT number sequence.
Now, create different number sequences, as I have created “RM_61”, “FG_62” and “SFG_63” . Select “Inv_60” against these create number sequences.
One more thing required to active this functionality, that is “Search for parent” option must be ticked on setup tab for “Inv_60” number sequence.
Have you done with all above steps?? If yes, you are ready to use this addon, Just go to Item details page. While creating new item it will search Three number sequences 61 to 63 created above.
and pop up with box shown below.
Select number sequence which you want to use for current item.
and pop up with box shown below.
Select number sequence which you want to use for current item.
Furthermore, you want to give Number manually along with auto number sequence. Just select any of the above (61 to 63) as manually. You will be having auto + manually number sequences!!!
No comments:
Post a Comment