Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NetSuite:编写程序集生成脚本以仅在批准时提取库存_Javascript_Netsuite_Inventory_Suitescript - Fatal编程技术网

Javascript NetSuite:编写程序集生成脚本以仅在批准时提取库存

Javascript NetSuite:编写程序集生成脚本以仅在批准时提取库存,javascript,netsuite,inventory,suitescript,Javascript,Netsuite,Inventory,Suitescript,我正在尝试编写一个脚本,如果装配构建正在等待批准,它将阻止成品从库存中提取。这是我编写的第一个脚本,也是我第一次使用Javascript,因此,如果我到目前为止所做的一切毫无意义(如果我听起来很愚蠢),我深表歉意。脚本检查记录是否是正在创建或编辑的程序集生成,然后创建一个临时字段“quantity pending”。保存时,如果审批状态为“等待审批”,则脚本会将“待定数量”的值分配给“要生成的数量”中的值,然后将“要生成的数量”设置为0,并提交记录。如果审批状态为“已批准”,则“要生成的数量”设

我正在尝试编写一个脚本,如果装配构建正在等待批准,它将阻止成品从库存中提取。这是我编写的第一个脚本,也是我第一次使用Javascript,因此,如果我到目前为止所做的一切毫无意义(如果我听起来很愚蠢),我深表歉意。脚本检查记录是否是正在创建或编辑的程序集生成,然后创建一个临时字段“quantity pending”。保存时,如果审批状态为“等待审批”,则脚本会将“待定数量”的值分配给“要生成的数量”中的值,然后将“要生成的数量”设置为0,并提交记录。如果审批状态为“已批准”,则“要生成的数量”设置为“暂挂数量”中存储的值,且“暂挂数量”设置为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文章和帮助中很难找到好的来源。