Adobe Signature – NetSuite Customization.

To update the custom record used for Adobe signature while an opportunity is created. The custom record for Adobe is customized for updating the recipient email considering the opportunity users. User event script is used to update the custom record with recipient values and the agreement template.

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 */
/**
 * Script Description
 * Script to Set signatory field in oppurtunity
 */
/*******************************************************************************
 * THE GROUP
 *******************************************************************************
 * 
 * Date: 09/04/2018
 * 
 * Author: Jobin & Jismi IT Services LLP
 * 
 * 
 * 09/02/2018 main : Create 
 * 
 * 
 * Adobe E sign 
 *
 ******************************************************************************/
define(['N/record', 'N/runtime', 'N/search', 'N/ui/serverWidget'],
    /**
     * @param {record} record
     * @param {runtime} runtime
     * @param {search} search
     */
    function(record, runtime, search, serverWidget) {
        var main = {
            /**
             * 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
             */
            beforeLoad: function(scriptContext) {
                var subtab = scriptContext.form.addTab({
                    id: 'custpagesubtabidaggremetns',
                    label: 'Aggrement Details'
                });
                log.debug("subtab", subtab);
                var sublist = scriptContext.form.addSublist({
                    id: 'custpage_signatorylist',
                    type: serverWidget.SublistType.INLINEEDITOR,
                    label: 'Signatory Details',
                    tab: 'custpagesubtabidaggremetns'
                });
                /* scriptContext.form.insertSublist({
                     sublist: sublist,
                     nextsublist: 'item'
                 });*/

                var Aggrement = sublist.addField({
                    id: 'custpage_agrrementid',
                    label: 'Aggrements',
                    type: serverWidget.FieldType.TEXT
                });
                sublist.addField({
                    id: 'custpage_signer1',
                    label: 'Signer 1',
                    type: serverWidget.FieldType.TEXT
                });
                sublist.addField({
                    id: 'custpage_signer2',
                    label: 'Signer 2',
                    type: serverWidget.FieldType.TEXT
                });
                sublist.addField({
                    id: 'custpage_cc',
                    label: 'CC',
                    type: serverWidget.FieldType.TEXT
                });
                var values = main.getsublistvalues(scriptContext.newRecord.id);
                for (var i = 0; i < values.length; i++) {
                    main.setsublsitvalues(sublist, values[i], i);
                }
            },
            setsublsitvalues: function(sublist, signerdetails, i) {
                log.debug("signerdetails", signerdetails);
                sublist.setSublistValue({
                    id: 'custpage_agrrementid',
                    line: i,
                    value: main.checkifnull(signerdetails[2].id)
                });
                sublist.setSublistValue({
                    id: 'custpage_signer1',
                    line: i,
                    value: main.checkifnull(signerdetails[2].email)
                });
                sublist.setSublistValue({
                    id: 'custpage_signer2',
                    line: i,
                    value: main.checkifnull(signerdetails[0].email)
                });
                sublist.setSublistValue({
                    id: 'custpage_cc',
                    line: i,
                    value: main.checkifnull(signerdetails[1].email)
                });
            },
            checkifnull: function(argument) {

                if (argument != undefined && argument != null && argument != '')
                    return argument;
                else
                    return '--';
            },
            getsublistvalues: function(id) {

                var aggrementlist = main.searchforaggrement(id)

                return main.getsignerdetails(aggrementlist);

            },
            searchforaggrement: function(id) {

                var customrecord_echosign_agreementSearchObj = search.create({
                    type: "customrecord_echosign_agreement",
                    filters: [
                        ["custrecord_esw_adobe_opportunity.internalidnumber", "equalto", id]
                    ],
                    columns: [
                        search.createColumn({ name: "custrecord_echosign_created", label: "Created By" }),
                        search.createColumn({
                            name: "email",
                            join: "CUSTRECORD_ECHOSIGN_CREATED",
                            label: "Email"
                        }),
                        search.createColumn({ name: "internalid", label: "Internal ID" })
                    ]
                });
                var searchResultCount = customrecord_echosign_agreementSearchObj.runPaged().count;
                var idarray = [];
                customrecord_echosign_agreementSearchObj.run().each(function(result) {
                    idarray.push(result.getValue("internalid"));
                    return true;
                });
                log.debug("idarray", idarray);
                return idarray;
            },
            getsignerdetails: function(aggrementlist) {
                var dataarray = [];
                for (var i = 0; i < aggrementlist.length; i++) {
                    var customrecord_echosign_signerSearchObj = search.create({
                        type: "customrecord_echosign_signer",
                        filters: [
                            ["custrecord_echosign_agree.internalidnumber", "equalto", aggrementlist[i]]
                        ],
                        columns: [
                            search.createColumn({ name: "custrecord_echosign_email", label: "Email" }),
                            search.createColumn({ name: "custrecord_echosign_signer", label: "Signer" }),
                            search.createColumn({ name: "custrecord_echosign_role", label: "Role" }),
                            search.createColumn({ name: "custrecord_echosign_to_order", label: "Signer Order" })
                        ]
                    });
                    var searchResultCount = customrecord_echosign_signerSearchObj.runPaged().count;
                    var aggrementarray = [];
                    customrecord_echosign_signerSearchObj.run().each(function(result) {
                        var signatorydetails = {};
                        signatorydetails.id = aggrementlist[i];
                        log.debug("result.getValue()", result.getValue("custrecord_echosign_email"))
                        signatorydetails.email = result.getValue("custrecord_echosign_email");
                        signatorydetails.role = result.getValue("custrecord_echosign_role");
                        signatorydetails.order = result.getValue("custrecord_echosign_to_order");
                        aggrementarray.push(signatorydetails);
                        return true
                    });

                    dataarray.push(aggrementarray);
                }

                log.debug("dataarray", dataarray);
                return dataarray;
            }

        };
        for (var key in main) {
            if (typeof main[key] === 'function') {
                main[key] = trycatch(main[key], key);
            }
        }

        function trycatch(myfunction, key) {
            return function() {
                try {
                    return myfunction.apply(this, arguments);
                } catch (e) {
                    log.debug("e in  " + key, e);
                    return 15776
                }
            }
        };
        return main;
    });

Leave a comment

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