我想覆盖“销售订单”表单上的“免费项目”逻辑。我有一个可以根据多个条件计算最终价格的函数,因此,我希望避免将其清除“单价”字段。
我创建了以下代码:
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);
但是,如果我消除了它,我可以选中该复选框(并且它可以工作),但是我永远都不能取消选中它。尝试取消选中它似乎无济于事。我尝试在代码中设置其值,认为可能是问题所在。还尝试复制默认运行的代码,什么也没做。
谢谢。
答案 0 :(得分:1)
如果在UI中禁用了IsFree字段,则要在RowSelected处理函数上检查该字段的SetEnable <>,并查看是否需要更改其行为。
请参见以下示例:
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);
}