Having trouble with a print button PDF in the record - Netsuite

417 Views Asked by At

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.

Img 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
  }
});
1

There are 1 best solutions below

0
On

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 the SSS_MISSING_REQD_ARGUMENT error due to an invalid ID.