2017-08-03 60 views
1

我正在使用具有多個行項目的套件/包(項目)記錄的NetSuite保存的搜索。例如,每個套件/套件由兩個產品SKU組成。使用多行項目創建NetSuite保存的搜索

目前,我保存的搜索正在各個項目SKU上拉動它自己的行。我如何將每個套件/包裝保存在一行中,並將不同的項目SKU拉入自己的列中?我是否可以創建一個始終提取項目SKU#1的列和總是提取項目SKU#2的另一列?

我期待的記錄是{memberitem}。有沒有辦法告訴它將{memberitem},{memberitem1}和{memberitem2}拉入不同的列中?

+0

可以使用2個公式域與機箱內,然後用適當的分組。如果您想要更具體的答案,請提供有關此搜索和您想查看的字段的更多信息。 –

+0

謝謝!我正在使用Type = Kit/Package的Item記錄創建一個搜索。我正在尋找套件/套件組件。每個套件/套件都有兩個組件。該字段名爲Member Item {memberitem}。此外,我正在使用此搜索創建高級PDF/HTML模板,因此我無法使用摘要字段。 –

回答

2

首先 - 我看到在一行中組合兩個成員項目的唯一方法是對這些字段進行分組,即 - 創建一個摘要搜索。

如果您需要此搜索作爲高級PDF模板的基礎,唯一的方法是編寫腳本(因爲高級PDF/HTML模板中不允許使用摘要搜索)。

在這裏,我爲您創建了一個suitelet腳本,用於執行此PDF生成。當然,我在代碼中有xml,但是您可以從文件櫃中加載預先保存的XML文件。此外,您可以創建一個保存的搜索並將其加載到腳本中。請記住,在項目級別的所有字段應該與彙總方式「組」

/** 
* @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 
    }; 

}); 
相關問題