define([‘N/search’],
function(search) {
function beforeSubmit(context) {
if (context.type === context.UserEventType.CREATE) {
try {
let newRecord = context.newRecord;
let transactionType = newRecord.type;
if (transactionType === ‘salesorder’ || transactionType === ‘estimate’) {
log.debug({
title: “Transaction Type”,
details: “Sales Order or Quote”
});
let customer = newRecord.getValue({
fieldId: ‘entity’
});
if (customer) {
let customerData = search.lookupFields({
type: search.Type.CUSTOMER,
id: customer,
columns: [’email’, ‘custentity_jj_add_mail_add’]
});
let combinedEmails = [];
let standardEmail = customerData.email;
if (standardEmail) {
combinedEmails.push(standardEmail);
}
let customEmailField = customerData.custentity_jj_add_mail_add;
log.debug({
title: “Custom Email Field Value”,
details: customEmailField
});
if (customEmailField) {
let splitEmails = customEmailField.split(‘,’);
splitEmails.forEach(function(email) {
if (!combinedEmails.includes(email.trim())) {
combinedEmails.push(email.trim());
}
});
}
let combinedEmailsString = combinedEmails.join(‘,’);
newRecord.setValue({
fieldId: ’email’,
value: combinedEmailsString
});
}
} else if (transactionType === ‘purchaseorder’) {
log.debug({
title: “Transaction Type”,
details: “Purchase Order”
});
let vendor = newRecord.getValue({
fieldId: ‘entity’
});
if (vendor) {
let vendorData = search.lookupFields({
type: search.Type.VENDOR,
id: vendor,
columns: [’email’, ‘custentity_jj_add_mail_add’]
});
let combinedEmails = [];
let standardEmail = vendorData.email;
if (standardEmail) {
combinedEmails.push(standardEmail);
}
let customEmailField = vendorData.custentity_jj_add_mail_add;
log.debug({
title: “Custom Email Field Value”,
details: customEmailField
});
if (customEmailField) {
let splitEmails = customEmailField.split(‘,’);
splitEmails.forEach(function(email) {
if (!combinedEmails.includes(email.trim())) {
combinedEmails.push(email.trim());
}
});
}
let contact1 = newRecord.getValue({
fieldId: ‘custbody1’
});
let contact2 = newRecord.getValue({
fieldId: ‘custbody2’
});
let contact3 = newRecord.getValue({
fieldId: ‘custbody3’
});
// Fetch emails from contact fields and exclude them from combined emails
if (contact1) {
let contact1Data = search.lookupFields({
type: search.Type.CONTACT,
id: contact1,
columns: [’email’]
});
combinedEmails = combinedEmails.filter(email => email !== contact1Data.email);
}
if (contact2) {
let contact2Data = search.lookupFields({
type: search.Type.CONTACT,
id: contact2,
columns: [’email’]
});
combinedEmails = combinedEmails.filter(email => email !== contact2Data.email);
}
if (contact3) {
let contact3Data = search.lookupFields({
type: search.Type.CONTACT,
id: contact3,
columns: [’email’]
});
combinedEmails = combinedEmails.filter(email => email !== contact3Data.email);
}
let combinedEmailsString = combinedEmails.join(‘,’);
newRecord.setValue({
fieldId: ’email’,
value: combinedEmailsString
});
}
} else {
log.debug({
title: “Transaction Type”,
details: “Neither Sales Order/Quote nor Purchase Order”
});
}
} catch(e) {
log.error({
title: “Error occurred @beforeSubmit”,
details: e
});
}
}
}
return {
beforeSubmit: beforeSubmit
};
});