How to Use Number Sequences in Dynamics 365 Finance and Operations
Numara serileri oluşturmak

Bu yazımda Dynamics 365'te Custom bir tabloya nasıl numara serisi bağlayabileceğinizi anlatmaya çalışacağım.
Öncelikle string bir EDT oluşturuyoruz. Extends kısmından Num EDT’sine bağlıyoruz.

Daha sonra EDT’mizi ilgili tabloya ekliyoruz. Gerekli primary index ayarlamalarını yaptıktan sonra EDT’mizin üzerinde ki Reference Table ve Table References kısımlarını doldurmayı unutmuyoruz.


Daha sonra numara serisini hangi modüle bağlayacağımıza karar vermemiz gerekiyor. Bizim geliştirmemiz Retail ile ilgili olduğu için “Retail” modülü olacaktır.
İlgili modülümüzün class’larına aşağıda ki kodları ekliyoruz.
[ExtensionOf(tablestr(RetailParameters))]
final class RetailParameters_Extension
{
static NumberSequenceReference numRefETGWholeSalesRequestNo()
{
return NumberSeqReference::findReference(extendedTypeNum(ETGWholeSalesRequestNo));
}
}
[ExtensionOf(classStr(NumberSeqModuleRetail))]
final class NumberSeqModuleRetail_Extension
{
protected void loadModule()
{
next loadModule();
NumberSeqDatatype datatype = NumberSeqDatatype::construct();
datatype.parmDatatypeId(extendedTypeNum(ETGWholeSalesRequestNo));
datatype.parmReferenceLabel(literalstr("Talep no"));
datatype.parmReferenceHelp(literalStr("Talep no"));
datatype.parmWizardIsContinuous(false);
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmWizardHighest(999999);
datatype.parmSortField(1);
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
}
}
İlgili tablomuza aşağıda ki methodu ekliyoruz.
public static NumberSequenceReference numRefRequestNo()
{
return NumberSeqReference::findReference(extendedTypeNum(ETGWholeSalesRequestNo));
}
İlgili formumuza da aşağıda ki gibi ilgili methodları ekliyoruz.

[Form]
public class ETGWholeSalesRequest extends FormRun
{
NumberSeqFormHandler numberSeqFormHandler;
public NumberSeqFormHandler numberSeqFormHandler()
{
if (!numberSeqFormHandler)
{
numberSeqFormHandler = NumberSeqFormHandler::newForm(ETGWholeSalesRequestHeader::numRefRequestNo().NumberSequenceId, element, ETGWholeSalesRequestHeader_ds, fieldNum(ETGWholeSalesRequestHeader, RequestNo));
}
return numberSeqFormHandler;
}
public void close()
{
if (numberSeqFormHandler)
{
numberSeqFormHandler.formMethodClose();
}
super();
}
[DataSource]
class ETGWholeSalesRequestHeader
{
public void create(boolean _append = false, boolean _extern = false)
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(_append);
if (!_extern)
{
element.numberSeqFormHandler().formMethodDataSourceCreate(true);
}
}
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
public boolean validateWrite()
{
boolean ret;
ret = super();
ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;
if (ret)
{
ETGWholeSalesRequestHeader.validateWrite();
}
return ret;
}
public void linkActive()
{
element.numberSeqFormHandler().formMethodDataSourceLinkActive();
super();
}
public void delete()
{
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
}
}
}
Sonrasında ise numara serilerini yükleyen bir job oluşturuyoruz.
class ETGJobNumSeqLoadModule
{
/// <summary>
/// Runs the class with the specified arguments.
/// </summary>
/// <param name = "_args">The specified arguments.</param>
public static void main(Args _args)
{
//NumberSeqApplicationModule::loadAll();
NumberSeqModuleRetail retail = new NumberSeqModuleRetail();
retail.load();
Info("Yüklendi");
}
}
Bu kodlarıda ekledikten sonra derleme ve senkronizasyon yapıyoruz.
Derleme ve senkronizasyon bittikten sonra önce oluşturduğumuz Job'ı(ETGJobNumSeqLoadModule) çalıştırıyoruz.
Örnek Job Link

Job çalıştıktan sonra ilgili parametre formumuzda(RetailParameters) Numara serileri tabında oluşturduğumuz numara serisinin, Numara seri kodu boş olarak görünecektir.

Son olarak numara seri kodunun dolması için Organizasyon yönetimi modülünde ki Numara serileri sayfasından(NumberSequenceTableListPage) Numara serilerini oluşturan Wizard çalıştırılır.

Formunuzda yeni tuşuna tıkladığınızda ilgili alanda numara serisi oluşuyor ise tebrikler. :)

Oluşmuyor ise adımları tekrar gözden geçirmenizde fayda var.




