在SuiteScript中更改送货方式

时间:2019-03-26 16:02:51

标签: javascript suitescript

因此,在这种情况下,订单创建成功,而外部公司实际上处理了订单的交付和运送。数据被导出到他们,对于完成的订单,该信息又被重新导入。尽管如此,有时使用的载体与创建初始订单的人员所期望的载体不同,因此必须更改载体。但是,在使用SuiteScript时,如果必须更改承运人/运输方式,NetSuite可能会有些宽容。根据需要更改的内容,您可能会遇到以下错误:

  

错误:将运送方式切换到另一家承运人是   不支持的操作,因为它需要重新加载项目   该承运人的履行表格。

根据我的经验,这意味着必须删除履行,更改订单上的运输选项(这可能会使现有的成本计算混乱),然后创建新的履行。这条路线是不可取的,因为它打破了与第三方仓库的数据链。由于第三方的系统不允许缺货,因此也需要使用此方法,并且在创建履行之前试图管理发送的订单可以履行的数据已经证明是一场噩梦。

例如,出现此问题是因为接单人假定承运人为UPS,而方法为UPS Freight。现实情况是,承运人将改为YRC或Old Dominion,这需要不同的记录结构。但是,也不能假定它不会是UPS Freight,因为第三方仓库也使用它。他们根据到达目的地的最低成本来选择不同的运营商。我认为这全都归结为NetSuite如何基于承运人/船运方式管理诸如三四个不同的包裹子列表之类的东西。当您通过用户界面进行更改时,它将通过必要的更改重新加载实现,您可以从那里开始。

对于任何想要代码示例的人来说,这是我目前可以提供的最好的示例,如果NetSuite确定更改需要其他程序包子列表,则该示例将失败:

var recId = 1234;
var shipMethod = 5678;
var ifRec = nlapiLoadRecord("itemfulfillment", recId, { recordmode : "dynamic" });
ifRec.setFieldValue("shipcarrier", "nonups");
ifRec.setFieldValue("shipmethod", shipMethod);
nlapiSubmitRecord(ifRec);

我假设也许可以在加载实现时使用初始化值来完成,但是我尝试过的任何事情似乎都不允许作为值初始化值。我的尝试包括以下参数:

  • 载体形式
  • 承运人
  • 运输方法
  • nsi(当您在用户界面中更改船运公司/方法时显示在URL中)

1 个答案:

答案 0 :(得分:0)

我不小心找到了问题的答案...

nlapiSubmitField("itemfulfillment", fulfillmentId,
    ["carrierform", "shipcarrier", "shipmethod"],
    ["ns", "nonups", shipMethod]
);

为“ carrierform”和“ shipcarrier”传递的值取决于目标船的方法。鉴于NetSuite具有不同的“格式”,具体取决于承运人是UPS,FedEx,USPS还是其他,从而驱动在项目履行记录上实际可用的包装子列表,因此必须寻找“ carrierform”值。我只知道UPS运送的值为“ ups”,其他运送的值为“ ns”。我还没有找到使用FedEx或USPS包装子列表时的值。