[英]How to set an address on customer using 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
。
我缺少的部分是,您需要保存父記錄才能使對子列表的子記錄的任何更改生效。 我無法保存該父記錄,因為我已經對該記錄進行了更改並先前保存了它們,從而導致Record has already changed error
。
通常,可以通過以下方式將地址添加到客戶記錄中:
addressbook
子列表中選擇一行。 addressbook
簿子列表中的選定行。 例如,這將更新給定客戶的第一個地址,或者如果尚不存在則創建它:
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()
}
我認為您需要將地址視為適當的記錄。 因此,在檢索它之后,設置其值,然后分別提交。 遵循以下原則:
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'
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.