I am having some difficulty with a button I have added to a Inventory form. The button is added via a UE script at beforeLoad, which is tied to a function in a Client Script, which on click opens up a suitelet using an advanced pdf/html template which is populated by record data.
When I click on the button I get this error.
This is my code
CLIENTSCRIPT
/** * @NApiVersion 2.x * @nScriptType ClientScript * @ModuleScope SameAccount */ define(['N/url', 'N/currentRecord'], function(url, currentRecord) { var exports = {}; function pageInit(context){ } exports.pageInit = pageInit; function onButtonClick(context){ try{ /*var record = currentRecord.get(); var recId = record.id; var recType = record.type;*/ var suiteletUrl = url.resolveScript({ scriptId : 'customscript_createbutton_st', //Script ID de mi entorno Suitelet deploymentId: 'customdeploy_createbutton_st', //Deployment ID de mi entorno Suitelet returnExternalUrl: false, params: { recordId: currentRecord.get().id } }); window.open(suiteletUrl); }catch(e){ console.log(e.message); } } exports.onButtonClick = onButtonClick; exports.pageInit = pageInit; return exports; });
SUITELET
/** * @NApiVersion 2.x * @NScriptType Suitelet * @appliedtorecord transaction */ define(['N/render', 'N/record', 'N/xml', 'N/format', 'N/error'], function(render, record, xml, format, error) { function onRequest(context){ var recordId = context.request.parameters.recordId; var pdfFileName = "Recuento de Invetario"; var renderer = render.create(); var content = renderer.addRecord({ templateName: 'Inventario', record: record.load({ type: record.Type.INVENTORY_COUNT, id: recordId }) }); renderer.setTemplateByScriptId('custtmpl _vm_recuento_inventario'); context.response.setHeader({ name: 'content-disposition', value: 'inline; filename"' + pdfFileName + '_' + recordId + '.pdf"' }); context.response.writeFile(renderer.renderAsPdf()); } return{ onRequest: onRequest } });
On your User Event Script, you should pass your ID only and NOT the whole context. Its either setting the
recordId
as undefined/null so the Suitelet throws theSSS_MISSING_REQD_ARGUMENT
error due to an invalid ID.