我需要在SuiteScript 2.0的“用户事件后提交”功能中从销售订单创建客户保证金,我需要在“客户保证金salesorder
”字段中链接销售订单。我收到以下错误:
"type":"error.SuiteScriptError","name":"INVALID_FLD_VALUE","message":"You have entered an Invalid Field Value 123456 for the following field: salesorder",
还请注意,当我创建客户存款而未设置该字段时,我的SO没有出现在GUI的该字段中。我正在自动执行创建销售订单并从“保存”按钮旁边的下拉菜单中选择“保存并创建存款”的手动过程。
有什么想法吗?
function afterSubmit(context) {
// Only run on creation of Sales Orders
if (context.type !== context.UserEventType.CREATE) return;
var newSO = context.newRecord;
var sales_order = newSO.id
var newDeposit = record.create({
type: record.Type.CUSTOMER_DEPOSIT,
isDynamic: true,
defaultValues: {
entity: customer
}
})
if (sales_order) {
newDeposit.setValue({
fieldId: 'salesorder',
value: sales_order
})
}
}
答案 0 :(得分:0)
尝试通过UI模拟脚本的功能。创建客户存款时可以选择销售订单吗?如果您无法在用户界面中选择销售订单,则大多数情况下您将无法通过脚本进行操作。
答案 1 :(得分:0)
在SS1.0中,方法如下。 soId
是销售订单的内部ID:
var depRec = nlapiCreateRecord('customerdeposit', { entity: soRec.getFieldValue('entity'), salesorder: soId });
由于提交事件后您处于销售订单中,因此您只能键入=='create',因此必须具有newSO,因此以下各项应能起作用:
function afterSubmit(context) {
// Only run on creation of Sales Orders
if (context.type !== context.UserEventType.CREATE) return;
var newSO = context.newRecord;
var newDeposit = record.create({
type: record.Type.CUSTOMER_DEPOSIT,
isDynamic: true,
defaultValues: {
entity: newSO.getValue({fieldId:'entity'}),
salesorder: newSO.id
}
});
}