网络套件脚本 2.0

Netsuite scripting 2.0

我正在尝试将一个销售订单中的项目子列表中的所有行项目复制到另一个新的销售订单中。我正在获取所有订单项,并在设置订单项时遵循如下所示的顺序:

  1. 物价水平
  2. 项目
  3. 数量
  4. 数量
  5. 税法

问题是所有值都设置正确,但金额和税码字段未设置。这是设置行项目字段的正确顺序吗?如果没有,我应该遵循什么顺序才能成功提交行?

var set=currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'item',
  value:salesOrd_item[j]

});
alert('item is being set');
currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'quantity',
  value:salesOrd_quantity[j]

});
currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'units',
  value:salesOrd_units[j]

});
alert('units are being set');

currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'taxcode',
  value:salesOrd_taxcode[j]

});
currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'price',
  value:salesOrd_pricelevel[j]
});
currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'rate',
  value:salesOrd_rate[j]

});
currentRecord.setCurrentSublistValue({
  sublistId: 'item',
  fieldId: 'amount',
  value:salesOrd_amount,

});

需要考虑的一件事是费率(以及金额)取决于价格水平。您不能设置一个价格水平,然后再设置一个不同于价格水平的自定义费率,NetSuite 将不允许在 UI 中或通过 SuiteScript 进行此操作。如果您尝试从另一个订单复制一行,只需复制价格水平和数量,费率和金额将自动更新。

这导致了第二个考虑。当您在一行中填写一个字段时,其他字段通常会从属于该字段。这是异步发生的,因此如果您在 NetSuite 更新之前填写一个从属字段,您的值将被覆盖。这可能发生在您的税务领域。为避免这种情况,NetSuite 添加了一个名为 fireSlavingSync 的 属性 以确保一行中的每个 setValue 在执行下一行代码之前等待所有从属操作完成。尝试编辑您的行以添加此额外参数,如下所示:

currentRecord.setCurrentSublistValue({
    sublistId: 'item',
    fieldId: 'item',
    value:salesOrd_item[j],
    fireSlavingSync: true
});