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