0

当我尝试将新创建的销售订单转换为发票时出现错误。

这是我的代码:

  define(["N/log", "N/email", "N/record"], function(log, email, record) {

    function afterSubmit(scriptContext) {

        var newOrderId = scriptContext.newRecord.id;

        var objRecord = record.transform({
            fromType: record.Type.SALES_ORDER,
            fromId: newOrderId,
            toType: record.Type.INVOICE,
            isDynamic: true
        });

以下是错误详情:

Account: 3671783
Environment: SandBox
Date & Time: 6/28/2017 2:09 am
Record Type: Sales Order
Internal ID: 668978
Execution Time: 0.00s
Script Usage: 0
Script: test send invoice
Type: User Event
Function: afterSubmit
Error: JS_EXCEPTION
{"type":"error.SuiteScriptError","name":"INVALID_INITIALIZE_REF","message":"You can not initialize invoice: invalid reference 668978.","stack":["createError(N/error.js)","afterSubmit(/SuiteScripts/sendinvoice1.js:23)"],"cause":{"type":"internal error","code":"INVALID_INITIALIZE_REF","details":"You can not initialize invoice: invalid reference 668978.","userEvent":"aftersubmit","stackTrace":["createError(N/error.js)","afterSubmit(/SuiteScripts/sendinvoice1.js:23)"],"notifyOff":false},"id":"","notifyOff":false}

我不知道我做错了什么。

4

1 回答 1

6

当您尝试对其进行转换时,销售订单处于什么状态?在为 SO 开具发票之前,必须在特定条件下满足一些条件:

  • 如果您已批准销售订单,则必须先批准您的 SO,然后才能为其开票。
  • 如果 SO 上的任何项目是可履行的,则必须先履行订单(即具有关联的项目履行),然后才能为其开具发票
    • 除非您启用了提前发货设置的发票(设置 > 会计 > 会计首选项 > 订单管理 > 开票),否则您可以放弃项目履行
于 2017-06-27T17:17:45.293 回答