在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);
}
}
}