Javascript NetSuite:编写程序集生成脚本以仅在批准时提取库存
我正在尝试编写一个脚本,如果装配构建正在等待批准,它将阻止成品从库存中提取。这是我编写的第一个脚本,也是我第一次使用Javascript,因此,如果我到目前为止所做的一切毫无意义(如果我听起来很愚蠢),我深表歉意。脚本检查记录是否是正在创建或编辑的程序集生成,然后创建一个临时字段“quantity pending”。保存时,如果审批状态为“等待审批”,则脚本会将“待定数量”的值分配给“要生成的数量”中的值,然后将“要生成的数量”设置为0,并提交记录。如果审批状态为“已批准”,则“要生成的数量”设置为“暂挂数量”中存储的值,且“暂挂数量”设置为0,然后提交记录。如果这毫无意义,我再次道歉 我尝试使用脚本调试器,但我认为我的代码不起作用。有人能指出我哪里出了错,或者我是否走对了方向吗 这是我到目前为止所拥有的。如果有人做过类似的事情或者知道更好的方法,我洗耳恭听Javascript NetSuite:编写程序集生成脚本以仅在批准时提取库存,javascript,netsuite,inventory,suitescript,Javascript,Netsuite,Inventory,Suitescript,我正在尝试编写一个脚本,如果装配构建正在等待批准,它将阻止成品从库存中提取。这是我编写的第一个脚本,也是我第一次使用Javascript,因此,如果我到目前为止所做的一切毫无意义(如果我听起来很愚蠢),我深表歉意。脚本检查记录是否是正在创建或编辑的程序集生成,然后创建一个临时字段“quantity pending”。保存时,如果审批状态为“等待审批”,则脚本会将“待定数量”的值分配给“要生成的数量”中的值,然后将“要生成的数量”设置为0,并提交记录。如果审批状态为“已批准”,则“要生成的数量”设
function commitIfApproved() {
var cR = nlapiGetOldRecord();
var recordId = cR.nlapiGetRecordID();
var recordType = cR.nlapiGetRecordType();
if (recordId == 'assemblybuild') {
if(recordType = 'create' || 'edit') {
var approvalstatus = cR.nlapiGetFieldValue('approval status');
var quantityPending = cR.nlapiGetFieldValue('quantity to build - pending');
if (approvalstatus == "Awaiting Approval") {
cR.nlapiSetFieldValue('quantity to build', '0');
cR.nlapiSetFieldValue('quantity to build - pending', quantityPending);
cR.nlapiSubmitRecord();
alert("Finished goods will not be taken from inventory until this assembly build is approved.");
}
if (approvalstatus == "Approved") {
cR.nlapiSetFieldValue('quantity to build', quantityPending);
cR.nlapiSetFieldValue('quantity to build - pending', '0');
cR.nlapiSubmitRecord();
alert("This assembly build has been approved. Finished goods have been subtracted from inventory.");
}
}
}
}
我看到的第一个错误是您的
recordId
比较。您需要将与assemblybuild
相比的if
语句更改为使用recordType
而不是recordId
其次是在recordId
和recordType
赋值中使用方法调用nlapiGetRecordId()
和nlapiGetRecordType()
是全局静态方法。实例方法是getRecordType()
和getId()
。对setFieldValue
的所有调用也是如此。有关记录对象API的详细信息,请参阅名为nlobjRecord的帮助文章
var recordId=nlapiGetRecordId();//或者,cr.getId()
var recordType=nlapiGetRecordType();//或者,cr.getRecordType();
最后,您的字段ID都是错误的
'quantity to build'
不是真实的ID。您需要在Eclipse IDE(帮助>NetSuite记录浏览器)中的记录浏览器中查看有关程序集生成记录的页面,以查看所有字段及其各自的ID。非常感谢您发现我的错误并将其解释得非常清楚!到目前为止,我还没有对我的代码做任何调整,但如果它有效,我会让你知道的!由于某些原因,在NetSuite文章和帮助中很难找到好的来源。