Rest Suitescript 2.0设置优惠券和合作伙伴代码

Rest Suitescript 2.0设置优惠券和合作伙伴代码,rest,netsuite,suitescript,Rest,Netsuite,Suitescript,我们在netsuite环境中创建了一个suitescript 2.0脚本。我们正在使用RESTlet访问它 我们的脚本使用不同的字段创建销售订单。它工作正常,但我们无法设置优惠券代码值或合作伙伴代码,我们得到的错误相同。我们正在使用内部ID,并尝试优惠券代码本身 有什么想法吗 错误: { “类型”:“error.SuiteScriptError”, “名称”:“无效的值”, “消息”:“您为以下字段输入了无效的字段值18:couponcode”, “堆栈”:[ “(N/record/record

我们在netsuite环境中创建了一个suitescript 2.0脚本。我们正在使用RESTlet访问它

我们的脚本使用不同的字段创建销售订单。它工作正常,但我们无法设置优惠券代码值或合作伙伴代码,我们得到的错误相同。我们正在使用内部ID,并尝试优惠券代码本身

有什么想法吗

错误:

{
“类型”:“error.SuiteScriptError”,
“名称”:“无效的值”,
“消息”:“您为以下字段输入了无效的字段值18:couponcode”,
“堆栈”:[
“(N/record/recordService.js)”,
“setSalesOrderData(adhoc$-1$debugger.user:71)”,
“saveSaleOrder(即席$-1$调试器。用户:17)”,
“(特设$-1$调试器。用户:107)”,
“(临时$-1$调试器。用户:6)”
],
“原因”:{
“类型”:“内部错误”,
“代码”:“无效值”,
“详细信息”:“您为以下字段输入了无效的字段值18:couponcode”,
“userEvent”:null,
“stackTrace”:[
“(N/record/recordService.js)”,
“setSalesOrderData(adhoc$-1$debugger.user:71)”,
“saveSaleOrder(即席$-1$调试器。用户:17)”,
“(特设$-1$调试器。用户:107)”,
“(临时$-1$调试器。用户:6)”
],
“notifyOff”:false},“id”:“notifyOff”:false
}
}
RESTlet代码:

var objRecord=record.create({
类型:record.type.SALES\u订单,
isDynamic:对
});
/*添加其他值*/
setValue({fieldId:'couponcode',value:538});
var recordId=objRecord.save({
enableSourcing:错误,
ignoreMandatoryFields:false
});

这些优惠券代码是您试图设置的一次性使用代码吗?还是与晋升有关

您在
couponcode
字段中使用哪个内部ID

您也可以共享RESTlet代码的相关部分吗

我在控制台(即客户端脚本)中对销售订单进行了以下测试,它似乎适当地设置了促销和优惠券代码:

require([“N/currentRecord”],函数(c){
c、 get().setValue({
“fieldId”:“couponcode”,
“价值”:1
});
});

其中
1
是促销的内部ID。如果我使用了一个与促销无关的内部ID,我不会得到任何错误,但两个字段中都没有填充任何内容。

我们最终从Netsuite支持部门获得了工作代码,因为在线上对该主题的帮助非常少,我在这里分享。我们在自己的剧本中加入了我们需要的东西,但这个基本的剧本也很好用

从netsuite支持代理:

我创建了一个简单的SuiteScript2.0代码,用于在Partner字段(id:“Partner”)和优惠券代码(id:“couponcode”)中输入值。这两个字段都是下拉字段,而不是多选字段。 字段优惠券代码取决于促销字段,这就是为什么我们应该在“促销代码”字段而不是“couponcode”字段中输入值

/**
 *@NApiVersion 2.x
 *@NScriptType usereventscript
 */

define(['N/record'],
    function(record) {

        function AfterSubmit(context) {


            var result = record.load({
                type: 'salesorder',
                id: 71040,
                isDynamic: true
            });

            result.setValue ({
                fieldId : 'partner',
                value : 45140
            });
            result.setValue ({
                fieldId : 'couponcode',
                value : 'AMARILLO16'
            }); 
            result.save({
                enableSourcing : false,
                ignoreMandatoryFields : true
            });
            return true;
        }

        return {
            afterSubmit: AfterSubmit
        };
});
我们必须对其进行一次修改,以使其适用于我们:

 result.setValue ({
            fieldId : 'partner',
            value : 45140
        });
        result.setText ({
            fieldId : 'couponcode',
            text : 'AMARILLO16'
        }); 
        result.save({
            enableSourcing : false,
            ignoreMandatoryFields : true
        });

您好@erictgrubaugh感谢您花时间关注我们的问题,很难获得对suitescript2.0的支持。我们使用促销内部id尝试了两种多用途优惠券(如何获取此优惠券的内部id??),而我们只尝试了使用优惠券内部id的单用途优惠券。我们仍然得到相同的错误。请注意,我们使用N/record是因为我们试图在创建SO.var objRecord=record.create({type:record.type.SALES_ORDER,isDynamic:true})时应用代码;/*添加其他值…*/objRecord.setValue({fieldId:'couponcode',value:538});var recordId=objRecord.save({enableSourcing:false,ignoreMandatoryFields:false});非常有趣;我只是使用了在列表>营销>促销中找到的一个内部ID。我与促销部门的合作还不够密切,还没有进一步的建议,但我会继续考虑。大家好@ErictGrabaugh我们已经对这个问题进行了更多的研究,我想N/currentRecord与我们无关,我们需要与N/record合作,问题是使用suitescript 2.0设置多选字段的值。你这样做运气好吗?我有另一个经过认证的suitescript2.0开发人员查看了它,但也没有运气。
N/currentRecord
只是一个我能够在浏览器控制台中快速测试的示例。
N/record
的API应该相同。设置多重选择的问题听起来与问题中提到的问题不同。要在2.0中设置多重选择,可以使用
record.setText
并将字符串值数组(要选择的ID)传递给
text
参数。您可以将
null
传递给
text
参数以清除选择。有关该方法,请参阅帮助文档。