2016-04-05 14 views
1

Böyle bir senaryo var: Sistem A, satır öğelerine sahip faturalar oluşturur ve NetSuite'ye aktarır. Daha sonra, Sistem A'daki fatura, satır öğelerinin güncelleştirildiği veya kaldırıldığı ve NetSuite'ye geri gönderildiği durumlarda değiştirildi. Hangi satır öğelerinin değiştirildiğini veya kaldırıldığını nasıl bilebiliriz? Sistem A bir satır kimliği mi göndermeli? Bu durumda, satır öğesi kimliğini nasıl elde edeceğimi bulmaya çalışıyorum ancak bir değer döndürmüyor.NetSuite - Satır Öğesi Kimliği

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 }

cevap

2

Biz bir satır öğesini tanımlayan güvenilir bir yol olarak NetSuite en linenumber veya diğer tür alanların herhangi bulamadı. Çizgiler yeniden düzenlendiğinde veya modifiye edildiğinde kayıtların ömrü boyunca değişiyor gibi görünüyorlar.

Biz Benzersiz ID veya Hat Kimliğini ya da her türlü istediğiniz gibi bir şey adlı özel İşlem Sütun alanını ekleyerek geçmişte bu başardık. Daha sonra, NetSuite veya harici sistem her satır için bir UUID oluşturabilir ve bunu özel sütunda saklayabilir. Her iki sistem de her satır için UUID'ye bir referans sağladıkça, bunları senkronize edebilirsiniz.

+0

Teşekkürler - Bu yaklaşımı alacağım. Yani, NetSuite'a gönderilen orijinal faturanın üç satır öğesi varsa ve daha sonra değiştirilmiş sürümde 2 satır öğesi varsa ... Özel kimlikleri karşılaştırabilirim ve eşleşme bulunmadığını varsayardım, bu durumda, söz konusu satır öğesini silinir. NetSuite'de fatura. Ancak bir satır öğesinin alanının güncellenip güncellenmediğini nasıl bilebilirim? – MG2016

+0

İlgilendiğiniz tüm alan değerlerini el ile karşılaştırmanız gerekir. Her satırdaki değerleri JSON'daki Nesneleriniz ile aynı yapının JS Nesnesine ayrıştırmanızı öneririz. Sonra iki Nesneyi karşılaştırabilirsiniz. – erictgrubaugh

3

Özel işlem sütun alanıyla yaklaşım, NS ile RESTlet ile harici bir sistem arasındaki veri senkronizasyonuyla başa çıkmak için iyi bir şeydir. Ancak bunu gerçekleştirmek için dahili bir seçeneğimiz var ve bunu yapmanın standart yolu bu.

ExternalId, kayıtlar ve satır sonları için kullanılabilen standart bir sütundur. Burada, bir satırdaki satır öğelerini güncelleştirmek/kaldırmak için kullanılabilir.

Bu ExternalId, NS kayıtlarının UI'sinde görüntülenemez. Bu harici sistemde saklanan kayıtlarla saklanabilir.

Örnek olarak, SQL Tablosuna sahip Harici Sistem bir SalesOrder'ı saklar ve bu tabloda bir id sütunu vardır ve ayrıca SOLineItem tablosu da satış sütununun ilgili satırını da depolar.

Artık kayıt kimliği, SO için externalid olarak JSON'a geçirilecek ve satırsonları kimliği, JSON'daki item nesnesi altındaki lineitems'ler için externalid olarak JSON'a geçirilmelidir.

Numune JSON bunu öğe alt liste içinde isRemove öğesi adlı bir özellik var örnek JSON fark ederse

{ 
     "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 
     } 
     ] 
} 

. Bu true değerine ayarlanırsa, ilgili satır öğesi kaldırılmalıdır.

+0

Teşekkürler Frederick - bir şeyler olacak. – MG2016

+0

Sonuçları bana bildirin :) –

İlgili konular