【问题标题】:Apply a vendor payment to an expense report in NetSuite将供应商付款应用于 NetSuite 中的费用报告
【发布时间】:2020-03-16 18:03:09
【问题描述】:

是否可以将供应商付款应用于 SuiteScript 中的费用报告?在 UI 中,您可以点击费用报告上的“付款”,这向我建议您可以使用 record.transform 将费用报告转换为供应商付款,但文档并未将其显示为可用的转换。

所以我尝试简单地创建供应商付款,然后将费用报告添加到“Apply”子列表中,但这只会导致...正在尝试访问不存在的行上的字段,或者您正在尝试从静态子列表中添加或删除行。”错误。

我尝试了各种方法来简单地将费用报告添加到“应用”子列表中,例如:

var rec = record.create({type: 'vendorpayment'});
rec.insertLine({sublistId: 'apply', line: 0});
rec.setCurrentSublistValue({sublistId: 'apply', fieldId: 'amount', value: "200.00"});
// More setting of the line values
rec.commitLine({sublistId: 'apply'});

...但它们似乎都导致静态子列表错误,这似乎表明您不能以这种方式将付款应用于费用报告。我试过在网上搜索,但没有找到答案。是否可以将供应商付款应用于 SuiteScript 中的费用报告?如果是这样,怎么办?

提前致谢

【问题讨论】:

    标签: netsuite suitescript2.0


    【解决方案1】:

    虽然 bknights 代码是转换交易/记录的正确代码,但不能通过脚本将费用报告转换为供应商付款。转换类型未列为支持的转换类型,它只会抛出错误“INVALID_RCRD_TRANSFRM”。

    如果我要为费用报告创建付款,它将类似于下面的代码。在您的示例代码中,您错过了将 isDynamic 设置为 true 并将实体设置为默认值(即员工)。设置 isDynamic 和 defaultValues 将返回一个记录对象,其中包含员工的未付费用报告,您只需迭代应用子列表即可。

        var objRecord = record.create({
            type: 'vendorpayment', 
            isDynamic: true,
            defaultValues: {
                entity: idEmployee
            } 
        });
        //rest of the code goes after this line
    

    【讨论】:

    • 你是个了不起的人,谢谢!实际上,我在项目代码中将 isDynamic 设置为 true,但我没有将实体设置为 defaultValue。所以这就是问题所在。之后,它就像你描述的那样工作。意思是,我只需要遍历应用项。再次感谢。 (我在这个上撞了几个小时。)
    • 我的答案实际上来自工作代码。 'vendorbil' 用作创建费用报销的 fromType。
    • 我尝试在调试器上运行它,它不断抛出 INVALID_RCRD_TRANSFRM。我会参考 SuiteAnswer Id: 45156 来检查所有可能的转换。如果 fromType 是费用报表,则不支持转换。员工可以转换为费用报表。除此之外我什么都看不到。
    • 我也看不到“从供应商账单创建费用报告”的逻辑。供应商账单和费用报告有些相似和不同。它们都用作 AP 交易,但它们用于不同的实体类型。
    【解决方案2】:

    当您在 UI 中创建账单支付时,您​​会看到可用的支付目标已预先创建。

    您不能添加新行,但必须遍历可用的“应用”行并找到与您的费用报告匹配的行。

    顺便说一句,最好像这样创建付款:

    var vp = record.transform({fromType:'vendorbill', fromId:expReportInternalId, toType:'vendorpayment'});
    //then you can loop through the apply lines to find the appropriate doc line:
    for(var i = 0; i< vp.getLineCount({sublistId:'apply'}); i++){
        if(fromId:expReportInternalId == vp.getSublistValue({sublistId:'apply', fieldId:'doc', line:i})){
            vp.setSublistValue({sublistId:'apply', fieldId:'apply', line:i, value:true});
            ...
        }
    }
    

    【讨论】:

    • 感谢您的帮助。在发布问题之前,我实际上尝试自己转换记录,但我并没有尝试将供应商账单转换为供应商付款,而是将费用报告转换为供应商付款。这是 NS 不允许的转换。 vVinceth 实际上为我提供了这个问题。原来我没有将“实体”设置为默认值。一旦我这样做了,“应用”选项卡就会有你描述的费用报告。再次感谢
    • 实际上在 fromType 中使用了“vendorbill”,但费用报告的内部 id 可以为员工报销创建供应商付款。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 2014-11-03
    • 2016-07-23
    • 2015-10-14
    相关资源
    最近更新 更多