我的佣金值脚本的功能非常出色。虽然该脚本在编辑/创建销售订单和报价时可以工作,但我发现了一个独特的场景,我必须应用相同的脚本。
下特殊订单 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
};
});
我在尝试这两个功能时遇到了类似的错误:
此后我无法继续。 getLineCount 在 pageinit 上工作,我还应该使用另一个属性吗?
是否可以使用我正在工作的相同脚本,并添加一条语句,说明 SO 是否处于“查看模式”并且来自创建 PO? 如果我能做到这一点,那么我应该能够让 SO 进入编辑模式,重新运行佣金分配并保存。
salesOrderId
代替
salesOrderRecord
。这就是为什么你会得到 TypeError: salesOrderId.getLineCount is not a function
。请修复它并告诉我它是否适合您。
干杯。