我们试图弄清楚在创建销售订单时如何在NetSuite中的前缀中添加前缀。我们有一个人编写了适用于第一个订单的脚本,但是此后的任何订单都会得到重复的订单编号提示,因为NetSuite会尝试分配先前的自动生成的编号,因为从技术上讲,对于NetSuite从未使用过该编号。 下面是到目前为止编写的脚本,我们希望就如何解决此问题提供建议?
function setEDIPrefix(){
if(nlapiGetContext().getExecutionContext()=='webservices'&&nlapiGetContext().getUser()==999108){ //user 1646 is my account's SPS user internal id
var id = nlapiGetFieldValue('tranid'); //gets value from 'document number' field
nlapiLogExecution('DEBUG','Id: '+id);
nlapiSetFieldValue('tranid','EDI'+id); //appends "EDI-" prefix to the NetSuite assigned document number
}
}
答案 0 :(得分:1)
我测试了一下,似乎一旦保存了记录,自动生成的tranid就会增加,因此针对您的情况的解决方案是在afterSubmit中而不是beforeSubmit中更改tranid:您可以重新加载当前记录,或者最好使用“ nlapiSubmitField(type, id, fields, values, doSourcing)”功能。
旁注:是时候开始使用SS2.0了:)
尝试以下代码:
if(type == 'create' && nlapiGetContext().getExecutionContext()=='webservices' && nlapiGetContext().getUser() == 999108){ //user 1646 is my account's SPS user internal id
var id = nlapiGetFieldValue('tranid'); //gets value from 'document number' field
nlapiLogExecution('DEBUG','Id: '+id);
nlapiSubmitField(nlapiGetRecordType(), nlapiGetRecordId(), 'tranid', 'EDI' + id);
}
我在操作类型上添加了一个测试:您只需要在创建时进行更新即可。
答案 1 :(得分:0)
对于那些来本文寻求答案的人,有几种方法可以实现此目的,但是它们都取决于netsuite中的配置设置。
步骤1。为自动生成的数字启用Allow Override
功能
在Setup
> Company
> Auto-Generated Numbers
中,选择Document Numbers
标签。对于Sales Order
类型(或任何其他事务类型),选择Allow Override
。
第2步。通过网络服务或用户事件设置tranid
如果您正在编写自己的集成,则可以通过在upsert / save / create操作上设置tranId
字段值来使用Suitetalk上的REST或SOAP更新tranid。对于使用SuiteScript 2.0的用户甚至脚本,您将使用以下内容:
/**
* @NApiVersion 2.x
* @NScriptType usereventscript
*/
define(["N/record", "N/log"],
function(r, log) {
function before_submit(context) {
log.debug("my awesome user event script", "starting")
if (context.type !== context.UserEventType.CREATE) {
log.debug("my awesome user event script", "not a create")
return;
}
var sales_order = context.newRecord;
var order_number = "my awesome tranid";
log.debug("my awesome user event script", "setting tranid => " + order_number)
sales_order.setValue('tranid', order_number);
}
return {
beforeSubmit: before_submit
};
});