Hi all,
Hope you're doing fine.
I had to face a business need that requires to use several sequence number on the same field based on some selection from a list or an Enum, I didn't know how to do it at first, but I managed to do it.. so I'm sharing it with you, I hope it helps
1- first you need to check if the targeted field has number sequence assigned or not, if yes… You need to either cancel the setup for this field or just make the number sequence manual
2- you need to create N number of EDT equals N number of sequence numbers you'll use
3- find the number sequence module you want your number sequences to belong to it and create N number of parameters data type like below:
datatype.parmDatatypeId(extendedTypeNum("EDTname"));
datatype.parmReferenceHelp(literalStr("EDT Name")); //this a string, so you write it with quotes like this "Sales Id", it's the reference help so describe it like you want
datatype.parmWizardIsContinuous(true);
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmSortField(52); // that's not a constant value, just check for the last parameter number and add 1
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
you can change any value according to your business case
4- create a job that loads the number sequence module like below:
//assuming the number sequence module is NumberSeqModuleCustomer
NumberSeqModuleCustomer numberSeqMod;
numberSeqMod = new NumberSeqModuleCustomer();
numberSeqMod.load();
//run the job
5- create N number of methods in the table which holds the targeted field like below:
static client server NumberSequenceReference "method name"()
{
return NumberSeqReference::findReference(extendedTypeNum("EDT name"));
}
6- after you check for the selection of your list or Enum, assign the field like below:
"TableName"."FieldName"= NumberSeq::newGetNum("TableName"::"MethodNameforspecificEDT"(),true).num();