使用 Suitescript 从客户记录采购后如何在发票上设置字段

How to set a field on an invoice after sourcing from a customer record using Suitescript

我有以下场景:

发票记录上有一个名为 'contract description' (id:'custbody_contract_description_invoice')

的自定义字段

此值应等于项目记录'contract description' 字段的值

每次最终用户在发票上选择一个项目(在抬头级别),这应该设置合同描述字段的值。

以下脚本实现了这一点:


        /**
     *@NApiVersion 2.x
     *@NScriptType ClientScript
     */
    define(["N/search"], function (search) {
      // function fieldChanged(context) {
    
      // }
    
      function postSourcing(context) {
        var customerRecord = context.currentRecord;
    
        if (context.fieldId == "job") {
          var projectId = customerRecord.getValue({ fieldId: "job" });
          log.debug("projectid", projectId);
          var jobSearchObj = search.create({
            type: "job",
            filters: [["internalidnumber", "equalto", projectId]],
            columns: [
              search.createColumn({
                name: "custentity_contract_desc_project",
                label: "Contract Description",
              }),
              search.createColumn({
                name: "entityid",
                join: "customer",
                label: "Name",
              }),
            ],
          });
    
          var firstResult = jobSearchObj.run().getRange({
            start: 0,
            end: 1,
          })[0];
    
          log.debug("firstresult", firstResult);
          var contractDescription = firstResult.getValue(firstResult.columns[0]);
          log.debug("contract description", contractDescription);
    
          var invoiceContract = customerRecord.setValue({
            fieldId: "custbody_contract_desc_invoice",
            value: contractDescription,
          });
          log.debug("customer contract", invoiceContract);
        }
      }
    
      return {
        postSourcing: postSourcing,
      };
    });

但是,当客户字段更改时,这会导致记录加载时间出现问题。

有没有更好的方法达到同样的效果? (例如不同的脚本类型)

设置的记录是(在这个例子中): 客户:ABC 营销 子客户:ABC Marketing 子客户 项目(是子客户的项目,不是父客户的项目):ABC Marketing Subcustomer 主要客户 子客户:

项目

如果在用户编辑记录期间不需要引用字段的内容,您可以在用户中的 beforeSubmitafterSubmit 上设置值事件脚本。这将在服务器端 运行,因此比客户端脚本 运行ning 更快。

无需编写脚本。只需为您的自定义字段设置来源。