Вы были почти там!
После того, как значение присвоено, вам нужно вызвать метод 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();
}
}