如何在NetSuite中为待履行销售订单创建关联的退货授权?
待履行销售订单创建关联退货授权的解决方案
方法1:启用NetSuite内置功能(推荐)
NetSuite默认限制未履行订单创建退货授权,但可通过开启内置功能解除限制:
- 路径:「设置」>「会计」>「会计首选项」>「订单管理」标签页
- 找到「退货授权」板块,勾选Allow Return Authorizations for Unfulfilled Items
- 保存设置后,你原本的
record.transform代码即可正常运行,不会再出现invalid reference错误。
方法2:手动创建退货授权并关联订单行(无需修改系统设置)
若无法启用上述功能,可通过手动关联销售订单行项目的方式实现:
// 创建退货授权记录 var RARec = record.create({ type: record.Type.RETURN_AUTHORIZATION, isDynamic: true, defaultValues: { entity: eCustomer, // 传入对应客户ID location: /* 填写订单对应位置ID */, currency: /* 填写订单对应货币ID */ } }); // 加载原销售订单 var SOrec = record.load({ type: record.Type.SALES_ORDER, id: SOId, isDynamic: false }); // 遍历需退货的商品,关联原订单行 for (var k in returnItemKeys) { let itemId = returnItemKeys[k]; let returnQty = returnItemObj[itemId].quantity; // 定位原销售订单中对应商品的行号 var soLineCount = SOrec.getLineCount({ sublistId: 'item' }); for (var i = 0; i < soLineCount; i++) { var soItem = SOrec.getSublistValue({ sublistId: 'item', fieldId: 'item', line: i }); if (soItem === itemId) { // 添加退货商品行并关联原订单 RARec.selectNewLine({ sublistId: 'item' }); RARec.setCurrentSublistValue({ sublistId: 'item', fieldId: 'createdfrom', value: SOId }); RARec.setCurrentSublistValue({ sublistId: 'item', fieldId: 'line', value: i }); // 原订单行号 RARec.setCurrentSublistValue({ sublistId: 'item', fieldId: 'item', value: itemId }); RARec.setCurrentSublistValue({ sublistId: 'item', fieldId: 'quantity', value: returnQty }); RARec.setCurrentSublistValue({ sublistId: 'item', fieldId: 'amount', value: 0 }); RARec.commitLine({ sublistId: 'item' }); break; } } } // 保存退货授权 var RAId = RARec.save();
关键说明
- 主记录的
createdfrom字段无法直接关联待履行订单,但商品子列表的createdfrom+line字段可绑定原订单的具体行项目,从而建立关联。 - 确保退货数量不超过原订单对应商品的未履行库存数量。
内容的提问来源于stack exchange,提问作者tony2921
相关产品推荐
相关产品推荐

