从PORecieptEntry图中更新rowUpdated事件处理程序中的自定义复选框值(PO Screen)



在Acumatica中,当我更新相应PO收据中的一行时,我想将usrsendponotification复选框(在PO屏幕中)更新为true。这是我试过的代码&这行不通。因此,usrsendponotification复选框仍然为假。有什么想法吗?

protected void POReceipt_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e)
{

var row = (POReceipt)e.Row;
if (row == null) return;
else
{
POReceiptLine receiptLine = new PXSelect<POReceiptLine, Where<POReceiptLine.receiptNbr, 
Equal<Required<POReceiptLine.receiptNbr>>>>(Base).Select(row.ReceiptNbr);
if(receiptLine == null) return;  
else
{
POOrder poOrder = new PXSelect<POOrder, Where<POOrder.orderType, 
Equal<Required<POOrder.orderType>>, And<POOrder.orderNbr, 
Equal<Required<POOrder.orderNbr>>>>>(Base).Select(receiptLine.POType, 
receiptLine.PONbr);
if(poOrder == null) return;
else
{
POOrderExt poExt = poOrder.GetExtension<POOrderExt>();
poExt.UsrSendPONotifications = true;
cache.SetValueExt<POOrderExt.usrSendPONotifications> 
(poOrder,poExt.UsrSendPONotifications);

}
}
}

@AcumaticaZ尝试在POReceiptEntry中使用POOrder的现有缓存。如果您使用的是常规PO,则可以使用:

protected void POReceipt_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e)
{

var row = (POReceipt)e.Row;
if (row == null) return;
else
{
POReceiptLine receiptLine = new PXSelect<POReceiptLine, Where<POReceiptLine.receiptNbr, 
Equal<Required<POReceiptLine.receiptNbr>>>>(Base).Select(row.ReceiptNbr);
if(receiptLine == null) return;  
else
{
POOrder poOrder = new PXSelect<POOrder, Where<POOrder.orderType, 
Equal<Required<POOrder.orderType>>, And<POOrder.orderNbr, 
Equal<Required<POOrder.orderNbr>>>>>(Base).Select(receiptLine.POType, 
receiptLine.PONbr);
if(poOrder == null) return;
else
{  poOrderUPD.Cache.SetValueExt<POOrderExt.usrSendPONotifications> 
(poOrder,true);

}
}
}

最新更新