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}
});