通过Suitescript在NetSuite中创建销售订单时,我们可以通过向其发送包含完整地址的字符串来成功设置"收货方"(字段ID:shipaddress)。
这会导致一个问题,因为"SHIP TO SELECT"下拉字段保留了在客户上设置的默认地址。
理想情况下,我们宁愿从客户记录中发送有效的ID,并使用该ID设置下拉列表"SHIP TO SELECT"(字段ID:shipaddresslist)字段。
我们可以获得有效的ID,但找不到在字段上设置该ID以填充下拉列表的方法。
通常,如果在提交前用户事件脚本的上下文之外执行此操作,则还需要确保使用源代码进行保存。
var soRec = nlapiLoadRecord('salesorder' soId);
soRec.setFieldValue('shipaddresslist', addressId);
nlapiSubmitRecord(soRec, true);
// alternatively nlapiSubmitRecord(soRec, {enablesourcing:true [, disabletriggers:true|false, ignoremandatoryfields:true|false]});
如果你仍然看到旧的地址文本,你可以添加:
soRec.setFieldValue('shipaddress', null);
提交之前。
如果你想做的是设置一个自定义地址,那么类似,但你需要设置覆盖:
var soRec = nlapiLoadRecord('salesorder' soId);
soRec.setFieldValue('shipaddresslist', null);
soRec.setFieldValue('shipoverride', 'T');
soRec.setFieldValue('shipaddress', formattedAddressString);
nlapiSubmitRecord(soRec);
但请注意,这样做会使任何依赖地址字段的搜索或自动化丢失或围绕此记录产生不正确的结果。
如果你想要一个自定义地址,你通常会过得更好:
var soRec = nlapiLoadRecord('salesorder' soId);
soRec.setFieldValue('shipaddresslist', null);
soRec.setFieldValue('shipaddr1', '123 Elm St.');
soRec.setFieldValue('shipcity', 'Portland');
...
nlapiSubmitRecord(soRec);