将afterSubmit脚本转换为Worfkflow操作脚本?

时间:2019-06-01 17:18:49

标签: netsuite suitescript

我们的销售订单上有一个自定义脚本,该脚本可在用户提交订单时将送货地址设置为与标题中的“位置”字段相匹配。我们不使用现金销售(长话)或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);
            }
        }
    }
}

1 个答案:

答案 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();

}