Acumatica PXCheckUnique-如何在错误消息上显示重复订单编号

Acumatica PXCheckUnique-如何在错误消息上显示重复订单编号,acumatica,Acumatica,当相同的值组合再次出现时,我需要在SO屏幕上进行客户订单Nbr和外部Nbr验证。为了执行此验证,我们使用默认Acumatica的PXCheckUnique属性,如下所示 [PXCheckUnique(Where = typeof(Where2<Where<SOOrder.orderType, Equal<Current<SOOrder.orderType>>, And<SOOrder.customerOrderNbr, Equal&l

当相同的值组合再次出现时,我需要在SO屏幕上进行客户订单Nbr和外部Nbr验证。为了执行此验证,我们使用默认Acumatica的PXCheckUnique属性,如下所示

  [PXCheckUnique(Where = typeof(Where2<Where<SOOrder.orderType, Equal<Current<SOOrder.orderType>>,
        And<SOOrder.customerOrderNbr, Equal<Current<SOOrder.customerOrderNbr>>,
            And<SOOrder.customerRefNbr, Equal<Current<SOOrder.customerRefNbr>>>>>, 
        And<SOOrder.status, NotEqual<SOOrderStatus.cancelled>>>),
        ErrorMessage = "Order already exists with this Customer Order Nbr and External Ref.Nbr combination ")]
[PXCheckUnique(其中=类型)(其中2),
ErrorMessage=“订单已存在,且此客户订单编号和外部参考编号组合”)]
验证将根据需要触发。我们需要的支持是在错误消息中显示现有订单Nbr。如果有人能在这方面帮助我,那就太好了


提前感谢:)

我认为最好的方法是创建自己版本的
PXCheckUnique
,并添加错误消息报告功能。最简单的方法是覆盖PrepareMessage并返回所需的消息

我确认了以下方法将起作用。我重用了
PXRestrictorAttribute
中的一些逻辑,因为它做了一些类似于您想要做的事情(在错误消息中包括当前值)

然后你可以像这样使用属性

[PXCheckUniqueCustomError("Order already exists with Customer Order Nbr {0} and External Ref.Nbr {1}", typeof(SOOrder.customerOrderNbr), typeof(SOOrder.customerRefNbr),  
    Where = typeof(Where2<Where<SOOrder.orderType, Equal<Current<SOOrder.orderType>>,
        And<SOOrder.customerOrderNbr, Equal<Current<SOOrder.customerOrderNbr>>,
            And<SOOrder.customerRefNbr, Equal<Current<SOOrder.customerRefNbr>>>>>,
    And<SOOrder.status, NotEqual<SOOrderStatus.cancelled>>>))]
[PXCheckUniqueCustomError(“订单已存在,且客户订单编号为{0}且外部参考编号为{1}”),类型为(SOOrder.customerOrderNbr),类型为(SOOrder.customerRefNbr),
式中=类型(式中2))]
结果将是这样一条消息

[PXCheckUniqueCustomError("Order already exists with Customer Order Nbr {0} and External Ref.Nbr {1}", typeof(SOOrder.customerOrderNbr), typeof(SOOrder.customerRefNbr),  
    Where = typeof(Where2<Where<SOOrder.orderType, Equal<Current<SOOrder.orderType>>,
        And<SOOrder.customerOrderNbr, Equal<Current<SOOrder.customerOrderNbr>>,
            And<SOOrder.customerRefNbr, Equal<Current<SOOrder.customerRefNbr>>>>>,
    And<SOOrder.status, NotEqual<SOOrderStatus.cancelled>>>))]

我想说的是,CrossReferenceUniquenceMessage属性做了一些非常类似的事情,因为它还扩展了PXCheckUnique,并在PrepareMessage override中格式化错误消息。伟人的想法很相似:)关于CrossReferenceUniquenceMessage属性的发现很好。我没有考虑查看是否有另一个属性已经扩展到PXCheckUnqiue。这似乎是唯一的其他属性。