Kevin Baxter
07/31/2023, 7:29 PM/**
* @NApiVersion 2.1
* @NScriptType Suitelet
*/
define(['N/search', 'N/ui/serverWidget', 'N/log', "N/render"],
/**
* @param{search} search
* @param{serverWidget} serverWidget
*/
(search, serverWidget, log, render) => {
/**
* 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) => {
try {
var internalid = scriptContext.request.parameters.salesOrderId
var templateId = "CUSTTMPL_LF_COMPONENT_N"
log.debug("salesorderid" , internalid)
var workorderSearchObj = search.create({
type: "workorder",
filters:
[
["mainline","is","F"],
"AND",
["type","anyof","WorkOrd"],
"AND",
["custcol_lf_created_from.internalid","anyof", internalid]
],
columns:
[
search.createColumn({
name: "item",
summary: "GROUP",
label: "Item"
}),
search.createColumn({
name: "quantity",
summary: "SUM",
label: "Quantity"
})
]
});
var results = workorderSearchObj.run().getRange(0, 1000);
log.debug("results", results);
var renderer = render.create();
renderer.setTemplateById({
id: 119
});
renderer.addSearchResults({
templateName: 'results',
searchResult: results
});
var newfile = renderer.renderAsPdf();
// create your suitelet form
const form = serverWidget.createForm({
title: "Component Needed Suitelet: Sales Order " + internalid,
});
// add your sublist
const sublist = form.addSublist({
id: "components",
type: serverWidget.SublistType.LIST,
label: "Components",
});
const pdfContents = generatePDFContents(internalid, templateId, results, scriptContext);
// add saved search fields to the sublist
const savedSearch = sublist.addField({
id: "custpage_internalid",
type: serverWidget.FieldType.TEXT,
label: "ITEM",
});
const amount = sublist.addField({
id: 'amount',
type: serverWidget.FieldType.INTEGER,
label: 'Sum of Quantity'
})
sublist.updateTotallingFieldId({
id: 'amount'
})
// load the saved search
const savedSearchObj = search.load({
id: "customsearch2143",
});
// run the saved search and display the results in the sublist
let line = 0;
workorderSearchObj.run().each((result) => {
sublist.setSublistValue({
id: "custpage_internalid",
line: line,
value: result.getText({
name: "item",
summary: "GROUP"
})
});
sublist.setSublistValue({
id: "amount",
line: line,
value: result.getValue({
name: "quantity",
summary: "SUM",
label: "Quantity"
})
})
line++;
return true;
});
// display the form
scriptContext.response.writePage(form);
//scriptContext.response.writeFile(newfile, true);
} catch (e) {
log.error({ title: "error in onRequest", details: e });
}
}
const generatePDFContents = (recId, templateId, results, ) => {
const pdfRenderer = render.create();
pdfRenderer.setTemplateByScriptId({ scriptId: templateId });
pdfRenderer.addSearchResults({
templateName: 'LF | Component Needed Template',
searchResult: results
});
return pdfRenderer.renderAsPdf();
};
return {onRequest}
});
Eric B
07/31/2023, 7:35 PMDavid B
08/01/2023, 2:04 AM