我想覆盖销售订单窗体上的"免费项目"逻辑。我有一个函数,它根据许多标准计算最终价格,因此我想避免让它清除"单价"字段。
我创建了以下代码:
protected void SOLine_IsFree_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e, PXFieldUpdated InvokeBaseHandler)
{
if(InvokeBaseHandler != null) InvokeBaseHandler(cache, e);
SOLine row = e.Row as SOLine;
// My Price calculation formula goes here.
}
这有效,但当然以下行运行默认代码:
if(InvokeBaseHandler != null) InvokeBaseHandler(cache, e);
但是如果我消除它,我可以选中复选框(并且它有效),但我永远无法取消选中它。尝试取消选中它似乎无济于事。我尝试在代码中设置它的值,认为这可能是问题所在。还尝试复制默认情况下运行的代码,但什么都没有。
提前谢谢。
如果在 UI 中禁用了 IsFree 字段,则需要检查 RowSelected 处理程序上该字段的 SetEnable<>,并查看是否需要更改其 bevavior。
请参阅下面的示例:
protected virtual void SOLine_RowSelected(PXCache sender, PXRowSelectedEventArgs e, PXRowSelected baseMethod)
{
//Calling Base method
if(basemethod != null)
basemethod(sender, e);
................................................
PXUIFieldAttribute.SetEnabled<SOLine.isFree>(sender, e.Row, !autoFreeItem && row.InventoryID != null);
}