Creating items from a custom record

User event script

/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
/************************************************************************************************
* *
* * I/O Solutions, Inc. Industrial/Organizational Solutions **
* * CL-314 Product Item Creation Toolset**
* * CL-364 Custom record set up**
* * CL-375 Workflow for item record sourcing**
* * CL-376 Auto populating the custom record fields**
* * CL-377 Item record creation**
* **********************************************************************************************
*
* Author: CentriLogic
*
* Date Created : 07-October-2021
*
* Created By: Sophia Yougin
*
* REVISION HISTORY
*
*
*
*
***********************************************************************************************/
define(["N/log", "N/record", "N/redirect","N/ui/serverWidget"]
/**
* @param{log} log
* @param{record} record
*/, (log, record, redirect,serverWidget) => {
/**
* This function is to get details from custom record created for item creation
*@param{object} context
*@return{object} itemDetails
*/

function getAssessmentDetails(context) {
try {
let record = context.newRecord;
let itemDetails = {};
itemDetails.recordId = record.id;
itemDetails.newAssessmentTitle = record.getValue({
fieldId: "custrecord_cl_new_assessment_title",
});
itemDetails.assessmentId = record.getValue({
fieldId: "custrecord_cl_assessment_id",
});
itemDetails.assessment = record.getValue({
fieldId: "custrecord_cl_assessment",
});
itemDetails.ioItemCategory = record.getValue({
fieldId: "custrecord_cl_io_item_category",
});
itemDetails.ioItemSubCategory = record.getValue({
fieldId: "custrecord_cl_io_item_sub_category",
});
itemDetails.weight = record.getValue({ fieldId: "custrecord_cl_weight" });
itemDetails.package = record.getValue({
fieldId: "custrecord_cl_package",
});
itemDetails.reachAssessmentId = record.getValue({
fieldId: "custrecord_cl_reach_assessment_id",
});
itemDetails.includeAnswerSheet = record.getValue({
fieldId: "custrecord_cl_include_answer_sheet",
});
itemDetails.incomeAccount = record.getValue({
fieldId: "custrecord_cl_income_account",
});
itemDetails.cogsAccount = record.getValue({
fieldId: "custrecord_cl_cogs_account",
});
itemDetails.assetAccount = record.getValue({
fieldId: "custrecord_cl_asset_account",
});
itemDetails.basePrice = record.getValue({
fieldId: "custrecord_cl_base_price",
});
itemDetails.description = record.getValue({
fieldId: "custrecord_cl_description",
});
itemDetails.returnableAssessment = record.getValue({
fieldId: "custrecord_cl_returnable_assessments",
});
itemDetails.buffAssessment = record.getValue({
fieldId: "custrecord_cl_buf_assessments",
});
itemDetails.unitOfWeight = record.getValue({
fieldId: "custrecord_cl_unit_of_weight",
});
return itemDetails;
} catch (error) {
return {};
log.debug("Error @getAssessmentDetails", error);
}
}

/**
* This function is to create inventory item record
* @params {object} itemDetails
* @params {number} id of custom record
* @return {number} record id of created item
*/

function createInventory(itemDetails, id) {
try {
log.debug("@ create Inventory Item Deatils",itemDetails);
let rec = record.create({
type: record.Type.INVENTORY_ITEM,
isDynamic: true,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_cl_product_creation_record_id",
value: id,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_psid",
value: itemDetails.assessmentId,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "weight",
value: itemDetails.weight,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "weightunit",
value: itemDetails.unitOfWeight,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "shippackage",
value: itemDetails.package,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "salesdescription",
value: itemDetails.description,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "incomeaccount",
value: itemDetails.incomeAccount,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "cogsaccount",
value: itemDetails.cogsAccount,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "assetaccount",
value: itemDetails.assetAccount,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "custitem_io_ps_type",
value: itemDetails.assessment,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_category",
value: itemDetails.ioItemCategory,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_sub_category",
value: itemDetails.ioItemSubCategory,
ignoreFieldChange: false,
});
/*rec.setValue({
fieldId: "pricequantity1",
value: 0,
});
rec.setValue({
fieldId: "pricequantity2",
value: 1,
});*/
for (let i = 0; i < 10; i++) {
rec.selectLine({ sublistId: "price", line: i });
if (i === 0 || i === 6) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
/*rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: itemDetails.basePrice,
});*/
} else if (i === 7) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: 0,
});
/*rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: itemDetails.basePrice,
});*/
/* } else if (i === 8) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: 0,
});*/
}
rec.commitLine("price");
}

