Jira Code: AN-30
This script is to create a Suitelet page to display the assembly item components and their quantity.The form allows the user to enter the completed quantity. Then the data entered is fetched to calculate the data to be set in the field ‘QUANTITY FOR COMPLETED ITEM’
/**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/
/*******************************************************************************
* CLIENTNAME:Aurora Natural
* AN-30
* Assembly item component tool
* **************************************************************************
* Date : 01-03-2019
*
* Author: Jobin & Jismi IT Services LLP
* Script Description : This script is to create a SL page to display the assembly item components and
* their quantity to calculate the QUANTITY FOR COMPLETED ITEM
*
* Date created :01-03-2019
*
* REVISION HISTORY
*
* Revision 1.0 ${01-03-2019} nd : created
*
*
******************************************************************************/
define(['N/record','N/search','N/ui/serverWidget'],
function(record,search,serverWidget) {
/**
* Definition of the Suitelet script trigger point.
*
* @param {Object} context
* @param {ServerRequest} context.request - Encapsulation of the incoming request
* @param {ServerResponse} context.response - Encapsulation of the Suitelet response
* @Since 2015.2
*/
function onRequest(context) {
try{
var assItem = assignDefaultValue(context.request.parameters.itemName, null);
var qty_compltd = assignDefaultValue(context.request.parameters.qty_compltd, null);
//initialize form and setting the Fields
form = serverWidget.createForm({
title: 'Item Component Calculation Page'
});
form.clientScriptFileId = 29071;
var assItemfd = form.addField({
id: 'custpage_ass_item',
type: serverWidget.FieldType.TEXT,
label: 'Assembly Item'
});
assItemfd.updateDisplayType({
displayType : serverWidget.FieldDisplayType.ENTRY
});
assItemfd.defaultValue = assItem;
var itemName = form.addField({
id: 'custpage_itm_name',
type: serverWidget.FieldType.TEXT,
label: 'Item Name'
});
itemName.updateDisplayType({
displayType : serverWidget.FieldDisplayType.DISABLED
});
itemName.updateDisplaySize({
height : 12,
width : 40
});
var completedQtyfd = form.addField({
id: 'custpage_completed_qty',
type: serverWidget.FieldType.FLOAT,
label: 'Completed Quantity'
});
form.addButton({
id : 'logout_btn',
label : 'Log Out',
functionName: 'logoutBtnAction'
});
var sublist = form.addSublist({
id : 'custpage_component_dtls',
type : serverWidget.SublistType.STATICLIST,
label : 'Component Details'
});
sublist.addField({
id: 'custpage_an_woc_items',
type: serverWidget.FieldType.TEXT,
label: 'Item'
});
sublist.addField({
id: 'custpage_item_desc',
type: serverWidget.FieldType.TEXT,
label: 'Item Description'
});
sublist.addField({
id: 'custpage_an_woc_qty_per',
type: serverWidget.FieldType.FLOAT,
label: 'Quantity Per'
});
sublist.addField({
id: 'custpage_an_woc_com_item_qty',
type: serverWidget.FieldType.FLOAT,
label: 'Quantity for Completed Item'
});
if(assItem != null){
//Searching for the Component Items of a Assembly Item
var assemblyitemSearchObj = search.create({
type: "assemblyitem",
filters:
[
["type","anyof","Assembly"],
"AND",
["name","is",assItem]
],
columns:
[
search.createColumn({name: "memberitem", label: "Member Item"}),
search.createColumn({name: "memberquantity", label: "Member Quantity"}),
search.createColumn({
name: "displayname",
join: "memberItem",
label: "Display Name"
}),
search.createColumn({name: "displayname", label: "Display Name"})
]
});
var searchResultCount = assemblyitemSearchObj.runPaged().count;
var start = 0;
var end = 1000;
//Getting and setting the search result in to the Sublist
for (var i = 0; i < Math.ceil(searchResultCount / 1000); i++)
{
result = assemblyitemSearchObj.run().getRange({
start: start,
end: end
});
var len=result.length;
for (var j = 0; j < len; j++) {
var ass_Item_component= result[j].getText({
name: 'memberitem'
});
var ass_Item_componentDisp= result[j].getValue({
name: "displayname",
join: "memberItem"
});
var qtyPer= result[j].getValue({
name: 'memberquantity'
});
qtyPer=parseFloat(qtyPer).toFixed(5);
var AsmItemDisp= result[j].getValue({
name: 'displayname'
});
//set values to sublist
sublist.setSublistValue({
id : "custpage_an_woc_items",
line : j,
value : ass_Item_component
});
sublist.setSublistValue({
id : 'custpage_item_desc',
line : j,
value :ass_Item_componentDisp
});
sublist.setSublistValue({
id : 'custpage_an_woc_qty_per',
line : j,
value : parseFloat(qtyPer).toFixed(5)
});
if(qty_compltd != null){
var qty_for_item = parseFloat(qtyPer*qty_compltd)
sublist.setSublistValue({
id : 'custpage_an_woc_com_item_qty',
line : j,
value : checkif(qty_for_item.toFixed(5))
});
}
}
start = end;
end = end + 1000;
}
}
if(AsmItemDisp != null){
itemName.defaultValue=AsmItemDisp
}else{
itemName.defaultValue=""
}
if(qty_compltd != null){
completedQtyfd.defaultValue=qty_compltd
}else{
completedQtyfd.defaultValue=""
}
context.response.writePage(form);
}catch(eror){
log.error('error @ onRequest',eror)
}
}
return {
onRequest: onRequest
};
//To check whether a value exists in parameter
function checkForParameter(parameter, parameterName) {
if (parameter != "" && parameter != null && parameter != undefined && parameter != "null" && parameter != "undefined" && parameter != " ") {
return true;
} else {
if (parameterName)
return false;
}
}
//To assign a default value if the it is empty
function assignDefaultValue(value, defaultValue) {
if (checkForParameter(value))
return value;
else
return defaultValue;
}
//nullcheck
function checkif(singleitem) {
if (singleitem != "" && singleitem != null && singleitem != undefined && singleitem !='- None -' && singleitem != " " && singleitem != NaN && singleitem != 'NaN') {
return singleitem;
} else{
return "-";
}
}
});