2016-05-16 30 views
0

我試圖在客戶記錄上設置地址。我已經知道地址是客戶子列表​​的子記錄,我相信我可以在子記錄上設置字段,但我無法獲取要保存的更改。如何使用SuiteScript 2.0設置客戶的地址信息?如何使用SuiteScript 2.0爲客戶設置地址

當前代碼:

customer.selectNewLine({ 
    sublistId: 'addressbook' 
}); 

var addressSubrecord = customer.getCurrentSublistSubrecord({ 
    sublistId: 'addressbook', 
    fieldId: 'addressbookaddress' 
}); 

subrecordAddressDetail.setValue({ 
    fieldId: 'addr1', 
    value: 'Test Street' 
}); 

subrecordAddressDetail.setValue({ 
    fieldId: 'country', 
    value: 'US' 
}); 

customer.commitLine({ 
    sublistId: 'addressbook' 
}); 

我也試過.commitList後加入customer.save(),但我得到的錯誤Record has changed當我嘗試這樣做。

回答

1

我認爲你需要把這個地址當作正確的記錄。因此,在檢索它之後,設置它的值,然後單獨提交。沿着這些路線的東西:

customer.selectNewLine({ 
    sublistId: 'addressbook' 
}); 

var addressSubrecord = customer.getCurrentSublistSubrecord({ 
    sublistId: 'addressbook', 
    fieldId: 'addressbookaddress' 
}); 

addressSubrecord.setValue({ 
    fieldId: 'addr1', 
    value: 'Test Street' 
}); 

addressSubrecord.setValue({ 
    fieldId: 'country', 
    value: 'US' 
}); 

addressSubrecord.save() 

customer.commitLine({ //probably not necessary since address is already updated 
    sublistId: 'addressbook' 
}); 
+0

@TonyH嗨 - 感謝您的幫助。它看起來像Subrecords在SuiteScript2.0中沒有'.save()'方法。調用save會返回該方法未定義的錯誤。我能夠弄清楚我的問題 - 我發佈了一個概述問題的答案。 –

1

我錯過的部分是,您需要保存父記錄的子記錄的subrecord的任何更改才能生效。我無法保存上述父記錄,因爲我已對該記錄進行了更改並將其保存起來,這導致了Record has already changed error

一般來說地址可以被添加到客戶記錄:

  1. 選擇在addressbook子列表線。
  2. 檢索當前選定行的地址子記錄。
  3. 更新子記錄。
  4. 提交addressbook子列表中的選定行。
  5. 保存父記錄。

例如,這將更新的第一個地址給定客戶,或者如果它不創建它存在:

function updateAddress(customer, address) { 
    var currentAddressCount = customer.getLineCount({ 
     'sublistId': 'addressbook' 
    }); 

    if (currentAddressCount === 0){ 
     customer.selectNewLine({ 
     sublistId: 'addressbook' 
     }); 
    } else { 
     customer.selectLine({ 
     sublistId: 'addressbook', 
     line: 0 
     });  
    } 

    var addressSubrecord = customer.getCurrentSublistSubrecord({ 
     sublistId: 'addressbook', 
     fieldId: 'addressbookaddress' 
    }); 

    // Set all required values here. 
    addressSubrecord.setValue({ 
     fieldId: 'addr1', 
     value: address.line_one 
    }) 

    customer.commitLine({ 
     sublistId: 'addressbook' 
    }); 
    customer.save() 
    } 
+0

一個令人討厭的障礙是:因爲這些子列表API只能在動態模式下使用,所以如果要更改它,則必須確保先設置Country字段。如果在動態模式下設置其他字段後更改國家/地區字段,則會丟失所有更改。最好在UI中進行空運行,以確保您知道應該設置字段的順序。 – Eidolon108

相關問題