问题描述
我尝试通过脚本创建现有客户的副本。将其添加为其他子公司的子客户。 (例如,美国客户是从amazon.CA购买的)...反正...
我尝试过:
require('N/record',function (record) {
var customer = {
id: XXXXXX,type: record.Type.CUSTOMER,isDynamic: true /* I tried false too */
}
var new_customer = record.copy(customer);
var new_customer_data = {
subsidiary: XX,parent: XXXXXX,currency: XX
};
for (var key in new_customer_data) {
new_customer.setValue({
fieldId: key,value: new_customer_data[key]
});
}
new_customer.save() /* ! this throws the exception "Please enter value(s) for: Customer ID" */
});
我检查了NS文档。但我什么都没找到 我可以获取必要的字段(.getValue ...&和record.create ...),但是... record.copy更好:)并且地址仍附加到新客户(通过UI创建副本时)。
thx!
update
经过几个小时的研究,我发现该问题与自动生成数字有关。更确切地说,与客户订单号的“允许替代”选项有关。如果将其设置为false:脚本运行正常(我在沙盒中测试过)。但是,如果将其设置为true,则会引发异常。我做了更多测试。当复制客户(通过脚本)时,entityId受原始客户entityId的影响,这会阻止.save()操作。如果我将entityID设置为null,则也不起作用。当我使用任何唯一值设置EntityId时,.save()操作都可以正常工作(但这对我来说不是解决方案。..::))。
也许我应该使用一个记录/上下文字段来自动生成一个 新号码,例如“ clone_rec.generate_new_CUSTOMER_ID = true”!通过用户界面创建客户副本时,Netsuite如何覆盖它。
解决方法
客户的名称是唯一的,并且也会被复制操作抹去。
您需要输入新的公司名称(或个人的名字和姓氏)。像这样:
var new_customer_data = {
subsidiary: XX,parent: XXXXXX,currency: XX,companyname: 'some new company name',autoname:true // this may not make a difference. Depends on how your account is configured.
};