【发布时间】:2019-06-01 17:18:48
【问题描述】:
我们的销售订单上有一个自定义脚本,当用户提交订单时,它会设置送货地址以匹配标题中的位置字段。我们没有使用现金销售(长话短说)或 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);
}
}
}
}
【问题讨论】:
标签: netsuite suitescript