Мне нужно создать поиск клиентов на экране SO (SO301000). Я уже создал определяемое пользователем настраиваемое поле, как показано ниже.
#region UsrKWBSCustomerID
[CustomerAndProspect(Filterable = true, DirtyRead = true)]
[PXUIField(DisplayName = "Customer")]
//[PXRestrictor(typeof(Where<BAccountR.status, NotEqual<BAccountR.status.inactive>,// Or<BAccountR.type, Equal<BAccountType.customerType>, Or<BAccountR.type, Equal<BAccountType.combinedType>>>,
// And<Where<Contact.contactID, Equal<Current<SOOrderExt.usrKWContactID>>,
// Or<Current<SOOrderExt.usrKWContactID>, IsNull>>>>), PX.Objects.CR.Messages.ContactBAccountDiff)]
//[PXDefault(typeof(Where<BAccountR.status, NotEqual<BAccountR.status.inactive>,// Or<BAccountR.type, Equal<BAccountType.customerType>, Or<BAccountR.type, Equal<BAccountType.combinedType>>>,
// And<Where<Contact.contactID, Equal<Current<SOOrderExt.usrKWContactID>>,
// Or<Current<SOOrderExt.usrKWContactID>, IsNull>>>>),PersistingCheck = PXPersistingCheck.Nothing)]
////[PXFormula(typeof(Default<Contact.bAccountID>))]
////[PXRestrictor(typeof(Where<Contact.isActive, Equal<True>>), PX.Objects.CR.Messages.ContactInactive,
//// typeof(Contact.displayName))]
//[PXRestrictor(typeof(Where<BAccountR.type, Equal<BAccountType.prospectType>, Or<BAccountR.type, Equal<BAccountType.customerType>, Or<BAccountR.type, Equal<BAccountType.combinedType>>>>), "Business Account is {0}.", new[] { typeof(BAccountR.type) })]
//[PXSelector(typeof(Search<Customer.bAccountID>), new Type[] { typeof(Customer.acctCD), typeof(Customer.acctName), typeof(Customer.status), typeof(Customer.classID) },
// SubstituteKey = typeof(Customer.acctName), DescriptionField = typeof(Customer.acctName))]
public virtual int? UsrKWBSCustomerID { get; set; }
public abstract class usrKWBSCustomerID : PX.Data.BQL.BqlInt.Field<usrKWBSCustomerID> { }
#endregion
Я также пробовал ниже один, но не работал v = может кто-нибудь исправить меня, где я делаю неправильно, я ожидал, что результат будет, когда пользователь выберет контакт затем соответствующий клиент должен автоматически загружаться в мое настраиваемое поле, например, как работает экран возможностей
#region UsrKWBSCustomerID
//[CustomerAndProspect(Filterable = true, DirtyRead = true)]
[PXDBInt()]
[PXUIField(DisplayName = "Customer")]
[PXSelector(typeof(Search2<BAccount2.bAccountID,
LeftJoin<Contact, On<Contact.bAccountID, Equal<BAccount2.bAccountID>>>, Where<BAccount2.type, Equal<BAccountType.prospectType>, Or<BAccount2.type, Equal<BAccountType.customerType>, Or<BAccount2.type, Equal<BAccountType.combinedType>>>>>),
DescriptionField = typeof(BAccount2.acctName), Filterable = true, DirtyRead = true)]
[PXDefault(PersistingCheck = PXPersistingCheck.Nothing)]
[PXFormula(typeof(Default<Contact.bAccountID>))]
[PXRestrictor(typeof(Where2<Where<BAccount2.type, Equal<BAccountType.prospectType>, Or<BAccount2.type, Equal<BAccountType.customerType>, Or<BAccount2.type, Equal<BAccountType.combinedType>>>>,
And<Where<Contact.contactID, Equal<Current<SOOrderExt.usrKWContactID>>,
Or<Current<SOOrderExt.usrKWContactID>, IsNull>>>>), PX.Objects.CR.Messages.ContactBAccountDiff)]
[PXRestrictor(typeof(Where<BAccount2.status, Equal<BAccount2.status.inactive>>), "Customer '{0}' is inactive",
typeof(BAccount2.acctName))]
public virtual int? UsrKWBSCustomerID { get; set; }
public abstract class usrKWBSCustomerID : PX.Data.BQL.BqlInt.Field<usrKWBSCustomerID> { }
#endregion