我需要在 NetSuite 中验证内联编辑。
我已经有一个客户端脚本,在正常编辑记录时效果很好。
我尝试在保存之前的功能上添加一个用户事件脚本来验证记录,但似乎内联编辑会忽略这一点。
以前有人遇到过这个吗?
您可以提供的任何见解都会有所帮助。谢谢!
Edits:
UE脚本中的相关代码:
function beforeSubmit(type){
if (type == "create" || type == "edit" || type == "xedit") {
var status = nlapiGetContext().getSetting("SCRIPT", "...");
var amount = Number(nlapiGetContext().getSetting("SCRIPT", "..."));
var nr = nlapiGetNewRecord();
var entitystatus = nr.getFieldValue("entitystatus");
var projectedtotal = Number(nr.getFieldValue("projectedtotal"));
if (entitystatus == status && projectedtotal >= amount) {
var statusText = nr.getFieldText("entitystatus");
var message = "ERROR...";
throw nlapiCreateError("...", message, true);
}
}
}
这适用于机会记录。
正在验证的字段是带有 id 的预计总计projectedtotal
.
我的错误,我误解了如何xedit
处理过nlapiGetNewRecord()
。呼唤nlapiGetNewRecord
在 xedit 中时仅返回已编辑的字段,而不是整个记录。因此,if 语句在 xedit 模式下永远不会为 true,因为金额或状态将为 null(用户不太可能同时编辑这两个字段,并且验证依赖于这两个字段的值)。
我编辑了代码来查找字段值(如果新记录中不存在该字段值)。现在一切都按预期进行了!
感谢大家的帮助!
作为参考,更正后的代码如下。
function beforeSubmit(type){
if (type == "create" || type == "edit" || type == "xedit") {
var status = nlapiGetContext().getSetting("SCRIPT", "...");
var amount = Number(nlapiGetContext().getSetting("SCRIPT", "..."));
var nr = nlapiGetNewRecord();
//Attempt to get values normally
var entitystatus = nr.getFieldValue("entitystatus");
var projectedtotal = Number(nr.getFieldValue("projectedtotal"));
var id = nr.getId();
//If values were null, it's likely they were not edited and
//thus not present in nr. Look them up.
if(!entitystatus){
entitystatus = nlapiLookupField("opportunity", id, "entitystatus");
}
if(!projectedtotal){
projectedtotal = Number(nlapiLookupField("opportunity", id, "projectedtotal"));
}
if (entitystatus == status && projectedtotal >= amount) {
var message = "ERROR...";
throw nlapiCreateError("101", message, true);
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)