自动验证机会主记录保存时不同选项卡上的字段
Auto validate fields on different tab on Save of main record on 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; }
}
但是,它不直接在主记录保存上验证。相反,如果我尝试在“联系人信息”选项卡中保存任何值,那么它将在主记录保存时进行验证。以下是步骤。
- 它不验证什么时候
一种。创造新机会
b.填写上半部分和详细信息选项卡上的所有必填字段
C。保存机会记录。
- 它在什么时候验证
一种。创造新机会
b.在上部和详细信息选项卡上填写所有必填字段
C。在联系人信息选项卡上填写必填字段以外的字段
d.尝试保存机会记录。它将验证联系人信息选项卡上的必填字段。
我需要它应该在第一种情况下验证。请提出建议。
它无法验证现有记录,但如果未输入已创建和必填的字段,它仍会验证新记录。理想的解决方案是创建一个 GI 并更新现有记录的所有必填字段,这样就不会产生任何问题。对于新记录,它无论如何都会正确验证。
我想在机会(屏幕 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; }
}
但是,它不直接在主记录保存上验证。相反,如果我尝试在“联系人信息”选项卡中保存任何值,那么它将在主记录保存时进行验证。以下是步骤。
- 它不验证什么时候 一种。创造新机会 b.填写上半部分和详细信息选项卡上的所有必填字段 C。保存机会记录。
- 它在什么时候验证 一种。创造新机会 b.在上部和详细信息选项卡上填写所有必填字段 C。在联系人信息选项卡上填写必填字段以外的字段 d.尝试保存机会记录。它将验证联系人信息选项卡上的必填字段。
我需要它应该在第一种情况下验证。请提出建议。
它无法验证现有记录,但如果未输入已创建和必填的字段,它仍会验证新记录。理想的解决方案是创建一个 GI 并更新现有记录的所有必填字段,这样就不会产生任何问题。对于新记录,它无论如何都会正确验证。