Generate a Suitelet form and automatically populate the sales representative field.

scenario:

Generate a Suitelet form and automatically populate the sales representative field with the sales representative of the customer if the provided email address corresponds to an existing customer.

solution:

/**

 * @NApiVersion 2.1

 * @NScriptType Suitelet

 */

define([‘N/record’, ‘N/search’, ‘N/ui/serverWidget’],

    /**

 * @param{record} record

 * @param{search} search

 * @param{serverWidget} serverWidget

 */

    (record, search, serverWidget) => {

        /**

         * Defines the Suitelet script trigger point.

         * @param {Object} scriptContext

         * @param {ServerRequest} scriptContext.request – Incoming request

         * @param {ServerResponse} scriptContext.response – Suitelet response

         * @since 2015.2

         */

        const onRequest = (scriptContext) => {

            if (scriptContext.request.method === ‘GET’) {

                var form = serverWidget.createForm({

                    title: ‘User Input Form’

                });

                form.addField({

                    id: ‘custpage_jj_first_name’,

                    type: serverWidget.FieldType.TEXT,

                    label: ‘First Name’

                });

                form.addField({

                    id: ‘custpage_jj_last_name’,

                    type: serverWidget.FieldType.TEXT,

                    label: ‘Last Name’

                });

                form.addField({

                    id: ‘custpage_jj_phone’,

                    type: serverWidget.FieldType.PHONE,

                    label: ‘Phone’

                });

                form.addField({

                    id: ‘custpage_jj_email’,

                    type: serverWidget.FieldType.EMAIL,

                    label: ‘Email’

                });

                form.addField({

                    id: ‘custpage_jj_dob’,

                    type: serverWidget.FieldType.DATE,

                    label: ‘DOB’

                });

                var salesRepField = form.addField({

                    id: ‘custpage_jj_acc_manager’,

                    type: serverWidget.FieldType.SELECT,

                    label: ‘Account Manager’

                });

                var employeeSearch = search.load({

                    id: ‘customsearch_jj_salesrep_search’ // Change ‘customsearch_salesrep_search’ to the internal ID of your saved search

                });

                salesRepField.addSelectOption({

                    value: ,

                    text:

                });

                employeeSearch.run().each(function (result) {

                    var salesrepId = result.getValue({

                        name: ‘entityid’

                    });

                    salesRepField.addSelectOption({

                        value: salesrepId,

                        text: salesrepId

                    });

                    return true;

                });

                form.addSubmitButton({

                    label: ‘Submit’

                });

                scriptContext.response.writePage(form);

            }

            else if (scriptContext.request.method === ‘POST’) {

                try {

                    log.debug(‘test’)

                    let fName = scriptContext.request.parameters.custpage_jj_first_name;

                    let lName = scriptContext.request.parameters.custpage_jj_last_name;

                    let phone = scriptContext.request.parameters.custpage_jj_phone;

                    let email = scriptContext.request.parameters.custpage_jj_email;

                    let dobstring = scriptContext.request.parameters.custpage_jj_dob;

                    let accManager = scriptContext.request.parameters.custpage_jj_acc_manager;

                    log.debug(‘fname’, fName);

                    log.debug(‘lname’, lName);

                    log.debug(‘accManager’, accManager);

                    log.debug(‘dob’, dobstring);

                    var dob = new Date(dobstring);

                    // Format dob to match NetSuite’s expected date format (M/D/YYYY)

                    //   var formattedDob = (dob.getMonth() + 1) + ‘/’ + dob.getDate() + ‘/’ + dob.getFullYear();

                    // Set value on the custom record

                    log.debug(‘formattedDob’, dob)

                    let customRecId = createCustomRecord(fName, lName, phone, email, dob, accManager);

                    var detailsHtml = ‘<h2User Data recorded</h2>’;

                    detailsHtml += ‘<p><b>Details successfully saved on record:</b> ‘ + customRecId + ‘</p>’;

                    scriptContext.response.write(detailsHtml);

                }

                catch (e) {

                    log.debug(‘err’, e)

                }

            }

        }

        function createCustomRecord(fName, lName, phone, email, dob, accManager) {

            try {

                // customRecord.setText({

                //     fieldId: ‘custrecord_jj_acc_manager’,

                //     text: accManager

                // });

                var customRecord = record.create({ type: ‘customrecord_jj_user_data’, isDynamic: true });

                log.debug(‘accManager1’, accManager)

                customRecord.setText({

                    fieldId: ‘custrecord_jj_acc_manager’,

                    text: accManager

                });

                if (email) {

                    log.debug(’email’, email)

                    let salesRep = findCusWithEmail(email);

                    log.debug(‘salesRep’, salesRep);

                    if (salesRep) {

                        log.debug(‘salesreppp’)

                        customRecord.setValue({

                            fieldId: ‘custrecord_jj_acc_manager’,

                            value: salesRep

                        });

                    }

                }

                customRecord.setValue({

                    fieldId: ‘custrecord_jj_fname’,

                    value: fName

                });

                customRecord.setValue({

                    fieldId: ‘custrecord_jj_lname’,

                    value: lName

                });

                customRecord.setValue({

                    fieldId: ‘custrecord_jj_user_email’,

                    value: email

                });

                customRecord.setValue({

                    fieldId: ‘custrecord_jj_user_phone’,

                    value: phone

                });

                customRecord.setValue({

                    fieldId: ‘custrecord_jj_dob’,

                    value: dob

                });

                var recordId = customRecord.save({ ignoreMandatoryFields: false });

                log.debug(“record id”, recordId);

                // Sending email notification to trainer

                return recordId;

            }

            catch (e) {

                log.debug(‘err’, e)

            }

        }

        function findCusWithEmail(email) {

            log.debug(‘enter’)

            var customerSearchObj = search.create({

                type: “customer”,

                filters:

                    [

                        [“email”, “is”, email]

                    ],

                columns:

                    [

                        search.createColumn({ name: “salesrep”, label: “Sales Rep” }),

                        search.createColumn({ name: “email”, label: “Email” })

                    ]

            });

            var searchResultCount = customerSearchObj.runPaged().count;

            log.debug(“customerSearchObj result count”, searchResultCount);

            var salesRepIdVal;

            customerSearchObj.run().each(function (result) {

                salesRepIdVal = result.getValue({

                    name: ‘salesrep’

                })

                log.debug(‘salesrep search’, salesRepIdVal)

                // .run().each has a limit of 4,000 results

                return true;

            });

            return salesRepIdVal;

        }

        return { onRequest }

    });

Leave a comment

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