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 - 对行项目进行排序的主要内容,如果未能解决你的问题,请参考以下文章