Acumatica 将值指定给对话框面板上的自定义字段(分配)
我在采购收据的分配面板上添加了一个custome字段“UsrWgtIndex”。它的值是其他自定义字段“UsrWgtPerUnit”的总和 但奇怪的事情发生了。打开Different分配面板时,UsrWgtIndex的值保持不变。它始终是第一行事务的值 下面是我的代码,对此我真的很困惑。在逻辑上,代码将对每行事务求和,并分配每行“UsrWgtIndex”。但它始终是第一行的值 有人能帮忙吗?非常感谢Acumatica 将值指定给对话框面板上的自定义字段(分配),acumatica,Acumatica,我在采购收据的分配面板上添加了一个custome字段“UsrWgtIndex”。它的值是其他自定义字段“UsrWgtPerUnit”的总和 但奇怪的事情发生了。打开Different分配面板时,UsrWgtIndex的值保持不变。它始终是第一行事务的值 下面是我的代码,对此我真的很困惑。在逻辑上,代码将对每行事务求和,并分配每行“UsrWgtIndex”。但它始终是第一行的值 有人能帮忙吗?非常感谢 namespace PX.Objects.PO { public class PORec
namespace PX.Objects.PO {
public class POReceiptEntry_Extension: PXGraphExtension < POReceiptEntry > {
#region Event Handlers
decimal totalCgt = 0 M,
tempTotal = 0 M;
protected void POReceiptLine_RowSelected(PXCache cache, PXRowSelectedEventArgs e) {
POReceiptLine poRLine = (POReceiptLine) e.Row;
if (poRLine != null) {
totalCgt = 0 M;
foreach(POReceiptLineSplit line in Base.splits.Select()) {
POReceiptLineSplitExt poReceiptLineSplitExt = line.GetExtension < POReceiptLineSplitExt > ();
var recentQty = poReceiptLineSplitExt.UsrWgtPerUnit;
var temp = Convert.ToDecimal(recentQty);
totalCgt = totalCgt + temp;
};
var cgt = Convert.ToDecimal(totalCgt);
if (totalCgt != null) {
cache.SetValue < POReceiptLineExt.usrTotalWgt > (poRLine, cgt);
//This line is setting the value of usrWgtIndex
cache.SetValue < POReceiptLineExt.usrWgtIndex > (poRLine, cgt);
};
}
}
}
}
namespace PX.Objects.PO{
公共类PorecipEntry\u扩展:pXgrapherExtension{
#区域事件处理程序
十进制总CGT=0 M,
总高度=0米;
受保护的无效POReceiptLine_行已选定(PXCache缓存,PXRowSelectedEventArgs e){
POReceiptLine poRLine=(POReceiptLine)e.行;
if(poRLine!=null){
总CGT=0米;
foreach(Base.splits.Select()中的POReceiptLineSplit行){
POReceiptLineSplitExt POReceiptLineSplitExt=line.GetExtension();
var recentQty=poReceiptLineSplitExt.UsrWgtPerUnit;
var temp=转换为特定值(最近数量);
总CGT=总CGT+温度;
};
var cgt=转换为特定值(总cgt);
如果(总CGT!=null){
cache.SetValue(poRLine,cgt);
//此行正在设置usrWgtIndex的值
cache.SetValue(poRLine,cgt);
};
}
}
}
}
更详细的更新:
cache.SetValue<POReceiptLineExt.usrWgtIndex>(poRLine, cgt);
cache.SetValue(poRLine,cgt);
拆分数据视图取决于“当前”POReceiptLine:
PXSelect<POReceiptLineSplit, Where<POReceiptLineSplit.receiptNbr, Equal<Current<POReceiptLine.receiptNbr>>,
And<POReceiptLineSplit.lineNbr, Equal<Current<POReceiptLine.lineNbr>>,
And<Where<POLineType.goodsForInventory, Equal<Current<POReceiptLine.lineType>>,
Or<POLineType.goodsForSalesOrder, Equal<Current<POReceiptLine.lineType>>,
Or<POLineType.goodsForDropShip, Equal<Current<POReceiptLine.lineType>>>>>>>>> splits;
px选择拆分;
问题在于,当用户在“事务”网格中单击(选择)另一个POReceiptLine时,“当前”POReceiptLine不会更改。在自定义项目中将网格“SyncPosition”设置为true,应确保在用户更改网格中的记录选择时正确设置“Current”值:
嘿,伙计。谢谢回复。但它不起作用。可能我遗漏了一些细节,请检查上面的“更多细节更新”。检查POReceiptLine_RowSelected中Base.transactions.Current的值,确保它与用户选择的行匹配。使用Edit ASPX确保设置了事务网格中的SyncPosition。所有行也将调用RowSelected。我认为您需要一个条件来只计算当前行的自定义字段,而不是所有的line.Base.transactions.current和ASPX都可以。最奇怪的是,如果我在POReceiptLine上更改exist字段或自定义字段控件,就不会发生这种情况。Split始终属于我选择的poreceiptLine。在Acumatica基本产品中,分配弹出窗口的表单dataview(LSPOReceiptLine_lotseropts)中使用的DAC是lotseropptions。我希望您的自定义字段位于该DAC中,但根据您的屏幕截图,您似乎已大幅修改了分配弹出窗口的表单部分,错误也可能存在。如果您重新定义表单以使用另一个DAC,您还需要确保在那里正确设置电流。