【发布时间】:2020-09-26 06:52:33
【问题描述】:
我在联系人屏幕(位置 ID --- int)和客户位置屏幕中创建了一个新的扩展字段,当我单击“+”按钮时,它应该重定向到联系人屏幕和标题会话“客户和位置 ID”应该默认,但位置 ID 不是默认的。
以下是 img 示例:
这是我写的代码:
public PXDBAction<Location> addContact;
[PXUIField(DisplayName = Messages.AddContact)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.DataEntry)]
public virtual void AddContact()
{
var row = Base.Location.Current;
if (row == null || row.BAccountID == null) return;
ContactExt extension = PXCache<Contact>.GetExtension<ContactExt>(Base.Contact.Current); //Base.Contact.Current
ContactMaint graph = PXGraph.CreateInstance<ContactMaint>();
graph.Clear();
Location get = Base.Location.Current;
Contact retbatch = graph.Contact.Insert(new Contact());
retbatch.BAccountID = get.BAccountID;
extension.UsrLocationCD = get.LocationID;
if (!Base.IsContractBasedAPI)
PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);
graph.Save.Press();
}
新创建的扩展字段逻辑:
public class ContactExt : PXCacheExtension<PX.Objects.CR.Contact> /*, IBqlTable*/
{
#region UsrLocationCD
[PXDBInt()]
[PXUIField(DisplayName = "Location ID")]
[PXSelector(
typeof(Search<Location.locationID, Where<Location.bAccountID,
Equal<Current<Contact.bAccountID>>>>),
SubstituteKey = typeof(Location.locationCD), ValidateValue = false)]
public virtual int? UsrLocationCD { get; set; }
public abstract class usrLocationCD : PX.Data.BQL.BqlInt.Field<usrLocationCD> { }
#endregion
}
这是断点img:
类似的功能应该出现在“机会”屏幕中
图片示例:
这是类似的代码(机会屏幕):
public PXDBAction<Location> addOpportunity;
[PXUIField(DisplayName = Messages.AddNewOpportunity)]
[PXButton(ImageKey = PX.Web.UI.Sprite.Main.AddNew)]
public virtual void AddOpportunity()
{
var row = CurrentBAccount.Current;
if (row == null || row.BAccountID == null) return;
OpportunityMaint graph = PXGraph.CreateInstance<OpportunityMaint>();
graph.Clear();
Location get = Base.Location.Current;
CROpportunity retbatch = graph.Opportunity.Insert(new CROpportunity());
retbatch.BAccountID = get.BAccountID;
retbatch.LocationID = get.LocationID;
if (!Base.IsContractBasedAPI)
PXRedirectHelper.TryRedirect(graph, PXRedirectHelper.WindowMode.NewWindow);
graph.Save.Press();
}
这是断点img:
功能正在“机会”屏幕中运行
“联系人屏幕”逻辑中的错误在哪里 以及如何克服这个问题?
我是这个 acumatica 的新手。
【问题讨论】: