我正在尝试通过 SuiteScript 2 创建 Dropship 采购订单。我能够使用正确的 Drop ship 数据(客户、销售订单、Dropship 表单)创建采购订单对象,但是在保存时出现以下错误“您必须输入此交易的至少一个订单项。”。我可以从销售订单中手动创建直接发货,并且项目添加得很好。我正在使用 Netsuite OneWorld。
下面是我使用的代码
var purchaseOrder = record.create({
type: record.Type.PURCHASE_ORDER,
isDynamic: true,
defaultValues: {
soid: 4427821,
dropship: true,
subsidiary: 9,
custid: 666,
entity: 322
}
});
purchaseOrder.setValue({
fieldId: "employee",
value: 3
});
log.debug("Item Count", purchaseOrder.getLineCount("item"));
log.debug("Entity", purchaseOrder.getText("entity"));
log.debug("Customer", purchaseOrder.getText("shipto"));
log.debug("Sales Order", purchaseOrder.getText("createdfrom"));
log.debug("Form", purchaseOrder.getText("customform"));
log.debug("Subsidiary", purchaseOrder.getText("subsidiary"));
purchaseOrder.save();
这里还有一些截图
我有创建独立 PO 的现有脚本,所以我对此处所需的过程有一些了解。我是否特别缺少 Dropships 的步骤?我发现了这个线程,其中 Will Charbonneau 说这应该是您所需要的全部“https://stackoverflow.com/questions/61936920/netsuite-how-to-link-purchase-order-to-sales-order”。我用我的 ID 尝试了他们的代码,但结果是同样的错误。
defaultValue 对象只接受
entity
值。请查看record.create defaultValue
docs.
要添加您的货件,您可以通过将任何其他项目添加到
item
子列表来实现。
var purchaseOrderRecordObj = record.create({
type: record.Type.PURCHASE_ORDER,
isDynamic: true,
defaultValues: {
entity: 322
}
});
purchaseOrderRecordObj.setValue({ fieldId: 'createdfrom', value: 4427821, ignoreFieldChange: false }); //createdfrom no soid
purchaseOrderRecordObj.setValue({ fieldId: 'subsidiary', value: 9, ignoreFieldChange: false });
purchaseOrderRecordObj.setValue({ fieldId: 'memo', value: "Created from Sales Order as Dropship", ignoreFieldChange: false });
purchaseOrderRecordObj.setValue({ fieldId: 'employee', value: 3, ignoreFieldChange: false });
purchaseOrderRecordObj.selectNewLine({ sublistId: 'item' });
purchaseOrderRecordObj.setCurrentSublistValue({ sublistId: 'item', fieldId: 'item', value: '<DROP_SHIP_ITEM_ID', ignoreFieldChange: false })
//if you want to change the quantity, or the price do here ...
purchaseOrderRecordObj.commitLine({ sublistId: 'item', ignoreRecalc: false })
purchaseOrderRecordObj.save({ ignoreMandatoryFields: true });
希望这有帮助。