Acumatica中自定义视图过滤Open状态SOOrder的方法咨询
解决Acumatica自定义视图筛选Open状态SOOrder的问题
错误原因
直接添加独立的Where<SOOrder.Status, Equal<"N">>会和原视图里的Where2块冲突——PXSelectJoin只能包含一个Where/Where2条件容器;另外直接写字符串"N"的写法不符合Acumatica查询语法规范,应该用枚举成员指定状态值。
正确修改方法
把筛选Open状态的条件合并到现有Where2中,用And连接,同时使用SOOrderStatus.Open枚举成员指定状态(需确保已引用PX.Objects.SO命名空间)。
修改后的完整视图代码如下:
public PXSelectJoin<SOOrder, LeftJoin<Users, On<Users.pKID, Equal<SOOrder.createdByID>>, LeftJoin<SOOrderType, On<SOOrderType.orderType, Equal<SOOrder.orderType>>, LeftJoin<PX.Objects.GL.Branch, On<PX.Objects.GL.Branch.branchID, Equal<SOOrder.branchID>>, LeftJoin<Organization, On<Organization.organizationID, Equal<PX.Objects.GL.Branch.organizationID>, Or<Organization.organizationID, IsNull>>, LeftJoin<PortalSetup, On2<Where<PortalSetup.restrictByOrganizationID, IsNull, Or<Organization.organizationID, Equal<PortalSetup.restrictByOrganizationID>>>, And<Where<PortalSetup.restrictByBranchID, IsNull, Or<PX.Objects.GL.Branch.branchID, Equal<PortalSetup.restrictByBranchID>>>>>>>, Where2<MatchWithBAccount<SOOrder.customerID, Current<AccessInfo.userID>>, And<PortalSetup.IsCurrentPortal>, And<SOOrder.status, Equal<SOOrderStatus.open>>>, OrderBy<Desc<SOOrder.orderNbr>>> Items;
说明
SOOrderStatus.Open对应订单的Open状态枚举值,用枚举成员可避免硬编码字符串引发的错误- 所有筛选条件都放在同一个
Where2块内通过And串联,符合PXSelectJoin的语法要求
内容的提问来源于stack exchange,提问作者AcumaticaZ
相关产品推荐
相关产品推荐

