İlk önce hangi modül için numara serisi oluşturacaksak onun tablosu ve class'ını öğreniyoruz.
Benimkinin tablosu SMAParameters (Modülün parametreler ekranında kurulumdan öğrenilebilir ). Aşağıdaki methodu tablonun methodlarına ekliyoruz:
public server static NumberSequenceReference numRefRMARequestNo()
{
return NumberSeqReference::findReference(
typeid2extendedtypeid(typeid(B_RMARequestNo)));
}
AX 2012 için güncelleme:
typeid2extendedtypeid(typeid(B_RMARequestNo))
yerine
extendedTypeNum(SNBmasterNum)
yazmalısınız.
Buradaki "B_RMARequestNo" tablomuzdaki anahtar alanın extended data tipi oluyor.
Ardından classa gidiyoruz. İlgili sınıfının adı parametre tablosunun numberSeqModule metodundan öğrenilebilir. Benimki NumberSeqReference_SMA. loadModule methoduna aşağıdaki kodu ekliyoruz:
/* RMA Request No */
numRef.DataTypeId = typeId2ExtendedTypeId(typeid(B_RMARequestNo));
numRef.ConfigurationKeyId = configurationkeynum(SMAManagement);
numRef.ReferenceHelp = literalstr("Benim Numaram");
numRef.WizardContinuous = false;
numRef.WizardFetchAheadQty = 20;
numRef.WizardManual = NoYes::No;
numRef.WizardAllowChangeDown = NoYes::No;
numRef.WizardAllowChangeUp = NoYes::No;
numRef.SortField = 11;
this.create(numRef);
Sortfield alanına bir üstteki tanımlanmış numberseqin bir fazlasını veriyoruz. Hiç yoksa 1.
AX 2012 için güncelleme:
Sihirbazı çalıştırmadan önce ya AOS restart ya da aşağıdaki komutu çalıştırın:
NumberSeqApplicationModule::loadAll();
Sonra Temel->Kurulum->Numara serileri->Numara serileri'ne (AX 2012 için Organizasyon yönetimi->Ortak->Numara serileri->Üret) giriyoruz. Burda da sihirbazı çalıştırıyoruz.
Kontrol etmek için ilgili modülünü servis parametrelerinden numara serileri tabına gidip bir göz atıyoruz.
Sıra bu numara serisini formda kullanmakta:
Form classDeclaration a bu satırı ekleyin:
NumberSeqFormHandler numberSeqFormHandler;
Forma bu methodu ekleyin:
NumberSeqFormHandler numberSeqFormHandler()
{
;
if (!numberSeqFormHandler)
{
numberSeqFormHandler = NumberSeqFormHandler::newForm(SMAParameters::numRefRMARequestNo().NumberSequence,
element,
B_RMARequestTable_DS,
fieldnum(B_RMARequestTable,RequestNo));
}
return numberSeqFormHandler;
}
Güncelleme: Yukarıdaki satır AX 2012 için şöyle olacak:
numRefRMARequestNo().NumberSequence
yerine
numRefRMARequestNo().NumberSequenceId
B_RMARequestTable_DS sizin tablonuzun Datasourcesi.
RequestNo da anahtar field.
Form close method:
public void close()
{
if (numberSeqFormHandler)
{
numberSeqFormHandler.formMethodClose();
}
super();
}
Data source methodlarında yapılacaklar:
public void linkActive()
{
;
element.numberSeqFormHandler().formMethodDataSourceLinkActive();
super();
}
public boolean validateWrite()
{
boolean ret;
ret = super();
ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;
return ret;
}
public void write()
{
super();
element.numberSeqFormHandler().formMethodDataSourceWrite();
}
public void delete()
{
ttsbegin;
element.numberSeqFormHandler().formMethodDataSourceDelete();
super();
ttscommit;
}
public void create(boolean _append = false,boolean extern = false)
{
element.numberSeqFormHandler().formMethodDataSourceCreatePre();
super(_append);
if (!extern)
{
element.numberSeqFormHandler().formMethodDataSourceCreate();
}
}
Hepsi bu kadar...