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

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.

www.fatihdemirci.net

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

 
Comment are closed.