2016-07-15 6 views
0

я хочу создать поиск путем объединения двух записей с помощью левого внешнего соединения в «SuiteScript версии 2.0»Как создать сохраненный поиск в NetSuite путем объединения двух записей с помощью левого внешнего соединения в SuiteScript 2.0

первый рекорд это стандартная запись (счет-фактура), а вторая запись - это пользовательская запись (контракт), в которой оба отчета имеют общие поля, а именно: класс и тип транзакции, владелец.

поля

Счет записи являются транзакции столбцов поля (класс, тип сделки, владелец) контракта записи Поля являются пользовательские поля (класс, сделка, владелец)

я создал поиск для счета-фактуры записи и основанный на результатах поиска в записи счета, я создал поиск в записи контракта. мой код дает правильные результаты, но вопрос «возможно ли создать поиск двух разных записей, используя левое внешнее соединение в версии SuiteScript 2.0?»

//Create Search on Standard Invoice Record 
      var mySearch = search.create({ 
       type: 'invoice', 
       columns: ['internalId', 'item', 'line', 'custcol_class', 'custcol_transaction_type', 'custcol_owner', 'amount'], 
       filters: ['trandate', 'after', '12/15/2015'] 
      }); 

      //Executing the First 100 records on the search result 
      var searchResult = mySearch.run().getRange(0, 100); 
      log.debug('Search Length', searchResult.length); 

      for (var i = 0; i < searchResult.length; i++) { 

       var lineId = searchResult[i].getValue({ 
        name: 'line' 
       }); 
       var item = searchResult[i].getValue({ 
        name: 'item' 
       }); 
       var contractClass = searchResult[i].getValue({ 
        name: 'custcol_class' 
       }); 
       var transactionType = searchResult[i].getValue({ 
        name: 'custcol_transaction_type' 
       }); 
       var owner = searchResult[i].getValue({ 
        name: 'custcol_owner' 
       }); 
       var invoice_id = searchResult[i].getValue({ 
        name: 'internalId' 
       }); 
       var invoice_amt = searchResult[i].getValue({ 
        name: 'amount' 
       }); 
       log.debug('Values', 'contractClass:' + contractClass + '-transactionType:' + transactionType + '-owner:' + owner); 

       if (contractClass != '' && owner != '' && transactionType != '') { 
        log.debug('create commision', 'item' + item + '-lineId:' + lineId + '-contractClass:' + contractClass + '-transactionType:' + transactionType + '-owner:' + owner); 
        createCommission(contractClass, transactionType, owner, invoice_id, invoice_amt); 
       } 


      } 



     } 

     function createCommission(contractClass, transactionType, owner, invoiceId, invoice_amt) { 
      log.debug('Entry', 'createCommission Initiated'); 
      log.debug('invoice amount..', invoice_amt); 
      //Creating search on Custom Record Contract 
      var mySearch = search.create({ 
       type: 'customrecord_contract', 
       columns: ['internalId', 'custrecord_rec_class', 'custrecord_vendor_fees_formula'], 
       filters: [ 
        ['custrecord_rec_class', 'anyof', contractClass], 'AND', ['custrecor_rec_transaction_type', 'anyof', transactionType], 'AND', ['custrecord__rec_owner', 'anyof', owner], 'AND', ['custrecord__vendor_fees_formula', 'anyof', INRAM_RS_V1] 
       ] 
      }); 
} 

Заранее спасибо

ответ

2

К сожалению, это не возможно в настоящее время с NetSuite.

Вам нужно будет согласиться на запись функции, которая принимает оба набора результатов и соответственно их сочетает. Если вы используете любые библиотеки утилиты массивов, такие как lodash, вы можете использовать что-то вроде _.groupBy, чтобы сделать комбинацию проще.