X++ :14- ValidateWrite Metodu Ne İşe Yarar?

Dynamics-365

Bu yazıda Dynamics 365 Finance and Operations tablo metotlarından validateWrite() metodunu anlatacağım. validateWrite () bir kaydın DB’ye Insert veya Update işlemelerinden önce çalışan doğrulamaların yapıldığı metottur. Bir örnek yapalım.

FDBookTable tablosunda metotlara sağ tıklayıp validateWrite () metodunu Override ettim.


Resim-1

Şöyle bir kontrol yazalım. Eğer BookCount == 0 ise hata versin. Bunun için checkFailed() kullanılır. Otomatik olarak info verip hata döndüren bir koddur.


Resim-2

Kaydedip tablo tarayıcısını açalım. Sıfır girip kaydetmeye çalıştığımızda hata mesajını alırız.


Resim-3

boolean validateWrite()

{

#isoCountryRegionCodes

boolean ret;

DirPartyType type;

ret = super();

// Warn user if this customer lacks a tax exempt number, but do not fail to save the revision.

if (!this.OneTimeCustomer && TaxVATNumTable::isVATNumMandatory(CustParameters::find().MandatoryVATNum, this))

{

warning(“@SYS54494”);

}

if (ret)

{

if (PaymTerm::isCashAccount(this.PaymTermId) && this.PaymSched)

{

ret = checkFailed(“@SYS25074”);

}

}

// Add check MandatoryTaxGroup is set on CustParameters.

if (ret && CustParameters::find().MandatoryTaxGroup && !this.TaxGroup)

{

ret = checkFailed(“@SYS113299”);

}

if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoMX]))

{

taxRegistrationValidator = TaxRegistrationValidator_MX::construct(this);

ret = taxRegistrationValidator.validateCustomerTaxRegistration() && ret;

}

if (this.MainContactWorker)

{

ret = ret && smmUtility::isValidWorkerInCurrentCompany(this.MainContactWorker);

}

if (ret && !CustVendTable::validateContactForParty(true, this.ContactPersonId, this.Party))

{

ret = checkFailed(“@SCM:InvalidPrimaryContactErrorMessage”);

}

return ret;

}

CustTable
ValidateWrite() metodunu inceleyelim. checkFailed kullanımını görebilirsiniz. Eğer birkaç satırdan uzun bir kod gerekiyorsa ayrı metot yazıp buradan onu çağırmak genel yaklaşımdır.

Selamlar.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar:
www.mshowto.org

www.fatihdemirci.net

TAGs: X++,validateWrite, Azure, Azure DevOps, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365

Yazı gezinmesi

Mobil sürümden çık