0

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

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

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

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

4

1 回答 1

0

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

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

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

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

参考:脚本化销售订单排序:建议

于 2015-08-12T12:18:04.173 回答