netsuite - Netsuite 问题通过 Suitelet 2.0 呈现具有当前记录数据的高级 PDF
问题描述
问题:我需要从一个开放的销售订单为直接发货客户创建一个虚拟装箱单。
第 1 步:我制作了一个调用此客户端脚本点击处理程序的用户事件按钮:
define(['N/url', 'N/currentRecord'], function (url, currentRecord) {
function pageInit(context) {
}
function onButtonClick() {
var suiteletUrl = url.resolveScript({
scriptId: 'customscript_zg_drop_packingslip_pdf', // my suitelet script id
deploymentId: 'customdeploy_zg_drop_packingslip_pdf', // my suitelet deployment id
returnExternalUrl: false,
params: {
custom_id: currentRecord.get().id,
},
});
window.open(suiteletUrl);
}
exports.onButtonClick = onButtonClick;
exports.pageInit = pageInit;
return exports;
});
第2步:我被困在套件上。我希望它从当前记录中提取数据并将其传递给高级 PDF 模板,以在新窗口中创建我的托运装箱单。
define(['N/render', 'N/record', 'N/xml'],
function(render, record, xml) {
function onRequest(context) {
var id = context.request.parameters.custom_id;
if (!id) {
context.response.write('The parameter "custom_id" is required');
return;
}
var renderer = render.create(id);
renderer.setTemplateByScriptId("CUSTTMPL_128_3768700_732"); // The ID of my Packing Slip Advanced PDF Template
var myPdf = context.response.write(renderer.templateContent);
}
return {
onRequest:onRequest
}
})
当前输出未显示为 pdf,它会随着浏览器窗口进行拉伸和缩放。而不是通过它传递我当前的记录数据,我只获得模式浏览器令牌 ID。它目前看起来像这样:
但我希望它看起来像这样(就像我的高级 PDF 模板实际看起来一样),带有来自当前销售订单的真实数据,并且作为浏览器内的 pdf,我可以保存、打印和发送电子邮件。我不需要在文件柜中创建或存储这些文件:
解决方案
当您要生成 PDF 文件时,您必须使用:
context.response.writeFile(renderer.renderAsPdf());
renderer.create 函数也不接受“id”:您将在此处找到有关如何生成 PDF 文件的好示例:https ://system.netsuite.com/app/help/helpcenter.nl?fid=section_4412042824 .html
一个例子是:
var renderer = render.create();
renderer.addRecord('saleorder', record.load({
type: record.Type.SALES_ORDER,
id: context.request.parameters.custom_id
}));
renderer.setTemplateByScriptId("CUSTTMPL_128_3768700_732");
context.response.writeFile(renderer.renderAsPdf());
推荐阅读
- node.js - MongoDB 查找查询返回空数组
- server - SQL Server 代理:无法启动,无法启动 - 将“登录”帐户更改为托管服务帐户
- html - 为什么 AOS 和图像标签在同一页面中不起作用?
- reactjs - 302 Okta 重定向 - CORS 问题
- mule - 使用 PostgresSQL 的 Mulesoft
- mongodb - 计算模式内另一个模型中的文档
- python - 有限资源的有效分配(最大利润,所有可能的组合列表)
- python - Pandas `to_sql` 通过`if_exists = 'append' 给出`Table already exists` 错误
- z3 - Z3 Python 从解决方案中排除跟踪器变量
- javascript - 播放多个视频,例如 tiktok?