NetSuite Drop Ship场景下采购订单附加装箱单及数量字段获取问询
获取Drop Ship采购订单对应Item Fulfillment的数量字段值
关联逻辑梳理
Drop Ship类型的采购订单(createdfrom.type = Drop Ship),其createdfrom指向生成它的销售订单(SO)。Item Fulfillment(IF)绑定到该SO,且IF的商品行与PO的商品行通过sublist.item.purchaseorder字段关联,这是获取对应行字段的核心关联点。
具体实现方案(SuiteScript示例)
方案1:通过搜索批量获取匹配的IF行
直接构建搜索,关联PO、SO、IF三者,精准定位对应商品行的字段:
const poRecord = currentRecord.get(); // 假设当前上下文为PO记录 const poId = poRecord.id; const soId = poRecord.getValue({ fieldId: 'createdfrom' }); const ifSearch = search.create({ type: search.Type.ITEM_FULFILLMENT, filters: [ ['createdfrom', 'anyof', soId], 'AND', ['item.purchaseorder', 'anyof', poId] ], columns: [ 'quantityordered', 'quantityshipped', 'quantitybackordered' ] }); const results = ifSearch.run().getRange({ start: 0, end: 1000 }); results.forEach(res => { const qtyOrdered = res.getValue('quantityordered'); const qtyShipped = res.getValue('quantityshipped'); const qtyBackordered = res.getValue('quantitybackordered'); // 此处处理拿到的字段值,比如写入PO自定义字段或生成装箱单 });
方案2:加载IF后遍历匹配商品行
如果已知关联的IF ID,可直接加载记录后逐行匹配PO的商品行:
const ifRecord = record.load({ type: record.Type.ITEM_FULFILLMENT, id: ifId // 可通过SO的关联搜索获取IF ID }); const lineCount = ifRecord.getLineCount({ sublistId: 'item' }); for (let i = 0; i < lineCount; i++) { const linkedPoId = ifRecord.getSublistValue({ sublistId: 'item', fieldId: 'purchaseorder', line: i }); if (linkedPoId === poRecord.id) { const qtyOrdered = ifRecord.getSublistValue({ sublistId: 'item', fieldId: 'quantityordered', line: i }); const qtyShipped = ifRecord.getSublistValue({ sublistId: 'item', fieldId: 'quantityshipped', line: i }); const qtyBackordered = ifRecord.getSublistValue({ sublistId: 'item', fieldId: 'quantitybackordered', line: i }); // 处理字段值 break; } }
配套需求的其他处理
- 客户账单地址直接通过
poRecord.getValue({ fieldId: 'createdfrom.billaddress' })获取即可。 - 装箱单商品列表直接复用PO的商品行,无需从SO或IF提取。
- 装箱单编号直接使用PO的编号,跳过IF的编号字段。
内容的提问来源于stack exchange,提问作者Amit Kadlag
相关产品推荐
相关产品推荐

