getSublistValue is not returning value
I have used getSublistValue to get and set item’s internal id to other custom record’s “product” field. But its setting item name to “product” field instead of item id. Please Help!
/**
@NApiVersion 2.x
@NScriptType ScheduledScript
@NModuleScope SameAccount */
define([‘N/record’,’N/search’,’N/runtime’], function(record,search,runtime) {
function execute(context) {
try {
var script = runtime.getCurrentScript();
var id = script.getParameter({name: ‘custscript_qa_record_id’});
var type = script.getParameter({name: ‘custscript_qa_record_type’});
log.debug(‘i_qa_record_id:’, id+’,i_qa_record_type=’+type);
if(id && type)
{
var REC;
var quote = record.load({type: type, id: id});
log.debug(‘quote:==’,quote);
var customer = quote.getValue({fieldId: ‘entity’});
log.debug(‘customer:==’,customer);
var lineCount = quote.getLineCount({sublistId: ‘item’});
for(var cnt=0; cnt<lineCount; cnt++)
{
var i_quote = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘custcol_far_trn_relatedasset’, line: cnt});
var item_1 = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘item’, line: cnt});
log.debug(‘item_1===’,item_1);
if(i_quote)
{
REC.setValue({fieldId: ‘custrecord_products’, value:item_1 });
}//end of for(var cnt=0; cnt<lineCount; cnt++)
var i_id = quote.save({enableSourcing: true, ignoreMandatoryFields: true});
log.debug(‘i_id:=== ‘+i_id);
}//end of if(id && type)
}catch (error) {
log.debug(‘Error’, error);
}
}
return {
execute: execute
};
});
Hi Maira,
You are loading a quote but you are not creating your custom record on which you are setting a value. You are saving the quote (but you do not set any value on it, so no need to save it) but not your custom record. So your script is not doing anything at that point.
I am already creating a custom record and all other fields are populating properly!
Hi,
What is the type of custrecord_product?
Thanks,
Chris
custrecord_product is list of items
Hi,
Two questions…
Firstly, what do you see logged here:
log.debug(‘item_1===’,item_1);
How come you’re going through all the lines but only setting one field on the custom record?
Thanks,
Chris
Actually, custom record is attached on line level. so respective item id should be set on custom record. Also I have set item name in one of field,
now want to set item id to another field on custom record!
How come we do not see this line in your script?
REC = record.create({type: ‘customrecord_ncfar_asset’, isDynamic: true});
It is there. Now I parsed item value. Will it set internal id now?
/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/
define([‘N/record’,’N/search’,’N/runtime’], function(record,search,runtime) {
function execute(context) {
try {
var script = runtime.getCurrentScript();
var id = script.getParameter({name: ‘custscript_qa_record_id’});
var type = script.getParameter({name: ‘custscript_qa_record_type’});
log.debug(‘i_qa_record_id:’, id+’,i_qa_record_type=’+type);
if(id && type)
{
var REC;
var quote = record.load({type: type, id: id});
log.debug(‘quote:==’,quote);
var customer = quote.getValue({fieldId: ‘entity’});
log.debug(‘customer:==’,customer);
var shipdate = quote.getValue({fieldId: ‘custbody_riggs_ship_date_qt’});
log.debug(‘shipdate:==’,shipdate);
var d_verified_date = quote.getValue({fieldId: ‘custbody_riggs_verified_date_quote’});
log.debug(‘d_verified_date:==’,d_verified_date);
if(shipdate){
var NewShipDate = new Date(shipdate);
}
if(NewShipDate)
{
var lessThanTwoYears = NewShipDate.setDate(NewShipDate.getDate() + 650); // add 650 days in shipdate
}
if(lessThanTwoYears)
{
lessThanTwoYears = new Date(lessThanTwoYears);
log.debug(‘lessThanTwoYears:==’,lessThanTwoYears);
}
if(NewShipDate)
{
var olderThanThreeYears = NewShipDate.setDate(NewShipDate.getDate() + 1095); // add 1095 days in shipdate
}
if(olderThanThreeYears)
{
olderThanThreeYears = new Date(olderThanThreeYears);
log.debug(‘olderThanThreeYears:==’,olderThanThreeYears);
}
var diffDays;
if(d_verified_date)
{
var one_day=1000*60*60*24;
var fromDate = d_verified_date;
var toDate= new Date();
var date1 = format.parse({value:fromDate, type: format.Type.DATE});
var date2 = format.parse({value:toDate, type: format.Type.DATE});
var date3=Math.round((date2-date1)/one_day);
diffDays = date3+1;
}
var lineCount = quote.getLineCount({sublistId: ‘item’});
var date = quote.getValue({fieldId: ‘trandate’});
log.debug(‘date:==’,date);
if(date){
var tranDate = new Date(date);
var endUseDate = tranDate.setDate(tranDate.getDate() + 1095); // add 1095 days in trandate
log.debug(‘endUseDate:==’,new Date(endUseDate));
}
for(var cnt=0; cnt<lineCount; cnt++)
{
var i_quote = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘custcol_far_trn_relatedasset’, line: cnt});
var item = quote.getSublistText({sublistId: ‘item’, fieldId: ‘item’, line: cnt});
var item_1 = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘item’, line: cnt});
log.debug(‘item===’,item+’===item_1===’+item_1);
var itemId=parseInt(item_1);
log.debug(‘i_quote===’,i_quote);
var amount = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘amount’, line: cnt});
log.debug(‘amount’,amount);
var item_department = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘custcol_list_record_department’, line: cnt});
log.debug(‘item_department’,item_department);
var item_class = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘custcol_list_record_class’, line: cnt});
log.debug(‘item_class’,item_class);
var item_division = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘custcol_list_quote_record_div’, line: cnt});
log.debug(‘item_division’,item_division);
var item_display_requirement = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘custcol_list_req_item_display_req’, line: cnt});
log.debug(‘item_display_requirement=’,item_display_requirement);
var serialNum_arr = [];
//Get Serial number/Lot Number from Inventory details
var obj_inventory = quote.getSublistSubrecord({sublistId: ‘item’, fieldId: ‘inventorydetail’,line: cnt});
log.debug(‘obj_inventory:==’,obj_inventory);
var i_cnt = obj_inventory.getLineCount({sublistId:”inventoryassignment”});
log.debug(‘i_cnt:==’,i_cnt);
var serial_Hidden = ”;
for (var i=0; i < i_cnt; i++)
{
if(obj_inventory){
var serialNo = obj_inventory.getSublistText({sublistId: ‘inventoryassignment’,fieldId: ‘issueinventorynumber’,line: i});
log.debug(‘serialNo:==’,serialNo);
serialNum_arr.push(serialNo);
serial_Hidden += serialNo.substring(serialNo.length – 8);
if(i < i_cnt – 1){
serial_Hidden += ‘, ‘;
}
}
}
log.debug(‘array serial_Hidden:==’, serial_Hidden);
log.debug(‘array List:==’, serialNum_arr);
var itemRec = quote.getSublistValue({sublistId: ‘item’, fieldId: ‘item’, line: cnt});
log.debug(‘ItemRec==’,itemRec);
var isinactive;
if(itemRec){
var inventoryItemLookup = search.lookupFields({
type: “inventoryitem”,
id: itemRec,
columns: [‘isinactive’]
});
log.debug(‘inventoryItemLookup’, inventoryItemLookup);
isinactive = inventoryItemLookup.isinactive;
log.debug(‘IsActive=’,isinactive);
}
if(i_quote)
{
REC = record.load({type: ‘customrecord_ncfar_asset’, id:i_quote, isDynamic: true});//FAM record id
REC.setValue({fieldId: ‘customform’, value:101 });
REC.setValue({fieldId: ‘altname’, value:item });
REC.setValue({fieldId: ‘custrecord_products’, value:itemId });
REC.setValue({fieldId: ‘custrecord_assettype’, value: 106});
REC.setValue({fieldId: ‘custrecord_assetcost’, value: amount});
REC.setValue({fieldId: ‘custrecord_assetsubsidiary’, value: 1});
REC.setValue({fieldId: ‘custrecord_customer_fld_lst’, value: customer});
REC.setValue({fieldId: ‘custrecord_fam_account’, value: customer});
//REC.setValue({fieldId: ‘custrecord_asset_ship_date’, value:shipdate});
REC.setValue({fieldId: ‘custrecord_end_use_date1’, value: new Date(endUseDate)});
REC.setValue({fieldId: ‘custrecord_assetresidualvalue’, value:0.00});
/*if(serialNum_arr)
{
serialNum_arr = serialNum_arr.toString().replace(‘[“‘,”);
serialNum_arr = serialNum_arr.toString().replace(‘]”‘,”);
REC.setValue({fieldId: ‘custrecord_assetserialno’, value: serialNum_arr});//serialNum_arr.join(‘, ‘)
}else{
REC.setValue({fieldId: ‘custrecord_assetserialno’, value: ”});
}*/
if(item_division == ’14’ && serial_Hidden){
REC.setValue({fieldId: ‘custrecordasset_serial_hiddeen’, value: serial_Hidden});
}else{
REC.setValue({fieldId: ‘custrecordasset_serial_hiddeen’, value: ”});
}
if(lessThanTwoYears > new Date()){
REC.setValue({fieldId: ‘custrecord_less_than_two_years’, value: true});
}else{
REC.setValue({fieldId: ‘custrecord_less_than_two_years’, value: false});
}
if(item_division){
REC.setValue({fieldId: ‘custrecord_brandd’, value: item_division});
}
if(item_class){
REC.setValue({fieldId: ‘custrecord_product_familys’, value: item_class});
}
if(isinactive == true){
REC.setValue({fieldId: ‘custrecord_discounted_model’, value: true});
}else{
REC.setValue({fieldId: ‘custrecord_discounted_model’, value: false});
}
if(diffDays)
{
REC.setValue({fieldId: ‘custrecord_asset_years_on_display’, value: diffDays});
}
if(olderThanThreeYears < new Date()){
REC.setValue({fieldId: ‘custrecord_older_than_three_year’, value: true});
}else{
REC.setValue({fieldId: ‘custrecord_older_than_three_year’, value: false});
}
/*if(shipdate)
{
REC.setValue({fieldId: ‘custrecord_asset_ship_date’, value: shipdate});
}*/
if(item_display_requirement){
REC.setValue({fieldId: ‘custrecord_list_record_dis_req’, value: item_display_requirement});
}
var recId = REC.save({enableSourcing: true, ignoreMandatoryFields: true});
log.debug(‘Loaded Display Asset Request: ‘+recId);
quote.setSublistValue({sublistId: ‘item’,fieldId: ‘custcol_far_trn_relatedasset’,value: recId,line:cnt});
// quote.setSublistValue({sublistId: ‘item’,fieldId: ‘custcol_created_fam_asset’,line: cnt,value: recId,line:cnt});
}
else
{
REC = record.create({type: ‘customrecord_ncfar_asset’, isDynamic: true});
REC.setValue({fieldId: ‘customform’, value:101 });
REC.setValue({fieldId: ‘altname’, value:item });
REC.setValue({fieldId: ‘custrecord_products’, value:itemId });
REC.setValue({fieldId: ‘custrecord_assettype’, value: 106});
REC.setValue({fieldId: ‘custrecord_assetcost’, value: amount});
REC.setValue({fieldId: ‘custrecord_assetsubsidiary’, value: 1});
REC.setValue({fieldId: ‘custrecord_customer_fld_lst’, value: customer});
REC.setValue({fieldId: ‘custrecord_fam_account’, value: customer});
REC.setValue({fieldId: ‘custrecord_end_use_date1’, value: new Date(endUseDate)});
REC.setValue({fieldId: ‘custrecord_assetresidualvalue’, value:0.00});
/*if(serialNum_arr)
{
REC.setValue({fieldId: ‘custrecord_assetserialno’, value: serialNum_arr});//serialNum_arr.join(‘, ‘)
}else{
REC.setValue({fieldId: ‘custrecord_assetserialno’, value: ”});
}*/
/*if(item_division == ’14’ && serial_Hidden){
REC.setValue({fieldId: ‘custrecordasset_serial_hiddeen’, value: serial_Hidden});
}else{
REC.setValue({fieldId: ‘custrecordasset_serial_hiddeen’, value: ”});
}*/
if(lessThanTwoYears > new Date()){
REC.setValue({fieldId: ‘custrecord_less_than_two_years’, value: true});
}else{
REC.setValue({fieldId: ‘custrecord_less_than_two_years’, value: false});
}
if(item_division){
REC.setValue({fieldId: ‘custrecord_brandd’, value: item_division});
}
if(item_class){
REC.setValue({fieldId: ‘custrecord_product_familys’, value: item_class});
}
if(isinactive == true){
REC.setValue({fieldId: ‘custrecord_discounted_model’, value: true});
}else{
REC.setValue({fieldId: ‘custrecord_discounted_model’, value: false});
}
if(diffDays)
{
REC.setValue({fieldId: ‘custrecord_asset_years_on_display’, value: diffDays});
}
if(olderThanThreeYears < new Date()){
REC.setValue({fieldId: ‘custrecord_older_than_three_year’, value: true});
}else{
REC.setValue({fieldId: ‘custrecord_older_than_three_year’, value: false});
}
/*if(item_display_requirement){
REC.setValue({fieldId: ‘custrecord_list_record_dis_req’, value: item_display_requirement});
}*/
var recId = REC.save({enableSourcing: true, ignoreMandatoryFields: true});
log.debug(‘Created Display Asset Request: ‘+recId);
quote.setSublistValue({sublistId: ‘item’,fieldId: ‘custcol_far_trn_relatedasset’,value: recId,line:cnt});
// quote.setSublistValue({sublistId: ‘item’,fieldId: ‘custcol_created_fam_asset’,value: recId,line:cnt});
}
}//end of for(var cnt=0; cnt<lineCount; cnt++)
var i_id = quote.save({enableSourcing: true, ignoreMandatoryFields: true});
log.debug(‘i_id:=== ‘+i_id);
}//end of if(id && type)
}catch (error) {
log.debug(‘Error’, error);
}
}
return {
execute: execute
};
});
If you are seeing the right entry in NetSuite then everything should be fine.
Item name is setting to product field when using getsublistvalue. I cant test it because its in production. Will know only after tested by client side
.