0

我正在我现有的已保存搜索中应用过滤器,但它没有被应用。谁能帮助我这有什么问题,因为我是 Suitescripts 的新手?

过滤器:genderitem在参数中从 Suitelet 传递到此计划脚本:

var slfilters = runtime.getCurrentScript().getParameter({ name: 'custscript_searchfilter_report' });
  //
  // ─── MAIN FUNCTION───────────────────────────────────────────────────
  //
  function generateReport() {
    var slfilters = runtime.getCurrentScript().getParameter({
      name: 'custscript_searchfilter_report'
    });
    log.debug('slfilters', slfilters);

    if (!!slfilters) {
      slfilters = JSON.parse(slfilters);
    }
    log.debug('slfilters2', slfilters);

    //var getUser = runtime.getCurrentUser();

    var gender = slfilters.isgender
    log.debug('gender', gender)
    var item = slfilters.isItem
    log.debug('item', item)

    var item = getItems(item, gender);
    log.debug('items table', item)
    // return item;

    var xmlTemplateFile = file.load(3918);
    //var template = script.getParameter({ name: 'custscript_template' });
    var renderer = render.create();
    renderer.templateContent = xmlTemplateFile.getContents();
    var customSources = {
      alias: 'searchdata',
      format: render.DataSource.JSON,
      data: JSON.stringify({
        value: item,
      })
    };
    renderer.addCustomDataSource(customSources);

    var xml = renderer.renderAsString();
    var pdf = render.xmlToPdf({
      "xmlString": xml
    });

    email.send({
      author: 317,
      recipients: 'aniswtf@gmail.com',
      subject: 'Item Report',
      body: 'Report Generated: ',
      attachments: [pdf]
    });
  }

  //
  // ─── SEARCH ───────────────────────────────────────────────────
  //
  function getItems(item, gender) {
    try {
      var itemSearch = search.load({
        id: 'customsearch_mx_itemsearch'
      });
      log.error('itemSearch', itemSearch)

      var defaultFilters = itemSearch.filters;
      var arrFilters = [];

      arrFilters.push(search.createFilter({
        name: 'custitem5', //gender
        operator: 'anyof',
        values: gender
      }));

      arrFilters.push(search.createFilter({
        name: 'itemid',
        operator: 'anyof',
        values: item
      }));

      defaultFilters = defaultFilters.concat(arrFilters);
      log.error('Updated Filters', defaultFilters)

      var results = itemSearch.run().getRange({
        start: 0,
        end: 150
      });

      results.map(function(x) {
        return {
          'category': x.getText({
            name: "custitem10",
            join: "parent"
          }),
          'season': x.getValue({
            name: "custitem11",
            join: "parent"
          }),
          'riselabel': x.getValue({
            name: "custitem_itemriselabel",
            join: "parent"
          }),
          'fit': x.getValue({
            name: "custitem9",
            join: "parent"
          }),
          'name': x.getValue({ //sku
            name: "itemid",
            join: "parent"
          }),
          'style': x.getValue({
            name: "custitem8",
            join: "parent"
          }),
          'inseam': x.getValue({
            name: "custitem7",
            join: "parent"
          }),
          'wash': x.getValue({
            name: "custitem_washname",
            join: "parent"
          }),
        };
      });
      return results;
    } catch (e) {
      log.error('error in getItems', e)
    }
  }
  return {
    execute: execute
  };
});
4

1 回答 1

1

在 SuiteScript 1.0 中有一个 nlobjSearch 方法“setFilters”。SuiteScript 2.0 似乎没有等效项,但您仍然需要以某种方式设置过滤器。看起来这是缺少的步骤。也许尝试将新过滤器推送到/代替当前搜索过滤器

itemSearch.filters.push(defaultFilters);

不确定是否需要保存搜索。我希望这会有所帮助

于 2019-11-09T00:38:18.317 回答