【问题标题】:NetSuite: Scripting assembly builds to only withdraw inventory when approvedNetSuite:脚本程序集构建为仅在获得批准后提取库存
【发布时间】:2016-04-07 19:02:08
【问题描述】:

我正在尝试编写一个脚本,如果组装构建正在等待批准,则该脚本将防止成品从库存中撤出。这是我做过的第一个脚本,也是第一次使用 Javascript,所以如果我到目前为止没有任何意义(如果我听起来很愚蠢),我深表歉意。该脚本检查记录是否是正在创建或编辑的装配构建,然后创建一个临时字段“待定数量”。保存时,如果审批状态为“等待审批”,脚本会将待建数量的值赋值给待建数量,然后将待建数量设置为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.");
            }
        }
    }
}

【问题讨论】:

    标签: javascript netsuite inventory suitescript


    【解决方案1】:

    我看到的第一个错误是与您的 recordId 比较。您需要将与assemblybuild 进行比较的if 语句更改为使用recordType 而不是recordId

    其次是在 recordIdrecordType 分配中的方法调用。 nlapiGetRecordId()nlapiGetRecordType() 是全局静态方法。实例方法是getRecordType()getId()。您对setFieldValue 的所有呼叫也是如此。有关记录对象的 API 的详细信息,请参阅标题为 nlobjRecord 的帮助文章。

    var recordId = nlapiGetRecordId(); // alternatively, cr.getId() var recordType = nlapiGetRecordType(); // alternatively, cr.getRecordType();

    最后,您的字段 ID 都是错误的。 'quantity to build' 不是真实 ID。您需要检查 Eclipse IDE 中的 Records Browser(Help > NetSuite Records Browser),以查看有关 Assembly Build 记录的页面,以查看所有字段及其各自的 ID。

    【讨论】:

    • 非常感谢您发现我的错误并非常清楚地解释它!到目前为止,我还没有对我的代码进行任何调整,但我会告诉你它是否有效!出于某种原因,很难找到有关 NetSuite 文章和帮助的良好资源。
    猜你喜欢
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2015-03-09
    • 2015-08-30
    • 1970-01-01
    • 2020-04-25
    • 2012-08-21
    相关资源
    最近更新 更多