#acumatica
#acumatica
Вопрос:
Я устанавливаю ветку по умолчанию в SOOrder, используя ветку Employees по умолчанию:
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
Когда я использую тот же код для установки ветки в заказах на поставку, ветка сохраняется.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
}
}
Есть ли у меня какой-нибудь способ получить доступ к BranchMaint.BranchBAccount из POReceiptEntry_Extension
Ответ №1:
Попробуйте следующее. Также подумайте, как вы хотели бы, чтобы что-то подобное функционировало в квитанции PO, в большинстве случаев вы, вероятно, извлекаете из самого заказа Purcahse, поэтому ветвь будет поступать из PO, а не из вашего расширения по умолчанию.
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);
}
}