如何通过在 SuiteScript 2.0 中使用左外连接连接两条记录来在 netsuite 中创建保存的搜索
How to create saved search in netsuite by joining two records using left outer join in SuiteScript 2.0
我想通过在 "suitescript 2.0 version"
中使用左外连接连接两条记录来创建搜索
第一条记录是标准记录(发票),第二条记录是自定义记录(合同),两条记录都具有公共字段 namely:class 和交易类型,所有者。
发票记录字段是交易栏字段(class,交易类型,所有者)
合同记录字段是自定义字段(class,transaction,owner)
我创建了发票记录搜索,并根据发票记录的搜索结果创建了合同记录搜索。我的代码给出了正确的结果,但问题是 "it possible to create an search for two different records using left outer join in SuiteScript 2.0 version?"
//Create Search on Standard Invoice Record
var mySearch = search.create({
type: 'invoice',
columns: ['internalId', 'item', 'line', 'custcol_class', 'custcol_transaction_type', 'custcol_owner', 'amount'],
filters: ['trandate', 'after', '12/15/2015']
});
//Executing the First 100 records on the search result
var searchResult = mySearch.run().getRange(0, 100);
log.debug('Search Length', searchResult.length);
for (var i = 0; i < searchResult.length; i++) {
var lineId = searchResult[i].getValue({
name: 'line'
});
var item = searchResult[i].getValue({
name: 'item'
});
var contractClass = searchResult[i].getValue({
name: 'custcol_class'
});
var transactionType = searchResult[i].getValue({
name: 'custcol_transaction_type'
});
var owner = searchResult[i].getValue({
name: 'custcol_owner'
});
var invoice_id = searchResult[i].getValue({
name: 'internalId'
});
var invoice_amt = searchResult[i].getValue({
name: 'amount'
});
log.debug('Values', 'contractClass:' + contractClass + '-transactionType:' + transactionType + '-owner:' + owner);
if (contractClass != '' && owner != '' && transactionType != '') {
log.debug('create commision', 'item' + item + '-lineId:' + lineId + '-contractClass:' + contractClass + '-transactionType:' + transactionType + '-owner:' + owner);
createCommission(contractClass, transactionType, owner, invoice_id, invoice_amt);
}
}
}
function createCommission(contractClass, transactionType, owner, invoiceId, invoice_amt) {
log.debug('Entry', 'createCommission Initiated');
log.debug('invoice amount..', invoice_amt);
//Creating search on Custom Record Contract
var mySearch = search.create({
type: 'customrecord_contract',
columns: ['internalId', 'custrecord_rec_class', 'custrecord_vendor_fees_formula'],
filters: [
['custrecord_rec_class', 'anyof', contractClass], 'AND', ['custrecor_rec_transaction_type', 'anyof', transactionType], 'AND', ['custrecord__rec_owner', 'anyof', owner], 'AND', ['custrecord__vendor_fees_formula', 'anyof', INRAM_RS_V1]
]
});
}
提前致谢
遗憾的是,NetSuite 目前无法做到这一点。
您将不得不满足于编写一个接受两组结果并相应地组合它们的函数。如果你使用像 lodash 这样的任何数组实用程序库,你可以使用像 _.groupBy
这样的东西来简化组合。
我想通过在 "suitescript 2.0 version"
中使用左外连接连接两条记录来创建搜索第一条记录是标准记录(发票),第二条记录是自定义记录(合同),两条记录都具有公共字段 namely:class 和交易类型,所有者。
发票记录字段是交易栏字段(class,交易类型,所有者) 合同记录字段是自定义字段(class,transaction,owner)
我创建了发票记录搜索,并根据发票记录的搜索结果创建了合同记录搜索。我的代码给出了正确的结果,但问题是 "it possible to create an search for two different records using left outer join in SuiteScript 2.0 version?"
//Create Search on Standard Invoice Record
var mySearch = search.create({
type: 'invoice',
columns: ['internalId', 'item', 'line', 'custcol_class', 'custcol_transaction_type', 'custcol_owner', 'amount'],
filters: ['trandate', 'after', '12/15/2015']
});
//Executing the First 100 records on the search result
var searchResult = mySearch.run().getRange(0, 100);
log.debug('Search Length', searchResult.length);
for (var i = 0; i < searchResult.length; i++) {
var lineId = searchResult[i].getValue({
name: 'line'
});
var item = searchResult[i].getValue({
name: 'item'
});
var contractClass = searchResult[i].getValue({
name: 'custcol_class'
});
var transactionType = searchResult[i].getValue({
name: 'custcol_transaction_type'
});
var owner = searchResult[i].getValue({
name: 'custcol_owner'
});
var invoice_id = searchResult[i].getValue({
name: 'internalId'
});
var invoice_amt = searchResult[i].getValue({
name: 'amount'
});
log.debug('Values', 'contractClass:' + contractClass + '-transactionType:' + transactionType + '-owner:' + owner);
if (contractClass != '' && owner != '' && transactionType != '') {
log.debug('create commision', 'item' + item + '-lineId:' + lineId + '-contractClass:' + contractClass + '-transactionType:' + transactionType + '-owner:' + owner);
createCommission(contractClass, transactionType, owner, invoice_id, invoice_amt);
}
}
}
function createCommission(contractClass, transactionType, owner, invoiceId, invoice_amt) {
log.debug('Entry', 'createCommission Initiated');
log.debug('invoice amount..', invoice_amt);
//Creating search on Custom Record Contract
var mySearch = search.create({
type: 'customrecord_contract',
columns: ['internalId', 'custrecord_rec_class', 'custrecord_vendor_fees_formula'],
filters: [
['custrecord_rec_class', 'anyof', contractClass], 'AND', ['custrecor_rec_transaction_type', 'anyof', transactionType], 'AND', ['custrecord__rec_owner', 'anyof', owner], 'AND', ['custrecord__vendor_fees_formula', 'anyof', INRAM_RS_V1]
]
});
}
提前致谢
遗憾的是,NetSuite 目前无法做到这一点。
您将不得不满足于编写一个接受两组结果并相应地组合它们的函数。如果你使用像 lodash 这样的任何数组实用程序库,你可以使用像 _.groupBy
这样的东西来简化组合。