Javascript 如何在没有触发器的情况下初始化记录;validateline“;SuiteScript中的函数?
NetSuite的发票记录中有2个字段 一个是PounditCost字段,另一个是poTotalCost字段 poTotalCost的值等于磅成本乘以数量 (公式:poTotalCost=磅成本x数量) 创建记录后,脚本将调用pageInit,找到相应的字段并将其填充到发票记录中 但是,脚本不仅触发pageInit函数,还触发validateLine函数 如何在创建记录时只触发pageInit而不触发validate函数 代码如下:Javascript 如何在没有触发器的情况下初始化记录;validateline“;SuiteScript中的函数?,javascript,netsuite,suitescript2.0,clientscript,Javascript,Netsuite,Suitescript2.0,Clientscript,NetSuite的发票记录中有2个字段 一个是PounditCost字段,另一个是poTotalCost字段 poTotalCost的值等于磅成本乘以数量 (公式:poTotalCost=磅成本x数量) 创建记录后,脚本将调用pageInit,找到相应的字段并将其填充到发票记录中 但是,脚本不仅触发pageInit函数,还触发validateLine函数 如何在创建记录时只触发pageInit而不触发validate函数 代码如下: /** *@NApiVersion 2.x *@NScri
/**
*@NApiVersion 2.x
*@NScriptType ClientScript
*/
define(['N/currentRecord', 'N/record', 'N/search'],
function (currentRecord, record, search) {
function pageInit(context) {
console.log('inside pageinit function');
var rec = context.currentRecord;
var createdFromID = rec.getValue({
fieldId: 'createdfrom'
});
var so_record = record.load({
type: record.Type.SALES_ORDER,
id: createdFromID
// isDynamic: true
});
var inv_lines = rec.getLineCount({
sublistId: 'item'
});
for (var i = 0; i < inv_lines; i++) {
var soLineID = rec.getCurrentSublistValue({
sublistId: 'item',
fieldId: 'so_line_id_in_Inv',
line: i
});
// Find the index of line whose 'custcol_so_line_id' field is soLineIDINV
var soLineNumber = so_record.findSublistLineWithValue({
sublistId: 'item',
fieldId: 'so_line_id_in_SO',
value: soLineID
});
var poUnitCost = so_record.getSublistValue({
sublistId: 'item',
fieldId: 'unit_cost_in_SO',
line: soLineNumber
});
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'unit_cost_in_Inv',
value: poUnitCost,
line: i
// fireSlavingSync: true
});
var lineQty = rec.getCurrentSublistValue({
sublistId: 'item',
fieldId: 'quantity',
line: i
});
var poTotalCost = lineQty * poUnitCost;
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'total_cost_in_Inv',
value: poTotalCost,
line: i
// fireSlavingSync: true
});
}
return true;
}
function validateLine(context) {
console.log('inside validateLine function');
var rec = context.currentRecord;
var sublistName = context.sublistId;
if (sublistName == 'item') {
var poUnitCost = rec.getCurrentSublistValue({
sublistId: 'item',
fieldId: 'unit_cost_in_Inv',
});
var lineQty = rec.getCurrentSublistValue({
sublistId: 'item',
fieldId: 'quantity',
});
var poTotalCost = lineQty * poUnitCost;
rec.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'total_cost_in_Inv',
value: poTotalCost
// fireSlavingSync: true
});
}
return true;
}
return {
pageInit: pageInit,
validateLine: validateLine
}
});
/**
*@NApiVersion 2.x
*@NScriptType客户端脚本
*/
定义(['N/currentRecord','N/record','N/search'],
功能(当前记录、记录、搜索){
函数pageInit(上下文){
log('insidepageinit函数');
var rec=context.currentRecord;
var createdFromID=rec.getValue({
fieldId:“createdfrom”
});
var so_record=record.load({
类型:record.type.SALES\u订单,
id:createdFromID
//isDynamic:对
});
var inv_lines=rec.getLineCount({
子列表:“项”
});
对于(变量i=0;i
您无法停止子列表事件的触发。当提交一行时,validateLine
将触发。您需要调整validateLine
处理程序,以便在不希望它执行其正常逻辑的任何情况下返回true
。您无法停止子列表事件的触发。当行已提交,validateLine
将启动。您需要调整validateLine
处理程序,以便在不希望它执行其正常逻辑的任何情况下返回true
。嗨,erictgrubaugh,我添加了“返回”“对于每个入口点函数,您能否建议如何避免在执行pageInit函数时触发validateLine函数?”?谢谢您无法避免触发它,所以您只需要确保您的处理程序足够聪明,在不需要的情况下不会执行任何操作。最后,我声明了一个全局标志,以告知进程当前是否在pageInit函数中。当进程运行到validateLine函数中时,如果该标志为true,则validate函数将被禁用。嗨,ErictGrabaugh,我为每个入口点函数添加了“return”语句,您能否建议如何避免在执行pageInit函数时触发validateLine函数?谢谢您无法避免触发它,所以您只需要确保您的处理程序足够聪明,在不需要的情况下不会执行任何操作。最后,我声明了一个全局标志,以告知进程当前是否在pageInit函数中。当进程运行到validateLine函数中时,如果该标志为true,则将禁用validate函数。