SuiteScript 2.X 如何在下达特殊订单 PO 后编辑销售订单

问题描述 投票:0回答:1

我的佣金值脚本的功能非常出色。虽然该脚本在编辑/创建销售订单和报价时可以工作,但我发现了一个独特的场景,我必须应用相同的脚本。

下特殊订单 PO 时,我们可以编辑成本估算(标识为金额/费率)。提交采购订单后,它会将我们带回到销售订单。下达特殊订单 PO 后,如果您碰巧编辑成本估算,它将反映到销售订单上并影响利润率。

这就是我想要实现的目标:

  • 特别订单下达后:
  • 加载销售订单(创建自)
  • 集成佣金分配脚本
  • 保存销售订单
  • 用户登陆销售订单页面,并显示新分配的佣金值

遇到这种情况我该怎么办?编写一个 afterSubmit 函数来加载销售订单,重新分配佣金值,然后保存销售订单会更好吗?

或者在 SO 上执行 beforeLoad 函数会更理想吗?我使用相同的脚本来提取值。

/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
**/
define(['N/record'], (record)=>{
    const UpdateSO = (context)=>{
          if (context.type === context.UserEventType.DELETE) {
          return true;
          }
            var newPO = context.newRecord, 
                salesOrderId = newPO.getValue({ fieldId: 'createdfrom' }),
                salesOrderRecord = record.load({ type: record.Type.SALES_ORDER,  id: salesOrderId }),
                lineItemCount = salesOrderId.getLineCount("item");
        console.log('salesOrderId ='+salesOrderId,'salesOrderRecord = '+salesOrderRecord,'lineItemCount = '+lineItemCount);
        for (let i = 1; i <= lineItemCount; i++) {
            const lineItemNumber = salesOrderRecord.getLineItemValue("item", "item", i);
            console.log(`Line Item ${i}: ${lineItemNumber}`);
        }
    }
    return {
        afterSubmit: UpdateSO
    };
});

我在尝试这两个功能时遇到了类似的错误:

  • beforeLoad:TypeError:无法读取未定义的属性“getLineCount”
  • 提交后:类型错误:salesOrderId.getLineCount 不是函数

此后我无法继续。 getLineCount 在 pageinit 上工作,我还应该使用另一个属性吗?

是否可以使用我正在工作的相同脚本,并添加一条语句,说明 SO 是否处于“查看模式”并且来自创建 PO? 如果我能做到这一点,那么我应该能够让 SO 进入编辑模式,重新运行佣金分配并保存。

netsuite suitescript suitescript2.0
1个回答
0
投票
salesOrderId

代替

salesOrderRecord
。这就是为什么你会得到
TypeError: salesOrderId.getLineCount is not a function
请修复它并告诉我它是否适合您。

干杯。

© www.soinside.com 2019 - 2024. All rights reserved.