高级 PDF NetSuite - 按通用字段值对项目表进行分组

Posted

技术标签:

【中文标题】高级 PDF NetSuite - 按通用字段值对项目表进行分组【英文标题】:Advanced PDF NetSuite - Group Item Tables by a Common Field Value 【发布时间】:2020-07-18 00:24:32 【问题描述】:

是否可以通过基于特定字段的共同值进行分组来将一个大项目表分离为较小的项目表?

例如,如果项目记录有一个名为“Category”的字段,并且列表选项是“Category A”、“Category B”和“Category C”,是否可以将表格分成 3 个较小的表格?

【问题讨论】:

【参考方案1】:

高级 PDF 模板引擎中的语法类似于:

<#iftrue>
  <table></table>
<#else>
  <table></table>

我建议您找到一个与您想要的功能类似的 PDF,然后复制/编辑代码以供您使用。

但是,通过一些练习,我认为您会发现使用 javascript 和 XML 创建 PDF 会容易得多。我是从头顶上做的,所以其中一些可能会关闭。如果您需要帮助,或者我犯了错误,请随时与我们联系。

设置是一个用户事件、一个 Suitelet 和一个 XML 文件。

    用户事件脚本在查看模式下显示一个按钮,单击该按钮会打开一个 Suitelet:
/**
 * @NScriptType UserEvent
 * @NApiVersion 2.0 // 2.1 if you can
 */

define(["N/anyLibrariesYouNeed"), function(anyLibrariesYouNeed) 
  function beforeLoad(context)
    if (context.type === "view") 
      context.form.addButton(
        id: "custpage_print_pdf",
        label: "Print PDF",
        functionName: 'window.open("link_to_suitelet")'
  

  return beforeLoad: beforeLoad
)
    从上述用户事件中打开的Suitelet,将XML文件中的占位符文本替换为条件文本:
/**
 * @NScriptType Suitelet
 * @NApiVersion 2.0 // 2.1 if you can
 */

define(["N/file", "N/search", "N/anyLibrariesYouNeed"], function(file, search, anyLibrariesYouNeed) 
  function onRequest(context) 
    // Load the PDF, which is just an XML file
    var myPDF = file.load("path_to_your PDF").getContents();

    // Load the search
    var mySearch = search.load(id: "mySearchId");

    // Do some stuff with the results ...
    var myResults = [];
    mySearch.run.each(function(result)
      // ... like generate a </table> or group results with Lodash
    )

    //Just make sure all the placeholder text in your XML (PDF) file is replaced. If it's not do ... 
    myPDF = myPDF.replace("Placeholder", "With this");

    //Finally, render the PDF from XML using the bigfaceless engine provided by NetSuite. The setup for bigfaceless is in the XML file.
    context.response.renderPdf(myPDF);
  
  return onRequest: onRequest
)
    使用context.response.renderPdf(myPDF) 呈现为 PDF 的占位符 XML 文件
//big_face_less_tag_goes_here and something like DOCTYPE XML
<pdf>
  <head>
    <style>
      table tr th td 
        border: 1px solid black
      
    </style>

    <body>
      Placeholder
    </body>
</pdf>

希望对您有所帮助。如果您需要帮助,请大声喊叫!

【讨论】:

只想对您的意见表示感谢 - 非常感谢您的帮助。但是,我认为我在这方面有点不够深入。 我可以手把手地一步一步地走过,但不确定您是否有时间提供帮助? 嗨@Ryan!我明天做。明天我一定会在此评论部分与您联系。现在,你能告诉我你在理解什么方面有困难吗?例如,它是 JavaScript 吗?上传脚本? Suitelet 模块?不用担心不理解,NetSuite 是一头野兽,需要一些时间。但是,如果你能帮我找到一个起点,那会让我们的时间更有效率。也不要担心在一个会话中安装一些东西。我们会弄清楚的。期待您的回复-zerecees 谢谢! - 它对编码来说有点像新事物,并且仍在学习基础知识,并且能够通过一些试验和错误来解决问题,但这个练习绝对让我觉得超出了我的深度。 基本上我拥有的是一个基于项目记录的列表,它创建一个标题为表的表; '产品代码'、'产品描述'、'增值税金额'等

以上是关于高级 PDF NetSuite - 按通用字段值对项目表进行分组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NetSuite 的高级 PDF 模板中插入自定义字段?

如何使用高级 PDF/HTML 模板工具在 NetSuite 保存的搜索中打印多个公式字段?

NetSuite 高级 PDF 模板 - Freemarker 语法

使用 NetSuite 高级 pdf 打印时,长文本被剪切

在 netsuite 高级 pdf 模板中,无论如何都可以限制字符串中的字符

NetSuite Advanced PDF - 使用记录中的多选字段过滤项目表列表