acumatica - BQL 语句在 SOOrder 中获取数据,但在 POOrder 中没有
问题描述
我正在使用员工默认分支在 SOOrder 上设置默认分支:
using PX.Objects.IN.Matrix.Interfaces;
using System;
using PX.Common;
using PX.Data;
using PX.Objects.CS;
using PX.Objects.EP;
namespace PX.Objects.SO
{
// Acuminator disable once PX1016 ExtensionDoesNotDeclareIsActiveMethod extension should be constantly active
public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
{
#region Event Handlers
protected void SOLine_BranchID_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
try
{
var row = (SOLine)e.Row;
if (row == null) return;
EPEmployee CurEPEmployee = PXSelect<
EPEmployee,
Where<EPEmployee.userID, Equal<Required<AccessInfo.userID>>>>
.Select(Base, Base.Accessinfo.UserID);
BranchMaint.BranchBAccount CurBranchBAccount = PXSelect<
BranchMaint.BranchBAccount,
Where<BranchMaint.BranchBAccount.bAccountID,Equal<Required<EPEmployee.parentBAccountID>>>>
.Select(Base,CurEPEmployee.ParentBAccountID);
e.NewValue = CurBranchBAccount.BranchBranchCD;
}
catch (Exception ex)
{
PXTrace.WriteError(ex);
}
}
#endregion
当我使用相同的代码在采购订单上设置分支时,BranchMaint.BranchBAccount 始终为空,就好像 POReceiptEntry_Extension 无权访问它一样?
using PX.Data;
using PX.Objects.EP;
using static PX.Objects.CS.BranchMaint;
using System;
namespace PX.Objects.PO
{
// Acuminator disable once PX1016 ExtensionDoesNotDeclareIsActiveMethod extension should be constantly active
public class POReceiptEntry_Extension : PXGraphExtension<POReceiptEntry>
{
#region Event Handlers
protected void POReceiptLine_BranchID_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
try
{
var row = (POReceiptLine)e.Row;
if (row == null) return;
EPEmployee CurEPEmployee = PXSelect<
EPEmployee,
Where<EPEmployee.userID, Equal<Required<AccessInfo.userID>>>>
.Select(Base, Base.Accessinfo.UserID);
BranchBAccount CurBranchBAccount = PXSelect<
BranchBAccount,
Where<BranchBAccount.bAccountID, Equal<Required<EPEmployee.parentBAccountID>>>>
.Select(Base, CurEPEmployee.ParentBAccountID);
e.NewValue = CurBranchBAccount.BranchBranchCD;
}
catch (Exception ex)
{
PXTrace.WriteError(ex);
}
}
#endregion
}
}
有什么方法可以让我从 POReceiptEntry_Extension 访问 BranchMaint.BranchBAccount
解决方案
试试下面的。还要考虑尽管您希望这样的东西如何在采购订单收据中发挥作用,但在大多数情况下,您可能是从采购订单本身中提取的,因此分支将来自采购订单而不是来自您的字段默认扩展。
protected void POReceiptLine_BranchID_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
try
{
var row = (POReceiptLine)e.Row;
if (row == null) return;
EPEmployee CurEPEmployee = PXSelect<
EPEmployee,
Where<EPEmployee.userID, Equal<Required<AccessInfo.userID>>>>
.Select(Base, Base.Accessinfo.UserID);
Branch CurBranchBAccount = PXSelect<
Branch,
Where<Branch.bAccountID, Equal<Required<EPEmployee.parentBAccountID>>>>
.Select(Base, CurEPEmployee.ParentBAccountID);
e.NewValue = CurBranchBAccount.BranchCD;
}
catch (Exception ex)
{
PXTrace.WriteError(ex);
}
}
推荐阅读
- c++ - 结构包含在自身之中。这个怎么理解?
- rest - PowerQuery 缺少对 Windows 身份验证和 REST API POST 正文的支持
- c# - 检查点 c# 统一
- c# - 在 Configure() 之后启动 IHostedService
- javascript - 为什么数组可能返回空?
- sql - 在 Oracle SQL 中将 1 列转换为 2 列
- elasticsearch - 弹性搜索 2.0 GreaterOrEquals NEST 2.0
- java - 带有 java.lang.IllegalStateException 的 Servlet:在导出到 Excel 时提交响应后无法转发 [Apache POI]
- xslt - 在根元素上声明所有命名空间
- linux - 有没有办法在不输入整个命令的情况下打印 CMake 的一个命令的帮助?