NetSuite - 使用nlapiCopyRecord函数

时间:2016-11-02 22:49:13

标签: netsuite suitescript

我在原始发票过期一段时间后生成发票。我想知道我们是否可以使用nlapiCopyRecord制作原始发票的副本,但是允许我们插入一个替换旧订单项的新行?我没有找到任何样本来说明这是如何完成的。

感谢。

编辑1:

            var new_inv = nlapiCopyRecord('invoice', internal_id,
        {
            item : 66,
            amount: amount,
            description: 'TEST'

        });
        var copiedId = nlapiSubmitRecord(new_inv);
        return copiedId;

以上代码在我的预定脚本中失败。 您为此记录初始化操作输入了无效的默认值

我想覆盖新复制的发票上的订单项

2 个答案:

答案 0 :(得分:1)

是的,这是可能的,就像在UI中复制记录一样,您可以修改副本。您还需要记住在复制后需要保存记录对象。

答案 1 :(得分:1)

你为什么要这样做?如果您试图收取滞纳金,那么通过在原始发票记录中添加费用行可能会更好。如果您没有开启费用,那么您可以添加其他"其他费用待售"

如果您的代码在服务器端运行,那么:

var invRec = nlapiLoadRecord('invoice', internal_id);
var chargeIndex = invRec.getLineItemCount('item') + 1;
// don't think you need this for the end position invRec.insertLineItem('item', chargeIndex);
invRec.setLineItemValue('item', 'item', chargeIndex, charge_item_id);
invRec.setLineItemValue('item', 'rate', chargeIndex, amount);
invRec.setLineItemValue('item', 'amount', chargeIndex, amount);
nlapiSubmitRecord(invRec);

如果您使用费用<或者

var invRec = nlapiLoadRecord('invoice', internal_id);
invRec.insertLineItem('expense', 1);
invRec.setLineItemValue('expense', 'account', 1, penalty_account);
invRec.setLineItemValue('expense', 'amount', 1, amount);
invRec.setLineItemValue('expense', 'memo', 1, 'TEST');
nlapiSubmitRecord(invRec);