Create a custom form and using the details from the form, create a customer record

Overview

For this we use script type as Suitelet, which has entry point – onRequest. First, create a custom form which includes the following details – Name, E-mail, Phone, Sales Rep, Subsidiary (and other fields if required). Now, Create a submit button and on clicking the same, It should display the details entered by the user. And these details should be used to create a customer record. (Also never forget to Include N/ui/serverWidget module in Suitelet.)

/**
 * @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')
            {
                //creating form
                let form = serverWidget.createForm({
                    title: 'Customer Information Form',
                    hideNavBar: false
                });

                //Personal info field group
                let persInfo = form.addFieldGroup({
                    id: 'personalinfo',
                    label: 'Personal Information'
                });
                let nm = form.addField({
                    id: 'name',
                    type: serverWidget.FieldType.TEXT,
                    label: 'Name',
                    container: 'personalinfo'
                });
                let em = form.addField({
                    id: 'email',
                    type: serverWidget.FieldType.EMAIL,
                    label: 'E-Mail',
                    container: 'personalinfo'
                });
                let ph = form.addField({
                    id: 'phone',
                    type: serverWidget.FieldType.PHONE,
                    label: 'Phone',
                    container: 'personalinfo'
                });
                let salesR = form.addField({
                    id: 'salesrep',
                    type: serverWidget.FieldType.SELECT,
                    source: 'employee',
                    label: 'Sales Rep',
                    container: 'personalinfo'
                });
                let sub = form.addField({
                    id: 'subsidiary',
                    type: serverWidget.FieldType.SELECT,
                    source: 'subsidiary',
                    label: 'Subsidiary',
                    container: 'personalinfo'
                });
                
                form.addSubmitButton({
                    label: 'Submit'
                });
                //To view form
                scriptContext.response.writePage(form);
            }
            else if(scriptContext.request.method === 'POST')
            {
                let name = scriptContext.request.parameters.name;
                let email = scriptContext.request.parameters.email;
                let phone = scriptContext.request.parameters.phone;
                let salesR = scriptContext.request.parameters.salesrep;
                let sub = scriptContext.request.parameters.subsidiary;
 
                // Display the entered details
                var detailsHtml = '<h2>Registration Details</h2>';
                detailsHtml += '<p><b>Name:</b> ' + name + '</p>';
                detailsHtml += '<p><b>Email:</b> ' + email + '</p>';
                detailsHtml += '<p><b>Phone Number:</b> ' + phone + '</p>';
                detailsHtml += '<p><b>Sales Rep:</b> ' + salesR + '</p>';
                detailsHtml += '<p><b>Subsidiary</b> ' + sub + '</p>';
 
                scriptContext.response.write(detailsHtml);
                
                let customerId = createCustomerRecord(name, email, phone, salesR, sub);
                log.debug('Customer Created', 'Customer ID: ' + customerId);
            }
        }
        function createCustomerRecord(name, email, phone, salesrep, subsidiary) {
            let customerRecord = record.create({
                type: record.Type.CUSTOMER,
                isDynamic: true
            });
            customerRecord.setValue({
                fieldId: 'subsidiary',
                value: subsidiary
            });
            customerRecord.setValue({
                fieldId: 'salesrep',
                value: salesrep
            });
            customerRecord.setValue({
                fieldId: 'companyname',
                value: name
            });
            customerRecord.setValue({
                fieldId: 'email',
                value: email
            });
            customerRecord.setValue({
                fieldId: 'phone',
                value: phone
            });
            let customerId = customerRecord.save();
            return customerId;
        }
        return {onRequest}

    });

Leave a comment

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