Keep scrolling down to get the code snippets.
Understand Why using the framework and why we override every single form data source method in this Video:
Code:
In order to use effectively this framework, you will need to, once the Number sequence is added to the appropiate NumberSeqModule:
[ExtensionOf(classStr(NumberSeqModuleRetailParameters))]
internal final class FTDNumberSeqModuleRetailParameters_extension
{
protected void loadModule()
{
next loadModule();
this.ftdAddRestaurantNumSeqs();
}
private void ftdAddRestaurantNumSeqs()
{
this.ftdAddNumberSequence(extendedTypeNum(FTDNumSeqExampleId),
true,
literalStr("@FTDLabels:Id"),
literalStr("@FTDLabels:Id"));
}
private void ftdAddNumberSequence(ExtendedTypeId _edtId,
boolean _perCompany = true,
NumberSequenceRefLabel _numberSeqRefLabel = "",
NumberSequenceRefHelp _numberSeqRefHelp = "",
int _sortField = 1,
boolean _wizardIsContinuous = false,
NoYes _wizardIsManual = NoYes::No,
int _fetchAheadQty = 10,
NoYes _wizardIsChangeDownAllowed = NoYes::No,
NoYes _wizardIsChangeUpAllowed = NoYes::No)
{
NumberSeqDatatype dataType = NumberSeqDatatype::construct();
dataType.parmDatatypeId(_edtId);
if (_numberSeqRefLabel)
{
dataType.parmReferenceLabel(_numberSeqRefLabel);
}
if (_numberSeqRefHelp)
{
dataType.parmReferenceHelp(_numberSeqRefHelp);
}
dataType.parmWizardIsContinuous(_wizardIsContinuous);
dataType.parmWizardIsManual(_wizardIsManual);
datatype.parmWizardfetchAheadQty(_fetchAheadQty);
dataType.parmWizardIsChangeDownAllowed(_wizardIsChangeDownAllowed);
dataType.parmWizardIsChangeUpAllowed(_wizardIsChangeUpAllowed);
dataType.parmSortField(_sortField);
if (_perCompany)
{
dataType.addParameterType(NumberSeqParameterType::DataArea);
}
this.create(dataType);
}
}
And once you’ve created in your parameters class, a method to return your NumberSequenceReference:
[ExtensionOf(tableStr(RetailParameters))]
internal final class FTDRetailParameters_Extension
{
public static NumberSequenceReference ftdNumRefNumSeqExampleId()
{
return NumberSeqReference::findReference(extendedTypeNum(FTDNumSeqExampleId));
}
}
Then, all you need to do is to add this variable and method in the Form:
NumberSeqFormHandler numberSeqNumSeqExampleId;
NumberSeqFormHandler numberSeqNumSeqExampleId()
{
if (!numberSeqNumSeqExampleId)
{
numberSeqNumSeqExampleId = numberSeqFormHandler::newForm(RetailParameters::ftdNumRefNumSeqExampleId().NumberSequenceId,
element,
FTDNumSeqExample_ds,
fieldNum(FTDNumSeqExample, Id)
);
}
return numberSeqNumSeqExampleId;
}
And override the methods Create, LinkActive, delete, write and validateWrite as shown below: (If you want to understand why, check the video)
[DataSource]
class FTDNumSeqExample
{
public void create(boolean _append = false)
{
element.numberSeqNumSeqExampleId().formMethodDataSourceCreatePre();
super(_append);
element.numberSeqNumSeqExampleId().formMethodDataSourceCreate();
}
public void linkActive()
{
element.numberSeqNumSeqExampleId().formMethodDataSourceLinkActive();
super();
}
public void delete()
{
ttsbegin;
element.numberSeqNumSeqExampleId().formMethodDataSourceDelete();
super();
ttscommit;
}
public void write()
{
element.numberSeqNumSeqExampleId().formMethodDataSourceWrite();
super();
}
public boolean validateWrite()
{
return element.numberSeqNumSeqExampleId().formMethodDataSourceValidateWrite(super());
}
}
