/**
* @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 }
});