我想在Opportunity(屏幕ID - CR304000)的“联系人信息”选项卡上设置几个字段,以便用户在保存主要商机记录之前必须输入该字段 . 我看到它主要来自CRContact和CRAddress . 我为两者创建了一个DAC扩展,并包含了要在其中验证的所有字段 . 下面是相同的代码 .
public class CROpportunityExtension : PXCacheExtension<PX.Objects.CR.CROpportunity>
{
[PXDBGuid(false)]
[PX.Objects.CR.MassProcess.PXMassUpdatableField]
[PXOwnerSelector(typeof(PX.Objects.CR.CROpportunity.workgroupID))]
[PXUIField(DisplayName = "Owner", Required = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual Guid? OwnerID { get; set; }
[CROpportunityAddress(typeof(Select<Address, Where<True, Equal<False>>>))]
[PXDBInt]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual int? OpportunityAddressID { get; set; }
[CROpportunityContact(typeof(Select<Contact, Where<True, Equal<False>>>))]
[PXDBInt]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual int? OpportunityContactID { get; set; }
}
public class CRContactExtension : PXCacheExtension<PX.Objects.CR.CRContact>
{
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "First Name", Required = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual string FirstName { get; set; }
[PXDBString(100, IsUnicode = true)]
[PXUIField(DisplayName = "Last Name", Required = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual string LastName { get; set; }
[PXDBEmail]
[PXUIField(DisplayName = "Email", Visibility = PXUIVisibility.SelectorVisible, Required = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual string Email { get; set; }
[PhoneValidation]
[PXDBString(50)]
[PXUIField(DisplayName = "Phone 1", Visibility = PXUIVisibility.SelectorVisible, Required = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual string Phone1 { get; set; }
}
public class CRAddressExtension : PXCacheExtension<PX.Objects.CR.CRAddress>
{
[PXDBString(50, IsUnicode = true)]
[PXUIField(DisplayName = "City", Visibility = PXUIVisibility.SelectorVisible, Required = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual string City { get; set; }
[PXDBString(20)]
[PXUIField(DisplayName = "Postal Code", Required = true)]
[PXZipValidation(typeof(Country.zipCodeRegexp), typeof(Country.zipCodeMask), typeof(PX.Objects.CR.CRAddress.countryID))]
[PXDefault(PersistingCheck = PXPersistingCheck.NullOrBlank)]
public virtual string PostalCode { get; set; }
}
但是,它没有直接验证主记录保存 . 相反,如果我尝试在“联系人信息”选项卡中保存任何值,则它将在主记录保存时进行验证 . 以下是步骤 .
-
它不验证何时a . 创造新机会b . 填写所有必填字段上部和详细信息选项卡c . 保存机会记录 .
-
它验证何时a . 创造新机会b . 填写上部和详细信息选项卡中的所有必填字段c . 填写“联系人信息”选项卡上的必填字段以外的字段 . 尽量保存机会记录 . 它将验证“联系人信息”选项卡上的必填字段 .
我需要它应该在第一种情况下验证 . 请建议 .
1 回答
它无法验证现有记录,但如果未创建,则仍会验证新记录,并且未输入必填字段 . 理想的解决方案是创建GI并更新现有记录的所有必填字段,这样就不会产生任何问题 . 对于新记录,它无论如何都要正确验证 .