![](/img/trans.png)
[英]Suitescript 2.0: event.record.getCurrentSublistField is not a function
[英]How to just initialize the record without trigger “validateline” function in SuiteScript?
NetSuite的發票記錄中有2個字段。
一個是poUnitCost字段,另一個是poTotalCost “字段。
poTotalCost的值等於poUnitCost乘以數量 。
( 公式:poTotalCost = poUnitCost x數量 )
創建記錄后,腳本將調用pageInit,后者會找到相應的字段並將其填充到發票記錄中。
但是,腳本不僅會觸發pageInit函數,還會觸發validateLine函數。
如何在創建記錄時僅觸發pageInit而不觸發validate函數?
代碼如下:
/**
*@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
}
});
您無法停止子列表事件的觸發。 提交一行后, validateLine
將觸發。 您將需要調整validateLine
處理程序以在不希望其執行其正常邏輯的任何情況下返回true
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.