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