Jira code: AD 13
The client has a custom record “ADV – Ship To” that they need to maintain and keep up to date for EDI customers. So, if the customer is an EDI customer (EDI Trading Partner ID field is populated), then they want to insert new records and update existing records in ADV – Ship To based on insertions/edits in the customer address sub-record.
User event script
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
/*******************************************************************************
* CLIENTNAME:ADVANTUS AD 27 -Workflow or script to keep custom record "ADV -
* Ship To" record updated from Customer Address sublist/records
* ************************************************************************ Date :
* 28/12/2018
*
* Author: Jobin & Jismi IT Services LLP Script Description : Workflow or script
* to keep custom record "ADV - Ship To" record updated from Customer Address
* sublist/records
*
* Date created : 28/12/2018
*
* REVISION HISTORY
*
* Revision 1.1 ${12/01/2019} aj : modified for changes in mapping & Upon Edit
* new record must enter Revision 1.0 ${28/12/2018} aj : created
*
*
******************************************************************************/
define(
[ 'N/record', 'N/search' ],
/**
* @param {record}
* record
* @param {search}
* search
*/
function(record, search) {
/**
* Function definition to be triggered before record is loaded.
*
* @param {Object}
* scriptContext
* @param {Record}
* scriptContext.newRecord - New record
* @param {Record}
* scriptContext.oldRecord - Old record
* @param {string}
* scriptContext.type - Trigger type
* @Since 2015.2
*/
function afterSubmit(scriptContext) {
try {
var addressArray = [];
// to get the old record
var oldCustomerRec = scriptContext.oldRecord;
// to get the New record
var newCustomerRec = scriptContext.newRecord;
var customerName = newCustomerRec.getValue({
fieldId : 'companyname'
});
var custID = scriptContext.newRecord.id;
// to get EDI CustomerID
// custentity_adv_edi_partner_id
var EDI_ID = newCustomerRec.getValue({
fieldId : 'custentity_adv_edi_partner_id'
});
if (EDI_ID) {
var customerSearchObj = search
.create({
type : "customer",
filters : [ [ "internalidnumber",
"equalto", custID ] ],
columns : [
search.createColumn({
name : "altname",
label : "Name"
}),
search
.createColumn({
name : "custrecord_adv_customer_address_ref_num",
join : "Address",
label : "Customer Address Reference Number"
}),
search
.createColumn({
name : "custentity_adv_edi_partner_id",
label : "EDI Partner ID"
}),
search
.createColumn({
name : "custrecord_adv_customer_address_store_id",
join : "Address",
label : "Customer Address Store ID"
}),
search
.createColumn({
name : "custrecord_adv_customer_address_dc",
join : "Address",
label : "Customer Address DC"
}),
search.createColumn({
name : "address",
join : "Address",
label : "Address"
}), search.createColumn({
name : "addressinternalid",
join : "Address",
label : "Address Internal ID"
}) ]
});
var searchResultCount = customerSearchObj.runPaged().count;
var searchResult = customerSearchObj.run().getRange({
start : 0,
end : searchResultCount
});
if (searchResultCount > 0) {
for (var i = 0; i < searchResultCount; i++) {
var addressObj = {};
// to get the address ID
// Reference NUM
var RefNum = searchResult[i]
.getValue({
name : "custrecord_adv_customer_address_ref_num",
join : "Address",
label : "Customer Address Reference Number"
});
// EDI partner ID
var EDI_ID = searchResult[i].getValue({
name : "custentity_adv_edi_partner_id",
label : "EDI Partner ID"
});
// Store ID
var storeID = searchResult[i]
.getValue({
name : "custrecord_adv_customer_address_store_id",
join : "Address",
label : "Customer Address Store ID"
});
// DC ID
var dcID = searchResult[i]
.getValue({
name : "custrecord_adv_customer_address_dc",
join : "Address",
label : "Customer Address DC"
});
// type same as of store id
// shipTo Address Book Id
var id = searchResult[i].getValue({
name : "addressinternalid",
join : "Address",
label : "Address Internal ID"
});
// Ship address
var shipAddress = searchResult[i].getValue({
name : "address",
join : "Address",
label : "Address"
});
addressObj = {
RefNum : RefNum,
EDI_ID : EDI_ID,
storeID : storeID,
dcID : dcID,
shipAddress : shipAddress,
id : id
};
addressArray.push(addressObj);
}
// to craete a EDI record in ShipTo
for (var j = 0; j < addressArray.length; j++) {
// to search for existing or not
var customrecord_adv_ship_toSearchObj = search
.create({
type : "customrecord_adv_ship_to",
filters : [ [
"custrecord_adv_ship_to_addressbook_id",
"anyof",
addressArray[j]["id"] ]
],
columns : [ search.createColumn({
name : "internalid",
label : "Internal ID"
}) ]
});
var searchResultCountShipTo = customrecord_adv_ship_toSearchObj
.runPaged().count;
if (searchResultCountShipTo == 0) {
// craete a new record in ADV-SHipTo
var shipTo = record.create({
type : 'customrecord_adv_ship_to'
});
// to set values
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_customer',
value : custID
});
shipTo.setValue({
fieldId : 'name',
value : checkif(customerName)
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_addressbook_id',
value : checkif(addressArray[j]["id"])
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_address',
value : checkif(addressArray[j]["shipAddress"])
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_dc_id',
value : checkif(addressArray[j]["dcID"])
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_refnum',
value : checkif(addressArray[j]["RefNum"])
});
// store id
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_store_id',
value : checkif(addressArray[j]["storeID"])
});
// type
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_type',
value : checkif(addressArray[j]["storeID"])
});
// EDI Partner Id
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_edi_trad_partner',
value : EDI_ID
});
var shipID = shipTo.save();
} else if (searchResultCountShipTo > 0) {
// already existing records
var searchResult = customrecord_adv_ship_toSearchObj
.run().getRange({
start : 0,
end : 1
});
// to get the internal id
var ID = searchResult[0].getValue({
name : "internalid",
label : "Internal ID"
});
// craete a new record in ADV-SHipTo
var shipTo = record.load({
type : 'customrecord_adv_ship_to',
id : ID
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_customer',
value : custID
});
shipTo.setValue({
fieldId : 'name',
value : customerName
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_addressbook_id',
value : checkif(addressArray[j]["id"])
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_address',
value : checkif(addressArray[j]["shipAddress"])
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_dc_id',
value : checkif(addressArray[j]["dcID"])
});
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_refnum',
value : checkif(addressArray[j]["RefNum"])
});
// store id
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_store_id',
value : checkif(addressArray[j]["storeID"])
});
// type
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_type',
value : checkif(addressArray[j]["storeID"])
});
// EDI Partner Id
shipTo
.setValue({
fieldId : 'custrecord_adv_ship_to_edi_trad_partner',
value : EDI_ID
});
var shipID = shipTo.save();
}
}
}
}
} catch (e) {
log.debug("Err@ FN afterSubmit ", e.message);
log.error("Err@ afterSubmit FN ",e.message);
}
}
/*******************************************************************
* @Function to check if the content is null, if null returns -
*/
function checkif(singleitem) {
if (singleitem == "" || singleitem == null
|| singleitem == undefined) {
return "-";
} else {
return singleitem;
}
}
/*******************************************************************
* @Function to check if the content is null, if null returns - Ends
*/
return {
afterSubmit : afterSubmit
};
});