Как получить значение «Shipaddresslist» для заказа на продажу из поиска, сохраненного в транзакции, или поиска в Suitescript? - PullRequest
0 голосов
/ 26 апреля 2018

В Netsuite тип записи заказа на продажу содержит поле с именем « shipaddresslist », которое содержит внутренний идентификатор адреса клиента, связанный с выбранным адресом клиента.

К сожалению, нет столбца поиска для заказов на продажу, который получит значение " shipaddresslist ", поэтому мне пришлось искать обходной путь.

Используя SuiteScript, я смог получить значение этого поля, просматривая результаты поиска, передавая идентификатор заказа на продажу в функцию record.Load () и вызывая record.getValue () для загруженного запись, как показано ниже

Поиск:

 var salesorderSearchObj = search.create({
   type: "salesorder",
   filters:
   [
      ["type","anyof","SalesOrd"],
      "AND",
      ["item.isfulfillable","is","T"],
      "AND",
      ["status","anyof","SalesOrd:B","SalesOrd:E","SalesOrd:D"],
      "AND",
      ["quantitycommitted","greaterthanorequalto","1"],
      "AND",
      ["location","anyof","1","3"],
      "AND",
      ["mainline","is","F"],
      "AND",
      ["item.type","anyof","InvtPart"]
   ],
   columns:
   [
      search.createColumn({
         name: "transactionnumber",
         sort: search.Sort.ASC,
         label: "Transaction Number"
      }),
      search.createColumn({name: "entity", label: "Name"}),
      search.createColumn({
         name: "custcol8",
         sort: search.Sort.ASC,
         label: "JANコード"
      }),
      search.createColumn({name: "quantityuom", label: "Quantity in Transaction Units"}),
      search.createColumn({name: "statusref", label: "Status"}),
      search.createColumn({
         name: "quantityonhand",
         join: "item",
         label: "On Hand"
      }),
      search.createColumn({
         name: "isfulfillable",
         join: "item",
         label: "Can be Fulfilled"
      }),
      search.createColumn({name: "department", label: "Department"}),
      search.createColumn({name: "otherrefnum", label: "PO/Cheque Number"}),
   ]
});

Загрузка циклов и записей:

var matches = [];

salesorderSearchObj.run().each(function(result){
  var objRecord = record.load({
      type: record.Type.SALES_ORDER,
      id: result.id,
      isDynamic: true,
  });
  var push = resultToObject(result);
  push.addressid = objRecord.getValue({fieldId:'shipaddresslist'});
  log.debug("Result:",push);
  matches.push(push);
  return true;
});

Это прекрасно работает ... За исключением того, что я возвращаю около 1000 заказов на продажу с поиском, это означает, что record.Load () проедает мои блоки управления, прежде чем я смогу завершить поиск и построить весь список результатов.

Короче говоря, есть ли способ вернуть значение " shipaddresslist " из записи заказа на продажу непосредственно из объекта поиска? Или, возможно, способ динамического захвата этого поля без загрузки всего объекта записи?

Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

решено (KINDA)

Привет всем, я поспрашивал и получил полу-решение, так что на случай, если кто-нибудь еще столкнется с этой проблемой, вот решение.

В своих целях я использовал только SuiteScript, потому что не думал, что вы сможете получить поле в самом Netsuite, но я ошибся. Вот как можно получить поле в Netsuite:

Решение

1: перейдите к спискам> Поиск> Сохраненные поиски> Новый

2: Выбрать транзакцию

3: На вкладке Критерии Стандартная вложенная вкладка добавьте следующие фильтры:

--- Выберите тип: выберите тип транзакции, которую вы хотите запустить

--- Адрес доставки: не пусто

--- Основная линия верна

--- Формула (Текст): DECODE ({shipaddress}, {customer.address}, '1', '0') Начинается с 1

4: на вкладке Результаты добавьте следующие столбцы:

--- Адрес доставки

--- Поля клиента / проекта - это адрес Внутренний идентификатор

5: введите имя для поиска и нажмите «Сохранить и запустить».

Единственным обязательным критерием является Формула, но это решение скопировано и вставлено из SuiteAnswers. Я рекомендую просто использовать формулу и добавлять необходимые критерии по своему усмотрению.

Кредит переходит к u / seekcant в субреддите r / Netsuite для поиска и публикации этого решения.

0 голосов
/ 01 мая 2018

Если вам нужен внутренний идентификатор адреса клиента, вы можете добавить его в столбцы поиска

search.createColumn({
         name: "internalid",
         join: "shippingAddress",
         label: "Internal ID"
      })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...