return rec.save({
enableSourcing: true,
ignoreMandatoryFields: true,
});
} catch (error) {
log.debug("Error @createInventory", error);
}
}

/**
* This function is to create non-inventory item record
* @params {object} itemDetails
* @params {number} id of custom record
* @return {number} record id of created item
*/

function createNonInventory(itemDetails, id) {
try {
let rec = record.create({
type: record.Type.NON_INVENTORY_ITEM,
isDynamic: true,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_cl_product_creation_record_id",
value: id,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_psid",
value: itemDetails.assessmentId,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "salesdescription",
value: itemDetails.description,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "expenseaccount",
value: 1346,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "incomeaccount",
value: itemDetails.incomeAccount,
ignoreFieldChange: true,
});
rec.setValue({
fieldId: "custitem_io_ps_type",
value: itemDetails.assessment,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_category",
value: itemDetails.ioItemCategory,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_sub_category",
value: itemDetails.ioItemSubCategory,
ignoreFieldChange: true,
});
/* rec.setValue({
fieldId: "pricequantity1",
value: 0,
});
rec.setValue({
fieldId: "pricequantity2",
value: 1,
});*/
for (let i = 0; i < 10; i++) {
rec.selectLine({ sublistId: "price", line: i });
if (i === 0 || i === 6) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
/*rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: itemDetails.basePrice,
});*/
} else if (i === 7) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: 0,
});
/*rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: itemDetails.basePrice,
});
} else if (i === 8) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: 0,
});*/
}
rec.commitLine("price");
}

return rec.save({
enableSourcing: true,
ignoreMandatoryFields: true,
});
} catch (error) {
log.debug("Error @createNonInventory", error);
}
}

/**
* This function is to create service item record
* @params {object} itemDetails
* @params {number} id of custom record
* @return {number} record id of created item
*/

function createService(itemDetails, id) {
try {
let assessment = itemDetails.assessment;
let rec = record.create({
type: record.Type.SERVICE_ITEM,
isDynamic: true,
defaultValues: {
subtype: 'sale'
}
});
rec.setValue({
fieldId: "salesdescription",
value: itemDetails.description,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_cl_product_creation_record_id",
value: id,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_ps_type",
value: itemDetails.assessment,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "incomeaccount",
value: itemDetails.incomeAccount,
ignoreFieldChange: true,
});
if (assessment === "4") {
rec.setValue({
fieldId: "custitem_io_psid",
value: itemDetails.assessmentId,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle + " Scoring",
ignoreFieldChange: false,
});
} else if (assessment === "19") {
rec.setValue({
fieldId: "custitem_io_psid",
value: itemDetails.assessmentId,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle + " Scoring",
ignoreFieldChange: false,
});
} else if (assessment === "18") {
rec.setValue({
fieldId: "custitem_io_psid",
value: itemDetails.assessmentId,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle,
ignoreFieldChange: false,
});
} else if (assessment === "17") {
rec.setValue({
fieldId: "custitem_io_psid",
value: itemDetails.reachAssessmentId,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle,
ignoreFieldChange: false,
});
}

rec.setValue({
fieldId: "custitem_io_item_category",
value: itemDetails.ioItemCategory,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_sub_category",
value: itemDetails.ioItemSubCategory,
ignoreFieldChange: false,
});
if (assessment === "4") {
/*rec.setValue({
fieldId: "pricequantity1",
value: 0,
});
rec.setValue({
fieldId: "pricequantity2",
value: 1,
});*/
for (let i = 0; i < 10; i++) {
rec.selectLine({ sublistId: "price", line: i });
if (i === 0 || i === 7) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
/*rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: itemDetails.basePrice,
});*/
} else if (i === 6) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: 0,
});
/* rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: itemDetails.basePrice,
});*/
} /*else if (i === 3) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_2_",
line: i,
value: 0,
});
}*/
rec.commitLine("price");
}
} else {
for (let i = 0; i < 10; i++) {
rec.selectLine({ sublistId: "price", line: i });
if (i === 0|| i === 7) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
} else if (i === 6) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value:0,
});
} /*else if (i === 8) {
rec.setCurrentSublistValue({
sublistId: "price",
fieldId: "price_1_",
line: i,
value: itemDetails.basePrice,
});
}*/
rec.commitLine("price");
}
}
return rec.save({
enableSourcing: true,
ignoreMandatoryFields: true,
});
} catch (error) {
log.debug("Error @createService", error);
}
}

