Custom Record Entry Creation

The client would like to create a custom record entry when we enter the data to a suitelet page.

This can be achieved by creating a suitelet script and on submitting the details in the suitelet the data will be saved in the custom record and the custom record link will be stored in the parent record.

/**
 * @NApiVersion 2.1
 * @NScriptType Suitelet
 */
/*******************************************************************
 *   Suitelet Script
 ****************************************************************
 *
 * Date: 28/12/2022
 *
 * Author: Jobin and Jismi IT Services LLP
 *
 * REVISION HISTORY
 *
 * Revision 1.0
 *
 * Description: Script to create a suitelet page for entering the  reject reason
 *
 * Revision 2.0
 *
 ***************************************************************/
define(['N/currentRecord', 'N/http', 'N/record', 'N/redirect', 'N/search', 'N/ui/serverWidget', 'N/email'],
    /**
     * @param{currentRecord} currentRecord
     * @param{http} http
     * @param{record} record
     * @param{redirect} redirect
     * @param{search} search
     * @param{serverWidget} serverWidget
     */
    (currentRecord, http, record, redirect, search, serverWidget, email) => {
        /**
         * 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) => {
            try {

                let form = serverWidget.createForm({title: 'Enter The Reject Reason'});
                if (scriptContext.request.method === 'GET') {
                    // get the parameters
                    let recordId = scriptContext.request.parameters.custscript_poRecordId;
                    let poRecIntId = scriptContext.request.parameters.custscript_poRecIntId;
                    let currentUser = scriptContext.request.parameters.custscript_currentUser;
                   // let rejectId=scriptContext.request.parameters.custscript_newMaxEntry

                    // create fields in the form to store the value
                    let poIdField = form.addField({
                        id: 'custrecord_jj_poid',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Purchase Order Id',
                    });
                    poIdField.setHelpText("This is a custom field created to store purchase order id.");
                    poIdField.isMandatory = true;
                    poIdField.defaultValue = recordId;
                    poIdField.updateDisplayType({displayType: serverWidget.FieldDisplayType.DISABLED})
                    let rejectReasonField = form.addField({
                        id: 'custrecord_jj_reject_resn',
                        type: serverWidget.FieldType.LONGTEXT,
                        label: 'Reject Reason',
                    });
                    rejectReasonField.setHelpText("This is a custom field contains the reject reason");
                    rejectReasonField.isMandatory = true;
                    let poInternalIdField = form.addField({
                        id: 'custrecord_jj_intpoid',
                        type: serverWidget.FieldType.TEXT,
                        label: 'Purchase Order internal Id',

                    });
                    poInternalIdField.defaultValue = poRecIntId;
                    poInternalIdField.updateDisplayType({displayType: serverWidget.FieldDisplayType.HIDDEN})

                    let userObj = form.addField({
                        id: 'custrecord_jj_userobj',
                        type: serverWidget.FieldType.TEXT,
                        //source:"purchaseorder",
                        label: 'User Obj',

                    });
                    userObj.defaultValue = currentUser;
                    userObj.updateDisplayType({displayType: serverWidget.FieldDisplayType.HIDDEN})
                    let nameField = form.addField({
                        id: 'custrecord_jj_name',
                        type: serverWidget.FieldType.TEXT,
                        //source:"purchaseorder",
                        label: 'Name',

                    });nameField.defaultValue='Reject Reason ';
                    nameField.updateDisplayType({displayType: serverWidget.FieldDisplayType.DISABLED})
                    nameField.setHelpText("This is a custom field that contains the name of record");

                    // add button to the page
                    form.addSubmitButton({
                        label: 'SUBMIT'
                    });
                    scriptContext.response.writePage(form);

                } else if (scriptContext.request.method === 'POST') {
                    let currentUser = scriptContext.request.parameters.custscript_currentUser;
                    let reason = scriptContext.request.parameters.custrecord_jj_reject_resn;
                    let orderId = scriptContext.request.parameters.custrecord_jj_intpoid;
                    let userObject = scriptContext.request.parameters.custrecord_jj_userobj;
                    let nameField=scriptContext.request.parameters.custrecord_jj_name
                    // create entry to the custom record and save the entry
                    let objRecord = record.create({
                        type: 'customrecord_jj_reject_reason_record',
                        //isDynamic: true
                    });
                    objRecord.setValue({fieldId: 'custrecord_jj_reasonfor_reject', value: reason})
                    objRecord.setValue({fieldId: 'custrecord_jj_po_id', value: orderId})
                    objRecord.setValue({fieldId: 'name', value: nameField})
                    let custRecId = objRecord.save();
                    // submit the reject reason internal id to the custom field
                    let id = record.submitFields({
                        type: record.Type.PURCHASE_ORDER,
                        id: orderId,
                        values: {
                           // 'custbody_jj_rejectn_reason': custRecId,
                            'approvalstatus': '1',
                            'orderstatus':'A',
                            'custbody_jj_po_approval_status':'2'

                        },
                        options: {
                            enableSourcing: false,
                            ignoreMandatoryFields: true
                        }
                    });

                    // send email from the current user to the section head
                    var url = 'https://5856824-sb1.app.netsuite.com/app/accounting/transactions/purchord.nl?id=' + orderId + '&whence='
                    var reclink = "<a href='" + url + "'> View Record</a>"
                    var emailSubject = "The Item Receipt  is Rejected";
                    var emailBody = "<BR />Hi, <BR/> <BR/>The Item Receipt  is rejected.<BR/><BR/> " +
                        "Rejection Reason: " + reason + "<BR/><BR/> Please Resubmit the record if required. <BR/> <BR/> " +
                        "Click the below link to view the Purchase Order Record. <BR/><BR/> Thank You." + " <BR/><BR/>" +
                        "" + reclink + ""
                    email.send({
                        author: userObject,
                        recipients: 'litha.mukunthan@jobinandjismi.com',
                        subject: emailSubject,
                        body: emailBody,
                    });
                    // redirect to the purchase order record
                    redirect.redirect({
                        url: url,
                    });
                }

            } catch (e) {
                log.error("error @ onRequest", e)
            }
        }

        return {onRequest}

    });

Leave a comment

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