我们的销售订单上有一个自定义脚本,该脚本可在用户提交订单时将送货地址设置为与标题中的“位置”字段相匹配。我们不使用现金销售(长话)或POS。这些是Netsuite Basic的标准销售订单。我们的柜台销售数量可观,我们的员工需要能够快速为现金客户输入订单,而不必每次都添加送货地址。他们从“送货方式”下拉菜单中选择“客户领取”,单击“保存”,脚本将看到已选择该选项并更新地址。这一直很好。我们刚刚安装了Avatax,但它不喜欢此设置。在我们单击订单上的保存之前,它需要在订单上选择的收货地址。我希望我可以使用可以在字段更改/采购时触发并运行该脚本的工作流,而不是等待保存。但是我不知道该怎么做。我也可以使用按钮或其他机制-在保存订单之前,我只需要一种快速设置送货地址以匹配位置地址的方法。我开始研究将此脚本转换为工作流操作脚本,以便可以从工作流中调用它,但是我迷路了。
var salesOrderUE = {
afterSubmit :function (type) {
if (type == 'create' || type == 'edit') {
var salesOrder = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId(), { recordmode: 'dynamic'});
var customerPickUp = salesOrder.getFieldValue('shipmethod')
if (customerPickUp == '16853') {
var location = salesOrder.getFieldValue('location');
var locationRec = nlapiLoadRecord('location', location);
salesOrder.setFieldValue('shipaddresslist', -2);
var subrecord = salesOrder.createSubrecord('shippingaddress');
subrecord.setFieldValue('country', locationRec.getFieldValue('country'));
subrecord.setFieldValue('isresidential', 'F');
subrecord.setFieldValue('attention', locationRec.getFieldValue('attention'));
subrecord.setFieldValue('addressee', locationRec.getFieldValue('addressee'));
subrecord.setFieldValue('addr1', locationRec.getFieldValue('addr1'));
subrecord.setFieldValue('addr2', locationRec.getFieldValue('addr2'));
subrecord.setFieldValue('city', locationRec.getFieldValue('city'));
subrecord.setFieldValue('state', locationRec.getFieldValue('state'));
subrecord.setFieldValue('zip', locationRec.getFieldValue('zip'));
subrecord.commit();
salesOrder.setFieldValue('shipaddress', locationRec.getFieldValue('addr1') +
'\n' + locationRec.getFieldValue('city') + ' ' + locationRec.getFieldValue('state') + ' ' + locationRec.getFieldValue('zip') + '\n'+
locationRec.getFieldValue('country'));
nlapiSubmitRecord(salesOrder, true, true);
}
}
}
}
答案 0 :(得分:0)
Slack上@battk的大声喊叫。他们引导我完成了将其转换为Client脚本,并使用Field Changed Function运行它的整个过程。
这是更新的代码:(我仍然需要编辑if语句以检查位置== null)
function setCPUshipto(type, name, linenum) {
if (name !== "shipmethod" || nlapiGetFieldValue("shipmethod") !== "16853")
{
return;
}
var locationId = nlapiGetFieldValue("location");
var locationRec = nlapiLoadRecord("location", locationId);
var subrecord = nlapiCreateSubrecord("shippingaddress") || nlapiEditSubrecord("shippingaddress")
subrecord.setFieldValue("country", locationRec.getFieldValue("country"));
subrecord.setFieldValue("isresidential", "F");
subrecord.setFieldValue("attention", locationRec.getFieldValue("attention"));
subrecord.setFieldValue("addressee", locationRec.getFieldValue("addressee"));
subrecord.setFieldValue("addr1", locationRec.getFieldValue("addr1"));
subrecord.setFieldValue("addr2", locationRec.getFieldValue("addr2"));
subrecord.setFieldValue("city", locationRec.getFieldValue("city"));
subrecord.setFieldValue("state", locationRec.getFieldValue("state"));
subrecord.setFieldValue("zip", locationRec.getFieldValue("zip"));
subrecord.commit();
}