【问题标题】:Convert afterSubmit script to Worfkflow Action Script?将 afterSubmit 脚本转换为 Worfkflow 动作脚本?
【发布时间】: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


    【解决方案1】:

    在 Slack 上向@battk 大喊大叫。他们引导我完成了将其转换为客户端脚本并使用字段更改函数运行它的整个过程。

    这是更新后的代码:(我仍然需要编辑 if 语句来检查 location == 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();
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 2016-09-09
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2019-06-23
      相关资源
      最近更新 更多