从销售订单套件2.0创建客户定金

时间:2018-11-03 18:56:13

标签: netsuite suitescript2.0

我需要在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
        })
    }
}

2 个答案:

答案 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
        }
    });

}