单击自定义操作按钮后,启用Acumatica屏幕中的保存按钮



我在网格工具栏"标记所有采购订单"中创建了一个自定义操作按钮,该按钮标记了销售订单屏幕(SO301000(中网格列"标记采购订单"的所有复选框。

单击我的自定义按钮后,销售订单屏幕左上角的保存按钮未启用,无法保存更改。请帮我继续我的工作

我的图形代码来了。。。。。

public PXAction<SOOrder> markAllForPO;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Mark All For PO", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
public virtual IEnumerable MarkAllForPO(PXAdapter adapter)
{
foreach (SOLine tran in Base.Transactions.Select())
{
if (tran.POCreate == true)
{
tran.POCreate = false;
tran.POSource = "";
}
else
{
tran.POCreate = true;
tran.POSource = INReplenishmentSource.PurchaseToOrder;
}
}
return adapter.Get();
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Following are the supporting images for the question
[1][SO301000=>Sales Order Screen]
[2][DataSource Property of the Action Button from Customization Editor]
[3][Grid Action bar Property of the Action Button]

[1]: https://i.stack.imgur.com/oCAzi.png
[2]: https://i.stack.imgur.com/1JKBX.png
[3]: https://i.stack.imgur.com/Jmvjt.png

你就快到了!

赋值后,您需要调用Update((方法,以便让缓存知道有新版本的记录。

public class SOOrderEntry_Extension : PXGraphExtension<SOOrderEntry>
{    
public PXAction<SOOrder> markAllForPO;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Mark All For PO", MapEnableRights = PXCacheRights.Select, MapViewRights = PXCacheRights.Select)]
public virtual IEnumerable MarkAllForPO(PXAdapter adapter)
{
foreach (SOLine tran in Base.Transactions.Select())
{
if (tran.POCreate == true)
{
tran.POCreate = false;
tran.POSource = "";
}
else
{
tran.POCreate = true;
tran.POSource = INReplenishmentSource.PurchaseToOrder;
}
Base.Transactions.Update(tran); //Cache is updated
}
return adapter.Get();
}    
}

最新更新