/**
* This function is to create group item record
* @params {object} itemDetails
* @params {number} id of member item1
* @params {number} id of member item2
* @params {number} id of custom record
* @return {number} record id of created item
*/

function createGroup(itemDetails, r1, r2, id) {
try {
let answerSheet = itemDetails.includeAnswerSheet;
let rec = record.create({
type: record.Type.ITEM_GROUP,
isDynamic: true,
});
rec.setValue({
fieldId: "itemid",
value: itemDetails.newAssessmentTitle + " Assessment",
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_cl_product_creation_record_id",
value: id,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_category",
value: itemDetails.ioItemCategory,
ignoreFieldChange: false,
});
rec.setValue({
fieldId: "custitem_io_item_sub_category",
value: itemDetails.ioItemSubCategory,
ignoreFieldChange: false,
});
rec.insertLine({
sublistId: "member",
fieldId: "item",
line: 0,
});
rec.setCurrentSublistValue({
sublistId: "member",
fieldId: "item",
value: r1,
});
rec.commitLine({ sublistId: "member" });
rec.insertLine({
sublistId: "member",
fieldId: "item",
line: 1,
});
rec.setCurrentSublistValue({
sublistId: "member",
fieldId: "item",
value: r2,
});
rec.commitLine({ sublistId: "member" });
if (answerSheet) {
rec.insertLine({
sublistId: "member",
fieldId: "item",
line: 2,
});
rec.setCurrentSublistValue({
sublistId: "member",
fieldId: "item",
value: 9291,
});
rec.commitLine({ sublistId: "member" });
}
return rec.save({
enableSourcing: true,
ignoreMandatoryFields: true,
});
} catch (error) {
log.debug("Error @createGroup", error);
}
}

/**
* 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) => {
try {
let rec = scriptContext.newRecord;
let recId = rec.id;
let assessment = rec.getValue({ fieldId: "custrecord_cl_assessment" });
let items = getAssessmentDetails(scriptContext);
let groupId;
let serviceId;
if (assessment === "4") {
// Hardcopy Assessment
let inventory = createInventory(items, recId);
let service = createService(items, recId);
log.debug("inventory", inventory);
log.debug("service", service);
groupId = createGroup(items, inventory, service, recId);
log.debug("group id", groupId);
rec.setValue({
fieldId: "custrecord_cl_group_assessment_id",
value: groupId,
});
} else if (assessment === "19") {
//PDF Assessment
let nonInventoryId = createNonInventory(items, recId);
let serviceId = createService(items, recId);
log.debug("Non inventory", nonInventoryId);
log.debug("service", serviceId);
groupId = createGroup(items, nonInventoryId, serviceId, recId);
log.debug("group id", groupId);
rec.setValue({
fieldId: "custrecord_cl_group_assessment_id",
value: groupId,
});
} else if (assessment === "18") {
//Online PS3/IOSAP
serviceId = createService(items, recId);
log.debug("service id", serviceId);
rec.setValue({
fieldId: "custrecord_cl_service_assessment_id",
value: serviceId,
});
} else if (assessment === "17") {
//REACH
serviceId = createService(items, recId);
log.debug("service id", serviceId);
rec.setValue({
fieldId: "custrecord_cl_service_assessment_id",
value: serviceId,
});
}
if (groupId) {
redirect.toRecord({
type: record.Type.ITEM_GROUP,
id: groupId,
isEditMode: false,
});
} else if (serviceId) {
redirect.toRecord({
type: record.Type.SERVICE_ITEM,
id: serviceId,
isEditMode: false,
});
}else{
redirect.toSuitelet({
scriptId: "597",
deploymentId: "1",
});
}
} catch (error) {
log.debug("Error @afetrSubmit", error);
}
};

return { afterSubmit };
});

Leave a comment

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