创建客户存款记录时的 Netsuite 错误

Netsuite bug when creating customerdeposit record

我正在尝试使用 suitescript 1.0 在 Netsuite 中创建客户存款记录。

我使用的原始代码一直运行良好,直到 2016.2 版本出现问题。

更新破坏了它,因为它会覆盖在付款字段中提交的值,并立即使其成为来自销售订单 ID 的销售订单的全部金额。这不是我们需要它做的。

原代码

function createDeposit(request,response)
{
    var record = nlapiCreateRecord('customerdeposit');  
        record.setFieldValue('salesorder','1260');
        record.setFieldValue('customer','1170');
        record.setFieldValue('payment','100');
        record.setFieldValue('account','2');
        record.setFieldValue('memo','this is a test');
        deposit = nlapiSubmitRecord(record,true,false);
        response.write(deposit);
}

在 Netsuite 用户组的回复提示我使用 {recordmode:'dynamic'} 属性后,我收到了一个奇怪的错误..

测试替换函数不起作用

function createDeposit(request,response)
{
    var record = nlapiCreateRecord('customerdeposit',{recordmode:'dynamic'});   
        record.setFieldValue('salesorder','1260');
        record.setFieldValue('customer','1170');
        record.setFieldValue('payment','100');
        record.setFieldValue('account','2');
        record.setFieldValue('memo','this is a test');
        deposit = nlapiSubmitRecord(record,true,false);
        response.write(deposit);
}

我现在收到的错误信息是

客户 的销售订单参考码 1260 无效。

我不明白的是,当我应用 {recordmode:'dynamic'} 值后将值硬编码到此测试脚本中时,它现在如何被视为 NULL。

我尝试过各种各样的东西,但由于我没有 Netsuite 支持,事实证明我根本想不通。

任何提示和建议将不胜感激,因为我已经研究了好几天

当您使用动态时,您设置字段的顺序会有所不同。因此,当您在设置客户之前设置销售订单时,您实际上会收到错误消息 "Invalid salesorder reference key 1260 for customer blank"

我所做的是像这样创建客户存款:

var depRec = nlapiCreateRecord('customerdeposit', {entity:soRec.getFieldValue('entity'), salesorder:soId});

似乎还需要设置未存入资金标志(但并非总是出于某种原因),因此既然您提供了帐户 ID,也可以这样做:

depRec.setFieldValue('undepfunds',  'F');