因此,我尝试在netsuite中的“销售订单”表单中添加一个按钮,根据您在先前字段中输入的内容验证某些字段 . 我在netsuite中的谷歌浏览器中测试和调试时遇到问题 . 首先,这是我的代码:我在客户端脚本记录中添加了调用此函数的按钮 .
function vsoeValidate(){
var calc = nlapiGetFieldValue('custbody_cv_vsoe_calculation');
calc = nlapiGetFieldValue('custbody_cv_renewal_rev_amount') - (nlapiGetFieldValue('custbody_cv_vsoe_cola') * nlapiGetFieldValue(1-'custbody_cv_vsoe_partner_disc')) - (nlapiGetFieldValue('custbody_cv_vsoe_bts_fees') * (1-nlapiGetFieldValue('custbody_cv_vsoe_partner_disc'))) /
(nlapiGetFieldValue('custbody_cv_vsoe_software_amt') * (1- nlapiGetFieldValue('custbody_cv_vsoe_multiyear_disc')));
nlapiSetFieldValue('custbody_cv_vsoe_calculation', calc);
var display = nlapiGetFieldValue('custbody_cv_vsoe_calculation_disp');
var bucket = nlapiGetFieldValue('custbody_cv_vsoe_bucket');
if(bucket === 'X'){
return false;
}
if(calc > (nlapiGetFieldValue('custbody_cv_vsoe_bucket.custrecord_cv_vsoe_maintenance_rate') *1.15) || calc < ('custbody_cv_vsoe_bucket.custrecord_cv_vsoe_maintenance_rate'*0.85)){
display = '<div style="; background-color:red; color:white;font-weight:bold;text-align:center">Out of bounds</div>';
return true;
}
else{
display = '<div style="; background-color:green; color:white;font-weight:bold;text-align:center">In bounds</div>';
return true;
}
}
当我点击按钮时我得到错误TypeError undefined不是一个函数 .
我真的不知道从哪里开始,是因为vsoeValidate内部的逻辑不对,还是我使用了错误的函数类型?任何帮助都会非常感谢你!
更新:这是我的脚本记录的屏幕截图!
3 回答
您能为我们提供脚本记录设置的屏幕截图吗?
此外,由于您使用的是客户端脚本,因此无需使用pageInit事件来添加自定义按钮 .
在NetSuite中创建脚本记录时,在“脚本”选项卡下有一个“按钮”子选项卡 . 此子选项卡位于“库”子选项卡旁边 .
这里有两列,'标签'和'功能' .
因此,在您的情况下,您可以在“标签”字段中输入“验证VSOE”,在“功能”字段中输入vsoeValidate .
请注意,如果您这样做,只有在创建或编辑记录时才会显示该按钮 .
尝试将函数名称作为字符串传递,即
您提到将vsoeValidate设置为validateField函数 . 您是否希望在用户单击按钮或触发NetSuite的valdiateField事件时运行此函数(在字段更改时,在存储值之前)?
如果你想在NetSuite的validateField事件上运行它,那么该函数必须返回
true
或false
;它无法归还无效 . 现在,按照你的逻辑,你有:if (bucket = 'x')
是赋值操作,而不是相等性检查 . 此赋值操作将返回'x',这是一个真值,因此您的代码将输入if-block . 然后你返回void(undefined
),所以我的猜测是NetSuite试图对你的函数返回的结果做一些事情,但不能因为它返回undefined .validateField函数还会传递一个参数,该参数提供要验证的字段的ID .
您还需要在各个点注入一些控制台日志记录,以便您可以找出脚本失败的位置,而不是仅仅想要读取语法 .