2015-11-28 35 views
3

我需要驗證在NetSuite中的內聯編輯。在Netsuite中驗證在線編輯

我已經有一個客戶端腳本,在正常編輯記錄時效果很好。

我嘗試添加一個用戶事件腳本,該腳本用於驗證該記錄的before save函數,但是看起來這被內聯編輯忽略。

有沒有人碰到過這個?

任何你可以提供的見解將是有幫助的。謝謝!

編輯:

從UE腳本中的相關代碼:

function beforeSubmit(type){ 
    if (type == "create" || type == "edit" || type == "xedit") { 
     var status = nlapiGetContext().getSetting("SCRIPT", "..."); 
     var amount = Number(nlapiGetContext().getSetting("SCRIPT", "...")); 

     var nr = nlapiGetNewRecord(); 
     var entitystatus = nr.getFieldValue("entitystatus"); 
     var projectedtotal = Number(nr.getFieldValue("projectedtotal")); 
     if (entitystatus == status && projectedtotal >= amount) { 
      var statusText = nr.getFieldText("entitystatus"); 
      var message = "ERROR..."; 
      throw nlapiCreateError("...", message, true); 
     } 
    } 
} 

這同樣適用於機會記錄。

正在驗證的字段是預計總計ID爲projectedtotal

+0

哪個字段是你內聯更新和什麼記錄類型?另外,如果它不在測試中,您是否可以檢查腳本部署? – prasun

+0

該字段爲預計總計(預計總計),記錄爲機會。只需雙重檢查部署。它被髮布並在正常編輯記錄時起作用。 – CyberEd

+1

根據文檔,內聯可編輯字段確實觸發用戶事件,唯一的選擇是使用NetSuite打開支持 – prasun

回答

2

我的錯誤,我誤解了如何處理xeditnlapiGetNewRecord()。在xedit中調用nlapiGetNewRecord僅返回編輯的字段,而不是整個記錄。因此,xedit模式中的if語句從來都不是真的,因爲數量或狀態將爲空(用戶不太可能同時編輯這兩個字段,並且驗證依賴於這兩個字段的值)。

我編輯了代碼來查找字段值,如果它不存在於新記錄中。現在一切都按預期工作!

感謝大家的幫助!

僅供參考,更正後的代碼如下。

function beforeSubmit(type){ 
    if (type == "create" || type == "edit" || type == "xedit") { 
     var status = nlapiGetContext().getSetting("SCRIPT", "..."); 
     var amount = Number(nlapiGetContext().getSetting("SCRIPT", "...")); 

     var nr = nlapiGetNewRecord(); 
     //Attempt to get values normally 
     var entitystatus = nr.getFieldValue("entitystatus"); 
     var projectedtotal = Number(nr.getFieldValue("projectedtotal")); 

     var id = nr.getId(); 

     //If values were null, it's likely they were not edited and 
     //thus not present in nr. Look them up. 
     if(!entitystatus){ 
      entitystatus = nlapiLookupField("opportunity", id, "entitystatus"); 
     } 
     if(!projectedtotal){ 
      projectedtotal = Number(nlapiLookupField("opportunity", id, "projectedtotal")); 
     } 

     if (entitystatus == status && projectedtotal >= amount) { 
      var message = "ERROR..."; 
      throw nlapiCreateError("101", message, true); 
     } 
    } 
} 
0

在你的用戶事件中,你檢查類型參數的值。對於內聯編輯,類型的值是'xedit'。

+0

是的。我正在檢查創建,編輯和xedit。如果我進行內聯編輯,然後打開記錄並保存,則用戶事件正常工作。在內聯編輯時似乎被忽略。 – CyberEd