Custom button Action for creating a record using user event and Client script

Custom button action for creating a case record using User Event and Client script.

/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 */

define(['N/currentRecord', 'N/record' ],
    /**
    * @param{currentRecord} currentRecord
    * @param{record} record
    */
    (currentRecord, record,) => {


        /**
         * Defines the function definition that is executed before record is loaded.
         * @param {Object} scriptContext
         * @param {Record} scriptContext.newRecord - New record
         * @param {string} scriptContext.type - Trigger type; use values from the context.UserEventType enum
         * @param {form} scriptContext.form - Current form
         * @param {ServletRequest} scriptContext.request - HTTP request information sent from the browser for a client action only.
         * @since 2015.2
         */
        const beforeLoad = (scriptContext) => {
            try {
               // log.debug( 'current form is',scriptContext.form);
               
               if( scriptContext.newRecord.type ==  "customrecord_jj_stor_custmr_req_ahap1473"){   //custom record
                log.debug( 'current form is',scriptContext.newRecord.type );
                let currentRecord = scriptContext.newRecord;
                if (scriptContext.type == 'view') {
                    let taskStatus = currentRecord.getValue({
                        fieldId: 'custrecord_jj_status_ahap1473'
                    })
                    if (taskStatus == '1') { 
                        let companyName = currentRecord.getValue({
                            fieldId: 'custrecord_jj_company_ahap1473'

                        })

                        scriptContext.form.clientScriptModulePath = "SuiteScripts/Jobin and Jismi IT Services/AHAP-2707 Functionality Of Zendesk/Actions/jj_cs_button_action_ahap_2707.js" //The path of client script file
                        let internalId = currentRecord.id;
                        scriptContext.form.addButton({
                            id: 'custpage_jj_case_button',
                            label: 'Create Case Record',
                            functionName: `onClickButton(${internalId}, ${companyName})`  //function created in client script with parameters

                        });
                    }

                    }
                }

            } catch (e) {
                log.debug('Error in Before Load', e)
            }
        }
return{ beforeload}
})

Create client Script in the path mentioned in the UE script.

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */

define(['N/record', 'N/recordContext',  'N/url'],
/**

 * @param{record} record
 * @param{recordContext} recordContext
 * @param{url} url
 */
function( record, recordContext, url) {
    
  /**
   * Function to set value from custom record to Case Record 
   * @param {*} requestInternalId  internal id of store/customer request record
   * @param {*} companyName  company name from store/customer request record
   */

    function onClickButton(requestInternalId,companyName){
        try{
          let url = "https://359045-sb1.app.netsuite.com/app/crm/support/supportcase.nl?";
          url += "record.custevent_jj_created_from="+requestInternalId+'&record.company='+companyName;
          
           window.open(url);

        }catch(e){
            console.error('error in Clinet Scrip ',e);
        }
    } 

return {onClickButton :onClickButton};

})

Deploy the UE script

New window will open to create the case record as the custom button action

Leave a comment

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