2016-04-05 13 views
1

私はこのようなシナリオを持っています:システムAはラインアイテムを含む請求書を作成し、NetSuiteにプッシュします。後で、システムAの請求書が修正され、明細が更新または削除され、NetSuiteにプッシュバックされる可能性があります。どの広告申込情報が変更または削除されたかはどのようにわかりますか?システムAは回線IDを返すべきですか?その場合は、広告申込情報IDを取得する方法を検討しようとしていますが、値が返されていません。NetSuite - ラインアイテムIDを取得

for (var x = 1; x <= itemcount; x++) 
 
\t { 
 
\t var lineid = nlapiGetLineItemValue('item', 'linenumber', x) 
 
\t nlapiLogExecution('DEBUG', 'removing = ', lineid); 
 
\t \t if(lineid == 1) 
 
\t \t { 
 
      nlapiLogExecution('DEBUG', 'removing line item 1'); 
 
\t \t \t nlapiRemoveLineItem('item', x) 
 
\t \t } 
 
\t }

答えて

2

私たちは、NetSuiteのlinenumberまたは他のこのようなフィールドの任意のラインアイテムを識別する信頼できる方法であることが判明していません。これらの行は、行が並べ替えられたり変更されたりするたびに、記録の存続期間を通じて変化するように見えます。

我々は一意のIDまたはラインIDまたはものは何でもあなたが望むようなものと呼ばれる独自のトランザクション列フィールドを追加することで、過去にこれを達成しました。次に、NetSuiteまたは外部システムのいずれかで、各行のUUIDを生成し、それをカスタム列に格納することができます。両方のシステムが各行のUUIDへの参照を維持している限り、それらを同期させておくことができます。

+0

ありがとうございます - 私はそのアプローチをとるでしょう。したがって、NetSuiteに送信された元の請求書に3つの広告申込情報があって、後で修正されたバージョンに2つの広告申込情報がある場合...カスタムIDを比較できます。一致しない場合は削除されたと見なすことができますNetSuiteの請求書。しかし、広告申込情報のフィールドが更新されたかどうかはどのように分かりますか? – MG2016

+0

興味のあるフィールド値をすべて手動で比較する必要があります。JSONのラインオブジェクトと同じ構造のJSオブジェクトに各行の値を解析することをお勧めします。次に、2つのオブジェクトを比較できます。 – erictgrubaugh

3

カスタムトランザクション列フィールドのアプローチは、NSとRESTletを使用する外部システムとの間のデータの同期に対処するための良い方法です。しかし、これを実行するための組み込みオプションがあり、これが標準的な方法です。

ExternalIdは、レコードおよびラインアイテムで使用できる標準カラムです。これは、レコードのラインアイテムの更新/削除に使用できます。

このExternalIdは、NSレコードのUIでは表示できません。これは、外部システムに格納されているrecordidで保存することができます。

例として、SQLテーブルを持つ外部システムにはSalesOrderが格納され、そのテーブルにはid列があり、salesorderの各行項目にはID列も格納されているSOLineItemテーブルが格納されています。

これで、レコードIDはSOのexternalidとしてJSONに渡されなければなりません。また、lineitems idは、JSONのitemsオブジェクトのlineitemsのexternalidとしてJSONに渡されなければなりません。

サンプルJSON

{ 
     "internalid": "", 
     "recordtype": "salesorder", 
     "entity": "3217", 
     "salesrep": "3209", 
     "terms": "2", 
     "trandate": "6\/16\/2014", 
     "orderstatus": "A", 
     "otherrefnum": "245852", 
     "billaddress":"", 
     "shipaddress":"", 
     "externalid": "FF160614-SO03", //ID of SO record on SO SQL table 
     "item": [ 
     { 
      "isremove":"", 
      "internalid": "", 
      "item": "486", 
      "amount": "50", 
      "quantity": "5", 
     "externalid": "FF160614-SO03-L1-INV-486" //ID of LineItems record SOLineItem SQL table 
     }, 
     { 
      "isremove":"", 
      "internalid": "", 
      "item": "700", 
      "amount": "100", 
      "quantity": "1", 
      "externalid": "FF160614-SO03-L2-GRP-700A" //ID of LineItems record SOLineItem SQL table 
     } 
     ] 
} 

あなたはそれが項目のサブリストにisremoveと呼ばれる性質を持っているサンプルJSONに気づいた場合。 trueに設定すると、それぞれの広告申込情報を削除する必要があります。

+0

ありがとうフレデリック - 行くだろう。 – MG2016

+0

私は結果を知ってみましょう:) –