To create a popup like functionality to select serial numbers of item on an Inventory Transfer record.
The same functionality is inbuilt in Inventory Adjustment and Item Fulfilment.
These are the script codes used for the popup.
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
/*************************************************************************************************************************
* CLIENTNAME:ZAHR
* ZAHR-5
* **********************************************************************************************************************
* Date :
*
* Author: Jobin & Jismi IT Services LLP
* Script Description :
* Date created :
*
* REVISION HISTORY
*
* Revision 1.0 ${} GEORDY: created
*
**************************************************************************************************************************/
define(['N/search', 'N/record', 'N/ui/serverWidget'],
function (search, record, serverWidget) {
var main = {
beforeLoad: function (scriptContext) {
try {
if (scriptContext.type == 'edit' || scriptContext.type == 'create') {
var form;
var form = scriptContext.form;
log.debug('form', form)
var sublistinvnt = form.getSublist({id: 'inventory'})
log.debug('sublistinvnt', sublistinvnt)
sublistinvnt.addField({
id : 'custpage_inventory',
type : serverWidget.FieldType.CHECKBOX,
label : 'Select'
});
form.addButton({ //creates button
id : 'custpage_qwerty',
label : 'BUTTON',
functionName: 'buttontest'
});
var objRecord = scriptContext.newRecord;
var internalId = objRecord.getValue({
fieldId: 'id'
});
log.debug('internalid', internalId)
form.clientScriptFileId = 3217;
}
} catch(e) {
log.debug('error@beforeLoad', e)
}
}
}
return main;
});
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/*************************************************************************************************************************
* CLIENTNAME: ZAHR
* ZAHR-5
* **********************************************************************************************************************
* Date :
*
* Author: Jobin & Jismi IT Services LLP
* Script Description : This Script is to create Submit screen
* Date created :
*
* REVISION HISTORY
*
* Revision 1.0 ${} GEORDY: created
*
**************************************************************************************************************************/
define(['N/record', 'N/search', 'N/ui/serverWidget', 'N/render', 'N/email', 'N/file', 'N/encode', 'N/task', 'N/url', 'N/redirect', 'N/format'],
function (record, search, serverWidget, render, email, file, encode, task, url, redirect, format) {
function checkForParameter(parameter, parameterName) {
if (parameter !== "" && parameter !== null && parameter !== undefined && parameter !== false && parameter !== "null" && parameter !== "undefined" && parameter !== " " && parameter !== 'false') {
return true;
} else {
if (parameterName)
log.debug('Empty Value found', 'Empty Value for parameter ' + parameterName);
return false;
}
}
var formOperations = {
// Submit screen form
createForm1: function (context) {
try {
var itemId = context.request.parameters.itemid;
log.debug('itemId', itemId);
var item = context.request.parameters.item;
var form = serverWidget.createForm({
title: 'PAGE'
});
form.clientScriptFileId = 3222;
var serializedItemName = form.addField({
id: 'custpage_serializeditemname',
label: 'ITEM',
type: serverWidget.FieldType.TEXT
})
serializedItemName.defaultValue = item;
var serializedItem = form.addSublist({
id: 'custpage_serializeditem',
type: serverWidget.SublistType.LIST,
label: 'Serial Numbers of Item'
});
serializedItem.addField({
id: 'custpage_select',
type: serverWidget.FieldType.CHECKBOX,
label: 'SELECT'
});
serializedItem.addField({
id: 'custpage_serialnumbers',
type: serverWidget.FieldType.TEXT,
label: 'Serial Number'
});
serializedItem.addMarkAllButtons();
var itemArray = [];
var inventoryitemSearchObj = search.create({
type: "inventoryitem",
filters:
[
["type", "anyof", "InvtPart"],
"AND",
["internalid", "anyof", itemId]
],
columns:
[
search.createColumn({ name: "serialnumber", label: "Serial/Lot Number" })
]
});
var searchResultCount = inventoryitemSearchObj.runPaged().count;
log.debug("inventoryitemSearchObj result count", searchResultCount);
if (searchResultCount > 0) {
inventoryitemSearchObj.run().each(function (result) {
var item = {};
item.serialnumbers = result.getValue({
name: "serialnumber",
label: "Serial/Lot Number"
});
itemArray.push(item);
return true;
});
}
log.debug('itemArray', itemArray)
if (checkForParameter(itemArray)) {
for (var i = 0; i < itemArray.length; i++) {
serializedItem.setSublistValue({
id: 'custpage_serialnumbers',
line: i,
value: itemArray[i].serialnumbers
});
}
}
form.addButton({
id: 'custpage_submit',
label: 'Submit',
functionName: 'submitButton'
});
return form;
} catch (e) {
log.debug('error@createForm1', e)
}
}
}
var main = {
onRequest: function (context) {
try {
if (context.request.method == 'GET') {
context.response.writePage(formOperations.createForm1(context));
}
// else if (context.request.method == 'POST') {
// context.response.writePage(formOperations.createForm2(context));
// }
} catch (e) {
log.debug('error@main', e)
}
}
}
return main;
});
/**
* @NApiVersion 2.0
* @NScriptType ClientScript
* @NModuleScope SameAccount
*/
/*************************************************************************************************************************
* CLIENTNAME: ZAHR
* ZAHR-5
*
* **********************************************************************************************************************
* Date :
*
* Author: Jobin & Jismi IT Services LLP
* Script Description :
* Date created :
*
* REVISION HISTORY
*
* Revision 1.0 ${} Geordy: created
*
**************************************************************************************************************************/
define(['N/record', 'N/search', 'N/currentRecord', 'N/url', 'N/https'],
function (record, search, currentRecord, url, https) {
function setSerielNumber(serialNumbers) {
/* This function was obtained by inspecting the action of a button *added to the Inventory transfer record.
*This functionality is used to bring the values selected in the popup *back to parent window.
*/
var rConfig = JSON.parse( '{}' ) ; rConfig['context'] = '/SuiteScripts/J&J/JJ CS Serial number selection'; var entryPointRequire = require.config(rConfig); entryPointRequire(['/SuiteScripts/J&J/JJ CS Serial number selection'], function(mod){ try{ if (!!window) { var origScriptIdForLogging = window.NLScriptIdForLogging; var origDeploymentIdForLogging = window.NLDeploymentIdForLogging; window.NLScriptIdForLogging = 'customscript_jj_ue_serial_number_selecti'; window.NLDeploymentIdForLogging = 'customdeploy_jj_ue_serial_number_selecti'; }mod.setValues(serialNumbers);}finally{ if (!!window) { window.NLScriptIdForLogging = origScriptIdForLogging; window.NLDeploymentIdForLogging = origDeploymentIdForLogging; }} });
}
var main = {
fieldChanged: function (context) {
try {
var invntRec = context.currentRecord;
console.log('invntRec', invntRec)
if (context.fieldId == 'custpage_inventory') {
var itemInternalId = invntRec.getSublistValue({
sublistId: 'inventory',
fieldId: 'item',
line: context.line
});
var item = invntRec.getSublistValue({
sublistId: 'inventory',
fieldId: 'item_display',
line: context.line
});
var checkBox = invntRec.getSublistValue({
sublistId: 'inventory',
fieldId: 'custpage_inventory',
line: context.line
});
console.log('checkBox', checkBox)
window.setSerielNumber = setSerielNumber;
if (checkBox) {
window.onbeforeunload = null;
get_url = url.resolveScript({
scriptId: "customscript_jj_sl_serial_number_selecti",
deploymentId: "customdeploy_jj_sl_serial_number_selecti"
});
window.open(get_url + '&itemid=' + itemInternalId + '&item=' + item, width = 100, height = 100);
}
}
} catch (er) {
console.log('error at getSerialNumber', er)
}
},
setValues: function(serialNumArray) {
var recordInv = currentRecord.get();
var serNos = serialNumArray[0].num;
if(serialNumArray.length > 0) {
for(var i=1; i<serialNumArray.length; i++) {
serNos+= '\n'+serialNumArray[i].num;
} }
recordInv.setCurrentSublistValue({
sublistId: 'inventory',
fieldId: 'serialnumbers',
value: serNos,
ignoreFieldChange: true
});
}
}
return main;
});
/*******************************************************************************
* ZAHR-5
* Author : Jobin and jismi created on:Geordy
*
******************************************************************************/
//open the window for print page
define(['N/currentRecord'], function(currentRecord) {
var main = {
pageInit: function () {
},
submitButton: function () {
try {
var invntRecord = currentRecord.get();
var numLines = invntRecord.getLineCount({
sublistId: 'custpage_serializeditem'
});
var serialNumArray = [];
for(var i = 0; i<numLines; i++) {
var checked = invntRecord.getSublistValue({
sublistId: 'custpage_serializeditem',
fieldId: 'custpage_select',
line: i
});
if (checked == true) {
var serialNumObj = {};
serialNumObj.num = invntRecord.getSublistValue({
sublistId: 'custpage_serializeditem',
fieldId: 'custpage_serialnumbers',
line: i
});
serialNumArray.push(serialNumObj);
}
}
window.opener.setSerielNumber(serialNumArray);
} catch (er) {
console.log('error at submitButton', er)
}
}
}
return main;
});