Studco Building Systems would like to make the changes in the invoice printout and the work order record.
Solution
For this requirement, we will deploy a script in the item fulfillment record. In the sales order record, a new line field will be added for keeping the item fulfillment number with the use of scripts. When we create an invoice from the sales order the item fulfillment number will be populated in the invoice form. From this invoice form, we will add it to the invoice printout as a new column.
Applies to Itemfulfillment
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
var CONTEXT = '';
define(['N/record', 'N/search'],
/**
* @param{record} record
* @param{search} search
*/
(record, search) => {
/**
* 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 {
CONTEXT = scriptContext.type;
if(CONTEXT=="edit"||CONTEXT=="create") {
log.debug('CONTEXT',CONTEXT);
let IFInternalid = scriptContext.newRecord.id;
log.debug('IFInternalid',IFInternalid);
let IFREC= record.load({
type: record.Type.ITEM_FULFILLMENT,
id : IFInternalid,
isDynamic:false
});
let IFId = IFREC.getValue({fieldId: 'tranid'});
let salesOrderId = IFREC.getValue({fieldId: 'createdfrom'});
let shipstatus = IFREC.getValue({fieldId: 'shipstatus'});
var IFArray=[];
let IFlinecount = IFREC.getLineCount({sublistId: 'item'});
for (let i = 0; i < IFlinecount; i++) {
let IFLineItem = IFREC.getSublistValue({sublistId: "item", fieldId: "orderline", line: i});
IFArray.push(IFLineItem);
}
log.debug('IFArray',IFArray);
log.debug('IFId', IFId);
log.debug('shipstatus', shipstatus);
let salesObjRecord = record.load({
type: record.Type.SALES_ORDER,
id: salesOrderId,
isDynamic: false
});
let SOlinecount = salesObjRecord.getLineCount({sublistId: 'item'});
for (let i = 0; i < SOlinecount; i++) {
let SOlineItem = salesObjRecord.getSublistValue({sublistId: "item", fieldId: "line", line: i});
for (let j = 0; j < IFArray.length ; j++)
{
log.debug('SOlineItem', SOlineItem);
log.debug("IFLineItem", IFArray[j]);
if (IFArray[j]== SOlineItem) {
let IFResult = salesObjRecord.setSublistValue({sublistId: 'item', fieldId: 'custcol_jj_if_number', line: i, value: IFInternalid});
log.debug('IFResult',IFResult);
}
}
}
let salesRecordID = salesObjRecord.save({
enableSourcing: true,
ignoreMandatoryFields: false,
});
log.debug("salesRecordID", salesRecordID);
}
else {
return false;
}
} catch (er) {
log.debug('Error', er);
}
}
return {afterSubmit}
});
Applies to Sales Order
/**
* @NApiVersion 2.1
* @NScriptType UserEventScript
*/
define(['N/record', 'N/search'],
/**
* @param{record} record
* @param{search} search
*/
(record, search) => {
/**
* 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 beforeLoad = (scriptContext) => {
try {
if (scriptContext.type === scriptContext.UserEventType.COPY) {
log.debug("scriptContext", scriptContext.type);
const salesObjRecord = scriptContext.newRecord;
let SOlinecount = salesObjRecord.getLineCount({sublistId: 'item'});
for (let i = 0; i < SOlinecount; i++) {
salesObjRecord.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_jj_if_number',
line: i,
value: " "
});
salesObjRecord.setSublistValue({
sublistId: 'item',
fieldId: 'custcol_jj_if_number_display',
line: i,
value: " "
});
const copygetIFRec = salesObjRecord.getSublistValue({
sublistId: 'item',
fieldId: 'custcol_jj_if_number',
line: i,
});
log.debug('copygetIFRec', copygetIFRec);
}
}
}
catch (e) {
log.debug('Error', e);
}
}
return {beforeLoad}
});
Results:


