【问题标题】:Creating NetSuite Saved Searches with Multiple Line Items使用多个行项目创建 NetSuite 保存的搜索
【发布时间】:2017-08-05 23:09:21
【问题描述】:

我正在使用具有多个行项目的套件/包(项目)记录进行 NetSuite 保存搜索。例如,每个套件/包装由两个项目 SKU 组成。

目前,我的“已保存搜索”正在将每个商品 SKU 拉入单独的行中。如何将每个套件/包装保持在一条线上,并将不同的项目 SKU 拉到自己的列中?我是否可以创建一个始终拉入项目 SKU #1 的列和另一个始终拉入项目 SKU #2 的列?

我希望加入的记录是 {memberitem}。有没有办法让它将 {memberitem}、{memberitem1} 和 {memberitem2} 拉入不同的列?

【问题讨论】:

  • 您可以使用 2 个带有 CASE 的公式字段,然后使用适当的分组。如果您需要更具体的答案,请提供有关此搜索的更多信息以及您想查看的字段。
  • 谢谢!我正在使用 Type = Kit/Package 的项目记录创建搜索。我希望引入 Kit/Package 组件。每个套件/包都有两个组件。该字段被命名为成员项目 {memberitem}。另外,我正在使用这个搜索来创建一个高级 PDF/HTML 模板,所以我不能使用汇总字段。

标签: netsuite


【解决方案1】:

首先 - 我看到在一行上组合 2 个成员项目的唯一方法是将字段分组,即 - 创建摘要搜索。

如果您需要将此搜索用作高级 PDF 模板的基础,唯一的方法是编写脚本(因为高级 PDF/HTML 模板中不允许进行摘要搜索)。

在这里,我为您创建了一个执行此 PDF 生成的套件脚本。当然,我在代码中有 xml,但是您可以从文件柜中加载预先保存的 XML 文件。此外,您可以创建一个已保存的搜索并将其加载到脚本中。请记住,ITEM 级别的所有字段都应使用摘要类型“GROUP”

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/render','N/search'],

function(render, search) {


    function onRequest(context) {

        var kititemSearchObj = search.create({
            type: "kititem",
            filters: [
              ["type","anyof","Kit"]
            ],
            columns: [
              search.createColumn({
                 name: "itemid",
                 summary: "GROUP"
              }),
              search.createColumn({
                 name: "displayname",
                 summary: "GROUP"
              }),
              search.createColumn({
                 name: "salesdescription",
                 summary: "GROUP"
              }),
              search.createColumn({
                 name: "baseprice",
                 summary: "GROUP"
              }),
              search.createColumn({
                 name: "formulatext",
                 summary: "MAX",
                 formula: "CASE WHEN {memberline}=1 THEN {memberitem} ELSE null END"
              }),
              search.createColumn({
                 name: "formulatext",
                 summary: "MAX",
                 formula: "CASE WHEN {memberline}=2 THEN {memberitem} ELSE null END"
              })
            ]
        });


        var myCustomObject = {

                KitItems : []
        };

        kititemSearchObj.run().each(function(r){
            var aRow = {
                    linenum : myCustomObject.KitItems.length + 1,
                    itemid : r.getValue({
                             name: "itemid",
                             summary: "GROUP"
                          }),
                    displayname :  r.getValue({
                             name: "displayname",
                             summary: "GROUP"
                          }),
                    salesdescription :  r.getValue({
                             name: "salesdescription",
                             summary: "GROUP"
                          }),
                    baseprice :  r.getValue({
                             name: "baseprice",
                             summary: "GROUP"
                          }), 
                    memberitem1 :  r.getValue({
                             name: "formulatext",
                             summary: "MAX",
                          }), 
                    memberitem2 :  r.getValue({
                             name: "formulatext_1",
                             summary: "MAX",
                          })

            };
            myCustomObject.KitItems.push(aRow);

           return true;
        });

        var renderer = render.create();

        var xmlStr = 
            '<?xml version="1.0"?>\n'+
            '<!DOCTYPE pdf PUBLIC "-//big.faceless.org//report" "report-1.1.dtd">\n' +
            '<pdf>\n<body size="A4">\n'+
            '<#if results.KitItems?has_content>'+
            '<table><!-- start rows --><#list results.KitItems as line>'+
            '  <tr><td>${line.linenum}</td>'+
            '      <td>${line.itemid}</td>'+
            '      <td>${line.displayname}</td>'+
            '      <td>${line.salesdescription}</td>'+
            '      <td>${line.baseprice}</td>'+
            '      <td>${line.memberitem1}</td>'+
            '      <td>${line.memberitem2}</td>'+
            '  </tr>'+
            '  </#list>'+
            '</table>'+
            '</#if>'+
            '</body>\n</pdf>';

        renderer.templateContent = xmlStr;

        renderer.addCustomDataSource({
            format: render.DataSource.OBJECT,
            alias: "results",
            data: myCustomObject
            });        

        var pdfResult = renderer.renderAsPdf();
        pdfResult.name = 'kitItems.pdf';

        context.response.writeFile({
            file: pdfResult,
            isInline : true
        });

    }

    return {
        onRequest: onRequest
    };

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多