Create Buttons in Items, Sales Order and Invoice Records

/** 

* @NApiVersion 2.1 

* @NScriptType UserEventScript 

*/ 

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

    /** 

* @param{record} record 

* @param{serverWidget} serverWidget 

*/ 

    (record, serverWidget) => { 

        /** 

         * 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 DEPLOYED_RECORD_TYPES = { 

            ‘inventoryitem’: ‘INVENTORY_PART’, 

            ‘salesorder’: ‘SALES_ORDER’, 

            ‘invoice’: ‘INVOICE’, 

            ‘estimate’: ‘QUOTE’, 

        }; 

        const ROLES = [ 1112 ]

        const beforeLoad = (scriptContext) => { 

            try { 

                if (scriptContext.type === ‘view’) { 

                    switch (DEPLOYED_RECORD_TYPES[scriptContext?.newRecord?.type]) { 

                        case ‘INVENTORY_PART’: 

                            let curUser = runtime.getCurrentUser(); 

                            let curRole = curUser.role 

                            let defaultApp = scriptContext.newRecord.getValue({ 

                                fieldId: ‘custitem_jj_default_appliance’ 

                            }); 

                            let test = scriptContext.newRecord.getValue({ 

                                fieldId: ‘custitem_jj_test_ahap1790’ 

                            }); 

                            if (defaultApp == true) { 

                                if (!test) { 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_create_ahap_1790’, 

                                        label: ‘Create’, 

                                        functionName: ” 

                                    }); 

                                } 

                                else { 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_update_ahap_1790’, 

                                        label: ‘Update’, 

                                        functionName: ” 

                                    }); 

                                    if (!ROLES.includes(curRole)){ 

                                        scriptContext.form.addButton({ 

                                            id: ‘custpage_delete_ahap_1790’, 

                                            label: ‘Delete’, 

                                            functionName: ” 

                                        }); 

                                    } 

                                } 

                            } 

                            break; 

                        case ‘SALES_ORDER’: 

                            let status = scriptContext.newRecord.getValue({ 

                                fieldId: ‘statusRef’ 

                            }); 

                            let testSales = scriptContext.newRecord.getValue({ 

                                fieldId: ‘custbody_jj_test_sales_ahap1790’ 

                            }); 

                            if (status != ‘closed’) { 

                                if (!testSales) { 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_create_sales_ahap_1790’, 

                                        label: ‘Create’, 

                                        functionName: ” 

                                    }); 

                                } 

                                else { 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_update_sales_ahap_1790’, 

                                        label: ‘Update’, 

                                        functionName: ” 

                                    }); 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_delete_sales_ahap_1790’, 

                                        label: ‘Delete’, 

                                        functionName: ” 

                                    }); 

                                } 

                            } 

                            break; 

                        case ‘INVOICE’: 

                            let testInv = scriptContext.newRecord.getValue({ 

                                fieldId: ‘custbody_jj_test_sales_ahap1790’ 

                            }); 

                            if (!testInv) { 

                                scriptContext.form.addButton({ 

                                    id: ‘custpage_create_invoice_ahap_1790’, 

                                    label: ‘Create’, 

                                    functionName: ” 

                                }); 

                            } 

                            else { 

                                scriptContext.form.addButton({ 

                                    id: ‘custpage_update_invoice_ahap_1790’, 

                                    label: ‘Update’, 

                                    functionName: ” 

                                }); 

                                scriptContext.form.addButton({ 

                                    id: ‘custpage_delete_invoice_ahap_1790’, 

                                    label: ‘Delete’, 

                                    functionName: ” 

                                }); 

                            } 

                            break; 

                        case ‘QUOTE’: 

                            let quoteStatus = scriptContext.newRecord.getValue({ 

                                fieldId: ‘statusRef’ 

                            }); 

                            let testQuote = scriptContext.newRecord.getValue({ 

                                fieldId: ‘custbody_jj_test_sales_ahap1790’ 

                            }); 

                            if (quoteStatus != ‘closed’ && quoteStatus != ‘expired’) { 

                                if (!testQuote) { 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_create_quote_ahap_1790’, 

                                        label: ‘Create’, 

                                        functionName: ” 

                                    }); 

                                } 

                                else { 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_update_quote_ahap_1790’, 

                                        label: ‘Update’, 

                                        functionName: ” 

                                    }); 

                                    scriptContext.form.addButton({ 

                                        id: ‘custpage_delete_quote_ahap_1790’, 

                                        label: ‘Delete’, 

                                        functionName: ” 

                                    }); 

                                } 

                            } 

                    } 

                } 

            } 

            catch (err) { 

                log.error(“error detected”, err); 

            } 

        } 

        /** 

         * Defines the function definition that is executed before record is submitted. 

         * @param {Object} scriptContext 

         * @param {Record} scriptContext.newRecord – New record 

         * @param {Record} scriptContext.oldRecord – Old record 

         * @param {string} scriptContext.type – Trigger type; use values from the context.UserEventType enum 

         * @since 2015.2 

         */ 

        const beforeSubmit = (scriptContext) => { 

        } 

        /** 

         * Defines the function definition that is executed after record is submitted. 

         * @param {Object} scriptContext 

         * @param {Record} scriptContext.newRecord – New record 

         * @param {Record} scriptContext.oldRecord – Old record 

         * @param {string} scriptContext.type – Trigger type; use values from the context.UserEventType enum 

         * @since 2015.2 

         */ 

        const afterSubmit = (scriptContext) => { 

        } 

        return { beforeLoad, beforeSubmit, afterSubmit } 

    }); 

Leave a comment

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