NetSuite - 对行项目进行排序

Posted

技术标签:

【中文标题】NetSuite - 对行项目进行排序【英文标题】:NetSuite - Sorting Line Items 【发布时间】:2015-08-11 01:28:56 【问题描述】:

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

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

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

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

【问题讨论】:

您想对创建的 PO/SO 应用排序,还是想创建一个新的 PO/SO,其中项目按名称字段排序? 我想对创建的 PO/SO 应用排序。您知道是否有一种简单的方法对其进行排序,而不是删除所有行并再次包含?谢谢。 【参考方案1】:

除了性能问题之外,还有一个最重要的问题是,一旦线路连接了履行或发票,您就不能/不得“排序”线路。因此,您只能在 SO 没有任何关联的情况下进行排序。

原因是您无法“移动”订单项 - 您必须将其删除并在另一行重新添加该项目。这样做会破坏 NS 在 SO 行和后续事务之间维护的隐藏的、不可访问的链接。

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

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

参考: Scripted Sales Order Sorting: Suggestions

【讨论】:

以上是关于NetSuite - 对行项目进行排序的主要内容,如果未能解决你的问题,请参考以下文章

按自定义数组对行进行排序

r 按新索引对行进行排序

AngularJS按表头对行进行排序

Bootstrap jquery sortable 只对行进行排序?

对行数组的引用进行排序,其中每行都存储为哈希

对行进行排序时优化 Hive GROUP BY