在NetSuite销售订单中添加前缀

时间:2019-02-22 14:04:42

标签: netsuite suitescript

我们试图弄清楚在创建销售订单时如何在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
                }
}   

2 个答案:

答案 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
  };
});