问题描述
我正在尝试使用 NetSuite 的自定义选项(SuiteBuilder、SuiteScript 等)在一定程度上模仿 NetSuite 的落地成本功能,然后根据我的要求进一步扩展功能。
为此,我需要在脚本中使用保存的搜索获取交易记录(如账单、采购订单等)中项目子列表的“LANDED COST CATEGORY”行字段的值。
但在保存的搜索中,我无法找到任何可以为我提供 LANDED COST CATEGORY 行字段值的 Column/scriptId。我们可以使用 record.load().getValue() 获取这个值,但我需要从多个事务记录中获取这个值,使用这种方法可能会导致性能问题。那么,请您告诉我们如何使用已保存的搜索来访问此值。
解决方法
我认为 Netsuite 目前不会在保存的搜索中公开该字段。这是 Netsuite 中的 records browser,列出了交易搜索的所有可用搜索列。该列的内部 ID 是 landedcostcategory,它没有显示在列表中。
但是,如果您的目标是在 SuiteScript 中获取此信息,那么您可以使用“N/query”模块。拉出您的采购订单之一,打开 Javascript 控制台 (Ctrl+Shift+J) 并尝试以下操作:
require(['N/query'],(query) => {
const suiteqlQuery = `SELECT
transaction as transaction_id,BUILTIN.DF(transaction) as transaction_name,BUILTIN.DF(item) as item_name,item as item_id,landedcostcategory as landedcostcategory_id,BUILTIN.DF(landedcostcategory) as landedcostcategory_name
FROM
transactionline
WHERE
transaction='<internal id of your PO here>'`;
const results = query.runSuiteQL({query: suiteqlQuery}).asMappedResults();
console.log(JSON.stringify(results,null,2));
/*
Example output for results:
[
{
"transaction_id": "12345","transaction_name": "Purchase Order #PO123456","item_name": "My Favorite iPod","item_id": 1234,"landedcostcategory_id": 1,"landedcostcategory_name": "Duties & Tariffs"
}
]
*/
})