要在Acumatica项目报价屏幕PM304500中更新活动,可以通过自定义操作来实现。下面是一个代码示例,展示了如何通过自定义操作在Acumatica中更新活动。
public class UpdateActivityGraph : PXGraph
{
public PXAction UpdateActivity;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Update Activity")]
protected void updateActivity()
{
// 获取当前选中的项目
PMProject project = Base.Project.Current;
if (project != null)
{
// 在这里编写更新活动的代码逻辑
// 例如,更新活动的状态、更新活动的开始/结束日期等
// 更新活动示例代码:
PMTask task = PXSelect>>>
.Select(this, project.ContractID);
if (task != null)
{
task.Status = "Completed";
task.StartDate = new DateTime(2022, 1, 1);
task.EndDate = new DateTime(2022, 1, 31);
Base.Caches[typeof(PMTask)].Update(task);
Base.Persist();
}
}
}
}
public class PMProjectEntry_Extension : PXGraphExtension
{
public PXAction updateActivity;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Update Activity")]
protected void UpdateActivity()
{
UpdateActivityGraph graph = CreateInstance();
graph.updateActivity();
}
// 需要添加此方法以使自定义操作可见
public delegate IEnumerable UpdateActivityDelegate(PXAdapter adapter);
[PXOverride]
public IEnumerable UpdateActivity(PXAdapter adapter, UpdateActivityDelegate baseMethod)
{
yield return adapter.Get();
UpdateActivity();
}
}
public class MyProjectEntryExtension : PXGraphExtension
{
public override void Initialize()
{
Base.Action.AddMenuAction(UpdateActivity);
}
public PXAction UpdateActivity;
}
通过以上步骤,你就可以在Acumatica项目报价屏幕PM304500中使用自定义操作来更新活动了。