2016-04-07 18 views
0

envanteri geri çekecek şekilde oluşturulur, derleme derlemesi onay bekleniyorsa bitmiş ürünlerin envanterden çekilmesini engelleyen bir komut dosyası yazmaya çalışıyorum. Şimdiye kadar yaptığım ve Javascript'i ilk defa kullandığım ilk betik bu yüzden şimdiye kadar sahip olduğum hiçbir şey yapmazsa özür diliyorum (ve eğer aptalca geliyorsa). Komut, kaydın oluşturulmakta veya düzenlenmekte olan bir derleme yapısının olup olmadığını denetler ve sonra "miktar beklemede" geçici bir alan oluşturur. Kaydedildiğinde, onay durumu "onay bekleniyor" ise, komut, Oluşturulacak Miktardaki değere kadar olan miktarın değerini atar, ardından Oluşturulacak Miktar 0'a ayarlanır ve kayıt gönderilir. Onay durumu onaylanırsa, Oluşturulacak Miktar, beklemede depolanan değere ayarlanır ve miktar beklemesi 0 olarak ayarlanır, kayıt gönderilir. Yine de bu hiç mantıklı değilse özür dilerim.NetSuite: Komut dosyası derlemesi yalnızca onaylandığında

Komut Dosyası Hata Ayıklayıcı'yı kullanmayı denedim ancak kodumun çalıştığını sanmıyorum. Birisi yanlış gittiğimi veya doğru yolda olduğumu işaret edebilir mi?

Şimdiye dek sahip olduğum şeyler. Eğer böyle bir şey yaptıysa veya daha iyi bir yaklaşımı biliyorsa, ben hepim kulaklarım.

function commitIfApproved() { 
    var cR = nlapiGetOldRecord();  
    var recordId = cR.nlapiGetRecordID();  
    var recordType = cR.nlapiGetRecordType();  
    if (recordId == 'assemblybuild') {  
     if(recordType = 'create' || 'edit') {  
      var approvalstatus = cR.nlapiGetFieldValue('approval status');  
      var quantityPending = cR.nlapiGetFieldValue('quantity to build - pending');  
      if (approvalstatus == "Awaiting Approval") {  
       cR.nlapiSetFieldValue('quantity to build', '0');   
       cR.nlapiSetFieldValue('quantity to build - pending', quantityPending);  
       cR.nlapiSubmitRecord();  
       alert("Finished goods will not be taken from inventory until this assembly build is approved."); 
      } 
      if (approvalstatus == "Approved") {  
       cR.nlapiSetFieldValue('quantity to build', quantityPending);  
       cR.nlapiSetFieldValue('quantity to build - pending', '0');  
       cR.nlapiSubmitRecord();  
       alert("This assembly build has been approved. Finished goods have been subtracted from inventory."); 
      } 
     } 
    } 
} 

cevap

0

Görmek ilk hatayı recordId karşılaştırmanızdır. recordId yerine assemblybuild ile ifadenizi recordType yerine değiştirmek isteyeceksiniz.

İkincil yönteminiz, recordId ve recordType atamalarınızdaki çağrılarınızla ilgilidir. nlapiGetRecordId() ve nlapiGetRecordType() genel statik yöntemlerdir. Örnek yöntemler, getRecordType() ve getId()'dur. Aynı şey, tüm çağrılarınız için setFieldValue için geçerlidir. Kayıt nesnesinin API'sı hakkında ayrıntılı bilgi için nlobjRecord başlıklı Yardım makalesine bakın.

var recordId = nlapiGetRecordId(); // alternatively, cr.getId() var recordType = nlapiGetRecordType(); // alternatively, cr.getRecordType();

Son olarak, saha kimlikleri tamamen yanlış. 'quantity to build' gerçek bir kimlik değil. Tüm alanları ve ilgili kimliklerini görmek için, Assembly Build kayıtlarındaki sayfa için Eclipse IDE (Yardım> NetSuite Kayıt Tarayıcısı) içindeki Kayıt Tarayıcıyı kontrol etmek isteyeceksiniz.

+0

Hatalarımı bulduğunuz için çok teşekkür ederim. Kodumda şimdiye kadar hiç ayarlama yapmadım, ancak çalışıp çalışmadığını size bildireceğim! Bazı nedenlerden dolayı NetSuite makalelerinde ve yardımda iyi kaynaklar bulmak çok zor. – Jordan