Suitescript return a 选定项目的供应商价格

Suitescript to return a the vendor prices for a selected item

大家晚上好,圣诞快乐!!

我觉得我在这件事上撞了天……

我知道每件商品的供应商价格都在每件商品下的子列表中,但我实在想不出如何检索上述信息。

我试过搜索,但它就是无法正常工作。

同样,我尝试在项目记录中寻找用于搜索 "lines" 的子列表内部 ID,但没有成功。我确实在某处读到过关于 'itemvendor' 子列表的信息,但是无法识别 itemRecord.getItemLineCount('itemvendor')。

有什么想法吗?

干杯

史蒂夫

编辑:我能够通过以下代码实现预期的结果(与@Mike Robbins 代码示例基本相同):

var itemRecord = nlapiLoadRecord('inventoryitem',itemID);
var lines = itemRecord.getLineItemCount('itemvendor');
for (var i=1; i <= lines; i++) {
    var vendor = itemRecord.getLineItemValue ('itemvendor','vendor',i);
    if (vendor == vendorID ) {
        nlapiSetCurrentLineItemValue(SUBLIST_Items,'custrecordvpri_currentprice',itemRecord.getLineItemValue('itemvendor','purchaseprice',i))
        nlapiSetCurrentLineItemValue(SUBLIST_Items,'custrecordvpri_vendorcurrency',itemRecord.getLineItemValue('itemvendor','vendorcurrencyname',i))
        nlapiSetCurrentLineItemValue(SUBLIST_Items,'custrecordvpri_prefer',itemRecord.getLineItemValue('itemvendor','preferredvendor',i))
        i = lines + 1;
    }
}

您是正确的,因为 itemvendor 子列表具有供应商购买价格。此代码对我有用:

var item = nlapiLoadRecord('inventoryitem', 122)
var lineItemCount = item.getLineItemCount('itemvendor');
for (var i = 1; i <= lineItemCount; i++) {
    var cost = item.getLineItemValue('itemvendor', 'purchaseprice', i);
    nlapiLogExecution('debug', 'cost', cost);
}

您也可以在搜索中执行此操作。该字段是 vendorcost。请注意,如果您只使用 "vendor" 而不是 'entityid'、'vendor',您将获得首选的供应商信息:

nlapiSearchRecord('item', null, [
    new nlobjSearchFilter('vendorcost', null, 'greaterthan', 0),
    new nlobjSearchFilter('itemid', null, 'contains', 'cable')
], [
    new nlobjSearchColumn('itemid'),
    new nlobjSearchColumn('entityid', 'vendor'),
    new nlobjSearchColumn('vendorcost')
]).forEach(function(it) {
    console.log(it.getValue('itemid') + ' ' + it.getValue('entityid', 'vendor') + ' ' + it.getValue('vendorcost'));
});