Sending Invoices to Multiple Email Address

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

    };

});

Leave a comment

Your email address will not be published. Required fields are marked *