我正在尝试更新账单中的保管人字段。该脚本是一个 webhook,它在支付成功时接收信息,因此当通过 webhook 发送 invoice_id 时,系统会搜索发票信息。那时我需要更新一个字段以将其设置为“付费”。我的代码如下;
var netsuiteInformation = nlapiSearchRecord('vendorbill', null, filters, columns);
markInvoiceAsPaid(netsuiteInformation, foo)
function markInvoiceAsPaid(infoDocNetsuite, data) {
var status = infoDocNetsuite[0].getValue('custbody_payment_status');
infoDocNetsuite[0].nlapiSetFieldValue('custbody_payment_status', 3);
infoDocNetsuite[0].nlapiSetFieldValue('custbody_reject_reason', data.reasonDescription);
}
搜索执行没有问题,但是当我尝试使用
nlapiSetFieldValue
或 setFieldValue
进行更新时,我从 netsuite 中收到这样的错误:
TypeError: Cannot find function nlapiSetFieldValue in object nlobjSearchResult. (cancelPaymentWebhook.js$4053079#30)
所以我不知道如何进行更新。你知道怎么做吗?
谢谢!
nlapiSetFieldValue 不是搜索结果对象的成员。如果这是客户端脚本或用户事件,您可以直接调用该函数,否则您将需要使用
nlapiLoadRecord(type, id)
加载记录并使用 recordObj.setFieldValue(fieldId, value)
更新它
var netsuiteInformation = nlapiSearchRecord('vendorbill', null, filters, columns);
markInvoiceAsPaid(netsuiteInformation, foo)
function markInvoiceAsPaid(infoDocNetsuite, data) {
var status = infoDocNetsuite[0].getValue('custbody_payment_status');
nlapiSetFieldValue('custbody_payment_status', 3);
nlapiSetFieldValue('custbody_reject_reason', data.reasonDescription);
}