在将 netsuite 销售订单转换为履行时,您如何 select 履行订单项?

How do you select line items to fulfill when transforming a netsuite sales order to fulfillment?

尝试使用

转换 NetSuite 销售订单

 var fulfillment = record.transform({
   fromType: record.Type.SALES_ORDER,
   fromId: currentRecord.id,
   toType: record.Type.ITEM_FULFILLMENT,
   isDynamic: true
 });

收到错误“USER_ERROR”,“消息”:“您必须为此交易输入至少一个订单项。”

fulfillment 包含 7 个订单项,但在 fulfillment.save() 之后 returns 没有订单项添加到 fulfillment 中的错误。

有没有办法select 完成哪些行?想一想,在查看销售订单时,您如何单击履行,然后可以单击要包含在该履行中的行项目的复选框。

谢谢

如果销售订单包含可履行的行,则履行行可能会出现未选中“履行”复选框的情况。这是通过设置 -> 会计 -> 会计首选项中的复选框 'DEFAULT ITEMS TO ZERO RECEIVED/FULFILLED' 控制的;订单管理选项卡;履行部分。

考虑到您帐户中的效果,它可能已被选中,因此如果您只是创建并保存项目履行,则默认情况下不会履行任何行。

通常在编写实现脚本时,我会迭代这些行并执行如下操作:

 var shouldFulfill = someLogic();
 itemFulfillment.setSublistValue({sublistId:'item', fieldId:'itemreceive', line:idx, value:shouldFufill});

或者像你的情况 isDynamic:true

itemFulfillment.setCurrentSublistValue({sublistId:'item', fieldId:'itemreceive', line:idx, value:shouldFufill});

有一个名为“itemreceive”的交易列字段。此 'itemreceive' 字段等同于 UI 中的商品配送创建记录页面上的 'Fulfill' 复选框。以下代码应该有效

//transform SO to create a new Item fulfillment
var fulfillment = record.transform({
  fromType: record.Type.SALES_ORDER,
  fromId: currentRecord.id,
  toType: record.Type.ITEM_FULFILLMENT,
  isDynamic: true
});

//get line count of newly created fulfillment
var lineCount = fulfillment.getLineCount({
    sublistId: 'item'
});

//for each line set the "itemreceive" field to true
for (var i = 0; i < lineCount; i++) {
  fulfillment.selectLine({
      sublistId: 'item',
      line: i
  });
  fulfillment.setCurrentSublistValue({
      sublistId: 'item',
      fieldId: 'itemreceive',
      value: true
  });

  //set other relevant sublist fields
  fulfillment.setCurrentSublistValue({
      sublistId: 'item',
      fieldId: 'fieldId',
      value: 'value'
  });
  fulfillment.commitLine({
      sublistId: 'item'
  });
}

//set any other relevant itemreceive fields
itemreceive.setValue({
  filedId: 'fieldId',
  value: 'value'
});

//save the newly created itemreceive
var itemreceiveId = itemreceive.save({
  enableSourcing: true, //optional, defaul is false
  ignoreMandatoryFields: true  //optional, defaul is false
});