检索NetSuite SuiteScript 2.0中应用付款的相关发票

时间:2018-10-11 12:45:56

标签: netsuite suitescript suitescript2.0

我有一个要求;我需要加载在指定日期/时间范围之间更新的付款清单。对于每张发票;我需要获取已应用付款的internal ID(又称发票ID)的列表(因为付款可以应用到一张或多张发票)。

我试图通过这样的搜索查询来实现这一点:

var paymentSearch = search.create({           
    type: search.Type.CUSTOMER_PAYMENT,
    filters: [
        ['lastmodifieddate', 'within', from_datetime, to_datetime],
         'and',
        ['appliedToTransaction.tranid', search.Operator.ISNOTEMPTY, '@NONE']
    ],
    columns: [
            'entity',
            'tranid',
        search.createColumn({
            name: 'internalid',
            join: 'appliedToTransaction'
        })
    ]
});

for (var i = 0; i < paymentsPagedData.pageRanges.length; i++) {
    var currentPage = paymentsPagedData.fetch(i);
    currentPage.data.forEach(function(result) {

        // TEST
        var appliedToInvoiceIds = result.getValue({ name: 'internalid', join: 'appliedToTransaction' });

    }
}

当我检查appliedToInvoiceIds时,它似乎只返回一个值,这是已应用此付款的第一张发票。如何获取付款已应用的所有发票ID?

我尝试检查result对象(在forEach循环内)以查看内部内容,这就是我看到的内容:

{
    "recordType": "customerpayment",
    "id": "25911",
    "values": {
        "entity": [
            {
                "value": "761",
                "text": "COMPANY NAME INC"
            }
        ],
        "tranid": "722",
        "appliedToTransaction.internalid": [
            {
                "value": "2676",
                "text": "2676"
            },
            {
                "value": "2658",
                "text": "2658"
            }
        ]
    }
}

您可以在付款的结果对象上看到;它有appliedToTransaction.internalid,它是一个数组,其中有两个项目。我该如何找回这些?

是否有result.getValue(...)的替代版本可用于通过联接检索项目/字段值的数组?

1 个答案:

答案 0 :(得分:2)

您需要在forEach末尾返回true。否则,它只会返回一个结果。