对于acumatica,我如何去抓住与所选客户相关的人(联系人)?

For acumatica, how do I go about grabbing the people (contacts) related to the selected customer?

您好 :) 我想要实现的是创建一个联系人选择器,当您单击选择器图标时,它会显示联系人的筛选结果 table,该结果仅显示与以下内容相关的联系人具体就是那个公司,如下图:

上图位于“销售订单”屏幕中,我的目标是将其实际放在“项目”屏幕中。因此,当我尝试将其移动过来并确保具有相同的设置时,它似乎无法在“项目”屏幕中运行。

当我尝试打开选择器时,该框是空的。我认为可能问题在于我试图在 PMProject table 和 BAccount table 之间匹配的值不匹配,所以我使用 Description 字段输出我得到的值,而且它们看起来是一样的。

这是我用来创建选择器的设置:

[PXUIField(DisplayName="Contact")]

[PXSelector(typeof(Search2<Contact.displayName,
LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>,
Where<Contact.contactType, Equal<ContactTypesAttribute.person>>>))]

[PXRestrictor(typeof(
    Where<Current<PMContact.customerID>,
            Like<BAccount.bAccountID>>), "")]

这与我在销售订单屏幕上使用的设置完全相同,很明显现在它使用的是 PMProject 的 CustomerID。

我是不是做错了什么?任何帮助将不胜感激:D

更新

感谢约瑟夫的回答!当我点击它时,联系人字段仍然显示为空。见下文:

这是我添加解决方案的方式:

您似乎不需要加入 BAccount。 另外,您在哪里使用“Search2

你有没有试过这样的事情:

[PXSelector(typeof(Search<Contact.contactID, Where<Contact.contactType, Equal<ContactTypesAttribute.person>,
            And<Where<Contact.contactID, Equal<Current<PMContact.customerID>>>>>>))]

我设法解决了这个问题。 Joseph 的回答让我重新思考如何将联系人与当前项目匹配,而不是使用 BAccount table,我可以使用联系人 table。

我发现我只需要将 Contact.bAccountID 字段与 PMContact.customerID 字段的值进行比较,就可以得到所有关联的联系人。

将此比较添加到 PXRestrictor 为我解决了这个问题:)

[PXDBString(50)]
[PXUIField(DisplayName="Contact")]
[PXSelector(typeof(Search2<Contact.displayName,
LeftJoin<BAccount, On<BAccount.bAccountID, Equal<Contact.bAccountID>>>,
Where<Contact.contactType, Equal<ContactTypesAttribute.person>>>))]
[PXRestrictor(typeof(
    Where<Current<PMContact.customerID>,
            Like<Contact.bAccountID>>), "")]