使用 Suitescript 从客户记录采购后如何在发票上设置字段
How to set a field on an invoice after sourcing from a customer record using Suitescript
我有以下场景:
发票记录上有一个名为 'contract description' (id:'custbody_contract_description_invoice')
的自定义字段
此值应等于项目记录'contract description' 字段的值
每次最终用户在发票上选择一个项目(在抬头级别),这应该设置合同描述字段的值。
以下脚本实现了这一点:
/**
*@NApiVersion 2.x
*@NScriptType ClientScript
*/
define(["N/search"], function (search) {
// function fieldChanged(context) {
// }
function postSourcing(context) {
var customerRecord = context.currentRecord;
if (context.fieldId == "job") {
var projectId = customerRecord.getValue({ fieldId: "job" });
log.debug("projectid", projectId);
var jobSearchObj = search.create({
type: "job",
filters: [["internalidnumber", "equalto", projectId]],
columns: [
search.createColumn({
name: "custentity_contract_desc_project",
label: "Contract Description",
}),
search.createColumn({
name: "entityid",
join: "customer",
label: "Name",
}),
],
});
var firstResult = jobSearchObj.run().getRange({
start: 0,
end: 1,
})[0];
log.debug("firstresult", firstResult);
var contractDescription = firstResult.getValue(firstResult.columns[0]);
log.debug("contract description", contractDescription);
var invoiceContract = customerRecord.setValue({
fieldId: "custbody_contract_desc_invoice",
value: contractDescription,
});
log.debug("customer contract", invoiceContract);
}
}
return {
postSourcing: postSourcing,
};
});
但是,当客户字段更改时,这会导致记录加载时间出现问题。
有没有更好的方法达到同样的效果? (例如不同的脚本类型)
设置的记录是(在这个例子中):
客户:ABC 营销
子客户:ABC Marketing 子客户
项目(是子客户的项目,不是父客户的项目):ABC Marketing Subcustomer
主要客户
子客户:
项目
如果在用户编辑记录期间不需要引用字段的内容,您可以在用户中的 beforeSubmit
或 afterSubmit
上设置值事件脚本。这将在服务器端 运行,因此比客户端脚本 运行ning 更快。
无需编写脚本。只需为您的自定义字段设置来源。
我有以下场景:
发票记录上有一个名为 'contract description' (id:'custbody_contract_description_invoice')
的自定义字段此值应等于项目记录'contract description' 字段的值
每次最终用户在发票上选择一个项目(在抬头级别),这应该设置合同描述字段的值。
以下脚本实现了这一点:
/**
*@NApiVersion 2.x
*@NScriptType ClientScript
*/
define(["N/search"], function (search) {
// function fieldChanged(context) {
// }
function postSourcing(context) {
var customerRecord = context.currentRecord;
if (context.fieldId == "job") {
var projectId = customerRecord.getValue({ fieldId: "job" });
log.debug("projectid", projectId);
var jobSearchObj = search.create({
type: "job",
filters: [["internalidnumber", "equalto", projectId]],
columns: [
search.createColumn({
name: "custentity_contract_desc_project",
label: "Contract Description",
}),
search.createColumn({
name: "entityid",
join: "customer",
label: "Name",
}),
],
});
var firstResult = jobSearchObj.run().getRange({
start: 0,
end: 1,
})[0];
log.debug("firstresult", firstResult);
var contractDescription = firstResult.getValue(firstResult.columns[0]);
log.debug("contract description", contractDescription);
var invoiceContract = customerRecord.setValue({
fieldId: "custbody_contract_desc_invoice",
value: contractDescription,
});
log.debug("customer contract", invoiceContract);
}
}
return {
postSourcing: postSourcing,
};
});
但是,当客户字段更改时,这会导致记录加载时间出现问题。
有没有更好的方法达到同样的效果? (例如不同的脚本类型)
设置的记录是(在这个例子中):
客户:ABC 营销
子客户:ABC Marketing 子客户
项目(是子客户的项目,不是父客户的项目):ABC Marketing Subcustomer
主要客户
项目
如果在用户编辑记录期间不需要引用字段的内容,您可以在用户中的 beforeSubmit
或 afterSubmit
上设置值事件脚本。这将在服务器端 运行,因此比客户端脚本 运行ning 更快。
无需编写脚本。只需为您的自定义字段设置来源。