NetSuite - 排序项目

NetSuite - Sorting Line Items

我想创建一个用户事件脚本(提交事件之前),应用于交易(采购订单、销售订单),该脚本将根据特定字段(即项目名称)对项目行进行排序。

我的方法是将所有信息存储在一个数组中,对其进行排序,然后使用 API nlapiRemoveLineItem 方法删除每个项目和 nlapiInsertLineItem 方法以正确的顺序插入每个项目。

但是,对于这种方法,我需要在删除和插入之前存储所有列的值,我担心的是 NetSuite 可能会在插入行或提交记录时由于任何特定验证而引发错误。

是否有任何不同的方法可以更轻松地对订单项进行排序?任何建议将不胜感激。

除了性能问题之外,还有一个最重要的问题是,一旦该行有履行或发票连接到它,您就 cannot/must 而不是 "sort" 行。因此,您只能在 SO 没有任何关联的情况下进行排序。

原因是您不能 "move" 行项目 - 您必须删除它并在不同的行上重新添加该项目。这样做会破坏 NS 在 SO 行和后续事务之间维护的隐藏的、不可访问的链接。

如果您想在创建的 PO / SO 上打印交易报告,一种常见的替代方法是仅对打印的文档进行排序。使用 nlapiXmlToPDF(),您可以按任意顺序创建 PDF 输出。这也有一些缺点,因为不能再使用标准 PDF 和相关的 rpint 过程,但这比对实际行进行排序要好。

另一种方法是在 UI 中提供两个子列表。真正的 NS 子列表,你不排序,"fake" 子列表维护和排序,使用允许排序的小部件(可能达到漂亮的 Ext JS UI 组件等) .这里的问题当然是保持两个子列表之间的内容同步,但在大多数情况下这听起来很糟糕,但它仍然比真正的子列表的真正排序要好。

参考: Scripted Sales Order Sorting: Suggestions