[英]Debugging script Netsuite suitescript in Chrome exception
因此,我试图在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内部的逻辑不正确,还是我使用了错误的函数类型? 任何帮助将是巨大的谢谢!
更新:这是我的脚本记录的屏幕截图!
尝试将函数名称作为字符串传递,即
form.addButton('custpage_validatevsoe', 'Validate VSOE', 'vsoeValidate');
您提到过将vsoeValidate设置为validateField函数。 您是否希望在用户单击按钮时或在NetSuite的valdiateField事件被触发时(在字段更改时,存储值之前)运行此函数?
如果要在NetSuite的validateField事件上运行此函数,则该函数必须返回true
或false
; 它不能返回void。 现在,按照您的逻辑,您有:
if (bucket = 'x') {
return;
}
if (bucket = 'x')
是分配操作,而不是相等性检查。 该赋值操作将返回“ x”,这是一个真实值,因此您的代码将输入该if块。 然后,您返回void( undefined
),所以我的猜测是NetSuite试图对函数返回的结果进行处理,但不能,因为它返回的是undefined。
validateField函数还传递了一个参数,该参数提供了要验证的字段的ID。
您还将需要在各个点注入一些控制台日志,以便您可以找出脚本失败的地方,而不仅仅是尝试猜测语法。
您能否为我们提供脚本记录设置的屏幕截图?
同样,由于您使用的是客户端脚本,因此不需要使用pageInit事件添加自定义按钮。
在NetSuite中创建脚本记录时,在“脚本”选项卡下有一个“按钮”子选项卡。 该子标签位于“库”子标签旁边。
这里有两列,“标签”和“功能”。
因此,在您的情况下,您只需在“标签”字段中输入“ Validate VSOE”,在“功能”字段中输入vsoeValidate。
请注意,如果以这种方式进行操作,则仅在创建或编辑记录时才会显示该按钮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.