【发布时间】:2016-11-18 21:07:40
【问题描述】:
我有这个自定义项,我希望用户单击名为 Create Project 的机会屏幕中的新操作菜单,在该菜单中它重定向或弹出项目输入屏幕,一旦保存,将重定向回机会屏幕并创建在项目字段中选择的项目。
到目前为止,这是我的代码,我试图从其他类似模块中复制它,但问题是它没有在创建项目弹出窗口中保存并关闭后更新 Oppurtunity 屏幕中的项目字段。
public class OpportunityMaint_Extension:PXGraphExtension<OpportunityMaint> {
public override void Initialize() {
Base.Action.AddMenuAction(createProject);
createSalesOrder.SetVisible(false);
createSalesOrder.SetEnabled(false);
}
public PXAction<PX.Objects.CR.CROpportunity> createSalesOrder;
[PXUIField(Visible = false)]
public IEnumerable CreateSalesOrder(PXAdapter adapter) {
return null;
}
public PXAction<PX.Objects.CR.CROpportunity> createProject;
[PXUIField(DisplayName = "Create Project", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Select)]
[PXButton()]
public IEnumerable CreateProject(PXAdapter adapter) {
List<CROpportunity> opportunities = new List<CROpportunity>(adapter.Get().Cast<CROpportunity>());
foreach (CROpportunity opp in opportunities) {
Base.Save.Press();
PXLongOperation.StartOperation(Base, () => ConvertToProject(opp));
}
return opportunities;
}
public static void ConvertToProject(CROpportunity opportunity) {
ProjectEntry projectEntry = PXGraph.CreateInstance<ProjectEntry>();
PMProject proj = new PMProject {
ContractCD = (string)"<NEW>",
CustomerID = opportunity.BAccountID,
Description = opportunity.OpportunityName,
OwnerID = opportunity.OwnerID
};
proj = projectEntry.Project.Insert(proj);
opportunity.ProjectID = proj.ContractID;
throw new PXRedirectRequiredException(projectEntry , "Create Project", true);
}
protected void CROpportunity_RowSelected(PXCache cache, PXRowSelectedEventArgs e) {
var row = (CROpportunity)e.Row;
if (row == null) return;
//createProject.SetEnabled(true);
createSalesOrder.SetVisible(false);
createSalesOrder.SetEnabled(false);
}
}
【问题讨论】:
标签: acumatica