如何通过当前用户登录在SOOrder屏幕上过滤OrderNbr?

时间:2016-11-26 02:23:11

标签: acumatica

作为我的问题标题,我想过滤用户已经使用Type CS创建它的orderNbr。

enter image description here

例如:

  1. 用户Sophak,创建了OrderNbr:ARI16-000001
  2. 用户zzz,创建了OrderNbr:ARI16-000003
  3. 当用户Sophak登录时,orderNbr应该只显示她创建的CS。但是当用户管理员登录时,我希望看到所有orderNbr。
  4. 我想我应该用BQL定制它:

     public class administrator : Constant<String>
     {
         public administrator(): base("Administrator")
         { }
     }
    
     [PXDBString(15, IsKey = true, IsUnicode = true, InputMask = ">CCCCCCCCCCCCCCC")]
     [PXDefault()]
     [PXUIField(DisplayName = "Order Nbr.", Visibility = PXUIVisibility.SelectorVisible)]
     [SO.RefNbr(typeof(Search2<SOOrder.orderNbr, LeftJoinSingleTable<Customer, On<SOOrder.customerID, Equal<Customer.bAccountID>, And<Where<Match<Customer, Current<AccessInfo.userName>>>>>,
     LeftJoin<PX.SM.Users, On<SOOrder.createdByID, Equal<PX.SM.Users.pKID>>,
     LeftJoin<PX.SM.UsersInRoles, On<PX.SM.Users.username, Equal<PX.SM.UsersInRoles.username>,Or<PX.SM.UsersInRoles.rolename, Equal<administrator>>>>>>,
     Where<SOOrder.orderType, Equal<Optional<SOOrder.orderType>>, And<Where<SOOrder.orderType, Equal<SOOrderTypeConstants.transferOrder>,Or<Customer.bAccountID, IsNotNull>>>>,
     OrderBy<Desc<SOOrder.orderNbr>>>), Filterable = true)]
     [SO.Numbering()]
     [PX.Data.EP.PXFieldDescription]
    

1 个答案:

答案 0 :(得分:1)

您应首先使用SOOrderEntry BLC扩展中的CacheAttached处理程序为SO.RefNbr属性自定义BQL查询,以过滤OrderNbr选择器的下拉网格中的记录。

之后,请确保为文档数据视图另外自定义BQL查询 - 正确操作导航按钮(首先,上一个,下一个,最后一个)需要此步骤