我想创建一个用户事件脚本(在提交事件之前),应用于交易(采购订单,销售订单),它将根据特定字段(即项目名称)对项目行进行排序。
我的方法是将所有信息存储在一个数组中,对其进行排序,然后使用API nlapiRemoveLineItem 方法删除每个项目,并使用 nlapiInsertLineItem 方法插入每个项目正确的顺序。
但是,对于这种方法,我需要在删除和插入之前存储所有列值,我担心的是NetSuite可能会因插入行或提交记录时的任何特定验证而引发错误。
是否有任何不同的方法可以更轻松地对行项目进行排序?任何建议都将受到高度赞赏。
答案 0 :(得分:0)
除了性能问题之外,还有一个重要的问题是,一旦线路有履行或发票连接到线路,您就不能/不能“排序”线路。所以,你只能在SO没有任何关系时进行排序。
原因是您无法“移动”订单项 - 您必须将其删除并在另一条线上重新添加该项。这样做会破坏NS在SO线和后续事务之间维护的隐藏的,无法访问的链接。
如果要在创建的PO / SO上打印交易报告,一种常见的替代方法是仅对打印的文档进行排序。使用nlapiXmlToPDF(),可以按照您想要的顺序创建PDF输出。这也有一些缺点,因为标准的PDF和rpint它的相关过程不能再使用,但这比排序实际的行更好。
另一种方法是在UI中提供两个子列表。你没有排序的真正的NS子列表,以及一个维护和排序的“假”子列表,使用允许排序的小部件(可能只是一个漂亮的Ext JS UI组件等)。这里的问题当然是维护两个子列表之间的内容同步,但是在大多数情况下听起来很糟糕,它仍然比真实子列表的真正排序更好。