使用 SuiteScript 创建直销库存项目时出错
Error creating dropship inventory item with SuiteScript
我收到以下错误:
“下降 ship/Special 订单商品必须有首选供应商和购买价格。”
来自此 SuiteScript 函数,其中包含首选供应商和购买价格的赋值。所以,我 setting/creating itemvendor 子列表的方式一定有问题吗?
function createItemRecord(item, vendor, subsidiary) {
log.audit({
title: 'createItemRecord...',
details: {ITEM: item, VENDOR: vendor, SUBSIDIARY: subsidiary}
});
var itemRecord = record.create({
type: record.Type.INVENTORY_ITEM,
isDynamic: true
});
itemRecord.setValue({
fieldId: "itemid",
value: item.sku
}).setValue({
fieldId: "displayname",
value: item.summary
}).setValue({
fieldId: "purchasedescription",
value: item.details
}).setValue({
fieldId: "isspecialorderitem",
value: true
}).setValue({
fieldId: "cost",
value: item.price
});
itemRecord.selectNewLine({
sublistId: 'itemvendor'
});
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'vendor',
value: vendor
});
/* vendor.internalId */
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'purchaseprice',
value: item.price
});
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'subsidiary',
value: subsidiary.internalId
});
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'preferredvendor',
value: true
});
itemRecord.commitLine({
sublistId: 'itemvendor'
});
itemRecord.save({
enableSourcing: true,
ignoreMandatoryFields: false
});
}
函数开头的审核日志消息表明正在将以下值传递给函数:
{"ITEM":{"sku":"SKU #1","catalogcode":"1804","summary":"Billiard Table","details":"Billiard Table","价格":9999.99},
“供应商”:“1648”,
"SUBSIDIARY":{"internalId":"3","externalId":"","type":"subsidiary"}
}
我不确定为什么它必须以这种方式工作,但我为解决此问题所做的是在 createItemRecord 函数之外设置特殊订单项目标志。 createItemRecord 将设置包含子列表供应商项目的项目并保存记录。 Return 给调用者的新记录 ID。调用者将此记录 ID 传递给函数以通过将特殊订单项目标志设置为 true 来更新记录。
function createItemRecord(item, vendor, subsidiary) {
...
var recordId = itemRecord.save({
enableSourcing: true,
ignoreMandatoryFields: false
});
return recordId;
}
function makeItemSpecialOrder(itemId)
{
log.audit({
title: 'makeItemSpecialOrder...',
details: itemId
});
var itemRecord = record.submitFields({
type: record.Type.INVENTORY_ITEM,
id: itemId,
values: {
isspecialorderitem: true
},
options: {
enableSourcing: false,
ignoreMandatoryFields: true
}
});
}
我收到以下错误:
“下降 ship/Special 订单商品必须有首选供应商和购买价格。”
来自此 SuiteScript 函数,其中包含首选供应商和购买价格的赋值。所以,我 setting/creating itemvendor 子列表的方式一定有问题吗?
function createItemRecord(item, vendor, subsidiary) {
log.audit({
title: 'createItemRecord...',
details: {ITEM: item, VENDOR: vendor, SUBSIDIARY: subsidiary}
});
var itemRecord = record.create({
type: record.Type.INVENTORY_ITEM,
isDynamic: true
});
itemRecord.setValue({
fieldId: "itemid",
value: item.sku
}).setValue({
fieldId: "displayname",
value: item.summary
}).setValue({
fieldId: "purchasedescription",
value: item.details
}).setValue({
fieldId: "isspecialorderitem",
value: true
}).setValue({
fieldId: "cost",
value: item.price
});
itemRecord.selectNewLine({
sublistId: 'itemvendor'
});
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'vendor',
value: vendor
});
/* vendor.internalId */
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'purchaseprice',
value: item.price
});
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'subsidiary',
value: subsidiary.internalId
});
itemRecord.setCurrentSublistValue({
sublistId: 'itemvendor',
fieldId: 'preferredvendor',
value: true
});
itemRecord.commitLine({
sublistId: 'itemvendor'
});
itemRecord.save({
enableSourcing: true,
ignoreMandatoryFields: false
});
}
函数开头的审核日志消息表明正在将以下值传递给函数:
{"ITEM":{"sku":"SKU #1","catalogcode":"1804","summary":"Billiard Table","details":"Billiard Table","价格":9999.99}, “供应商”:“1648”, "SUBSIDIARY":{"internalId":"3","externalId":"","type":"subsidiary"} }
我不确定为什么它必须以这种方式工作,但我为解决此问题所做的是在 createItemRecord 函数之外设置特殊订单项目标志。 createItemRecord 将设置包含子列表供应商项目的项目并保存记录。 Return 给调用者的新记录 ID。调用者将此记录 ID 传递给函数以通过将特殊订单项目标志设置为 true 来更新记录。
function createItemRecord(item, vendor, subsidiary) {
...
var recordId = itemRecord.save({
enableSourcing: true,
ignoreMandatoryFields: false
});
return recordId;
}
function makeItemSpecialOrder(itemId)
{
log.audit({
title: 'makeItemSpecialOrder...',
details: itemId
});
var itemRecord = record.submitFields({
type: record.Type.INVENTORY_ITEM,
id: itemId,
values: {
isspecialorderitem: true
},
options: {
enableSourcing: false,
ignoreMandatoryFields: true
}
});
}