在NetSuite中以编程方式创建PAYMENT_VENDOR记录?

时间:2017-03-31 23:43:58

标签: netsuite suitescript

所以,这就是我正在做的事情(现在硬编码大多数值,只是想学习NS):

    var vendorBillPayment = record.create({
            type: record.Type.VENDOR_PAYMENT,
            isDynamic: false,
            defaultValues: {
                entity: 45
            }
        })

        vendorBillPayment.setValue({
            fieldId: 'entityname',
            value: "Superior ISP"
        })

        vendorBillPayment.setValue({
            fieldId: 'account',
            value: 129
        })

        vendorBillPayment.setValue({
            fieldId: 'currency',
            value: 1
        })

        vendorBillPayment.setValue({
            fieldId: 'customform',
            value: 45
        })

        vendorBillPayment.setValue({
            fieldId: 'exchangerate',
            value: "1.00"
        })

        var recordId = vendorBillPayment.save({
             enableSourcing: false,
             ignoreMandatoryFields: true
        })

现在,问题从下面的代码段开始,VendorPayment记录有一个子列表'apply',这是付款需要应用的账单清单。

        vendorBillPayment.setSublistValue({
            sublistId: 'apply',
            fieldId: 'internalid',
            line: 1,
            value: "303"
        });

返回的错误是:

    error message:{"type":"error.SuiteScriptError","name":"UNEXPECTED_ERROR","message":null,"stack":["anonymous(N/recordService)","<anonymous>(/SuiteScripts/..)"],"cause":{"type":"internal error","code":"UNEXPECTED_ERROR","details":null,"userEvent":null,"stackTrace":["anonymous(N/recordService)","<anonymous>(/SuiteScripts/..)"],"notifyOff":false},"id":"","notifyOff":false}

也就是说,消息不是很有用。我一直在查看他们的文档,但没有获胜。

编辑:结果是apply子列表是类型列表。这意味着,不能以编程方式添加/删除该子列表中的行。只是编辑现有的线条。

除了创建VENDOR_PAYMENT记录之外,还有其他方式以编程方式支付供应商账单吗?

3 个答案:

答案 0 :(得分:0)

根据您提供的代码很难确定,但我发现了两个潜在的问题。首先,根据NetSuite的文档,Apply子列表IS列为可编写脚本的。您可以在此处查看供应商付款下的记录浏览器中列出的子列表:https://system.na1.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2016_1/script/record/itemfulfillment.html 你还可以看到&#39; apply&#39;子列表在此处的可编写脚本列表中专门调出:https://system.na2.netsuite.com/app/help/helpcenter.nl?fid=chapter_N3206326.html

现在讨论代码问题。我之前所说的并不完全清楚,但根据您上面提供的内容,您似乎正在尝试添加/编辑“应用”。保存后的记录子列表。您需要在保存之前添加子列表值,或者在设置子列表值之前重新加载记录。我可以看到的第二个问题是你试图设置&#39; internalid&#39;你不能做的子列表记录。我可能错了,但我不知道NetSuite中的任何记录,自定义或其他允许设置&#39; internalid&#39;的记录。我可以用你想要编写的更大的脚本样本提供更明确的方向,但是到目前为止,这一切都可以从你的例子中闪耀出来。

答案 1 :(得分:0)

如果您都在同一脚本中执行所有操作,则必须在申请前重新加载供应商付款:

var recordId = vendorBillPayment.save({
    enableSourcing: false,
    ignoreMandatoryFields: true
});
vendorBillPayment = record.load({
    type:record.Type.VENDOR_PAYMENT,
    id:recordId
});

还请注意,如果您收到的是针对特定账单的付款,则可以一步完成此操作:

var vendorBillPayment = record.transform({
    fromType: 'vendorbill',
    fromId: 303,
    toType:'vendorpayment'
});
// adjust the apply lines as necessary

答案 2 :(得分:0)

在创建供应商付款时,子列表“应用”取决于所选供应商/供应商(实体)的未清供应商帐单,因此必须首先设置供应商/供应商(实体),这是强制性的你在做什么)。话虽如此,您不能添加/支付在卖方付款上没有“未清”状态的卖方帐单。如果您在“应用”子列表中未看到供应商账单,则表示该供应商账单尚未获得批准或金额为零。您要确保要支付的供应商账单已经批准或状态为“未清”。