[我已经在网格工具栏“全部标记为PO”中创建了一个自定义操作按钮,该按钮在销售订单屏幕(SO301000)中标记了网格列“标记为PO”的所有复选框。
单击我的自定义按钮后,“销售订单”屏幕左上角的保存按钮未启用,无法保存更改。请帮助我继续工作]
这里是我的图形代码.....
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();
}
}