Добавьте кнопку «Печать» к кредитам поставщиков (режим просмотра) с помощью расширенного шаблона PDF в Netsuite SuiteScripts 2.0

Поскольку у меня были некоторые проблемы с созданием кнопки печати, я хотел бы сделать свои скрипты доступными здесь для создания кнопки печати. Надеюсь, это поможет одному или другому :-)

Вам нужно всего лишь интегрировать три сценария и изменить идентификатор в соответствующих сценариях.

Сюжетный скрипт (vc_print_button_suitelet.js):

    define(['N/render', 'N/record', 'N/xml'], function(render, record, xml) 
   {

  function onRequest(context) {

    var custom_id = context.request.parameters.custom_id;
    var pdfFileName = "vendorcredit";
    var renderer = render.create();
    var content = renderer.addRecord({
      templateName: 'record',
      record: record.load({
        type: record.Type.VENDOR_CREDIT,
        id: custom_id
      })
    });
    renderer.setTemplateByScriptId("CUSTTMPL_112_5298640_SB1_621");
    context.response.setHeader({
      name: 'content-disposition',
      value: 'inline; filename="' + pdfFileName + '_' + custom_id + '.pdf"'
    });
    context.response.writeFile(renderer.renderAsPdf());
  }
  return {
    onRequest: onRequest
  }
  })

Клиентский скрипт (vc_print_button_client.js):

define(['N/url', 'N/currentRecord'], function(url, currentRecord) {

  var exports = {};

  function pageInit(context) {
    // TODO
  }

  function onButtonClick() {
    var suiteletUrl = url.resolveScript({
      scriptId: 'customscript_vc_print_button_suitelet',
      deploymentId: 'customdeploy_vc_print_button_suitelet',
      returnExternalUrl: false,
      params: {
        custom_id: currentRecord.get().id,
      },
    });

    window.open(suiteletUrl);
  }

  exports.onButtonClick = onButtonClick;
  exports.pageInit = pageInit;
  return exports;
});

Сценарий события (vc_print_button_event.js):

define([], function() {

  var exports = {};

  function beforeLoad(context) {
    context.form.addButton({
      id: "custpage_vcpb",
      label: "Print",
      functionName: "onButtonClick"
    });
    context.form.clientScriptModulePath = "SuiteScripts/vcPrintButton/vc_print_button_client.js";
  }

  exports.beforeLoad = beforeLoad;
  return exports;
});

Всего 1 ответ


  1. отображение PDF в браузере зависит от нескольких вещей. Одним из них является то, как ваш браузер настроен для обработки PDF-файлов, и вы ничего не можете с этим поделать. Другой - убедиться, что вы установили заголовок расположения контента:

    response.setHeader({name:'content-disposition', value: 'inline; filename="'+ pdfFileName +'"'});

  2. Ваш PDF создается, но не получает значения из записи. На основе предоставленного кода ваш шаблон должен ссылаться на такие поля, как ${vendorcredit.tranid} и <#list vendorcredit.apply as item>...</#list> Если он делает это правильно, то вы можете добавить свой код шаблона к вопросу.