You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Netsuite Suitelet Query查询发票对应的关联付款交易

解决方案

完全可以通过NetSuite Suitelet中调用N/query模块实现发票关联付款交易的查询,以下是具体实现逻辑和示例:

关联逻辑说明

NetSuite中发票与付款的关联关系存储在交易应用链路中,在N/query中可通过transaction表的applyingtransaction连接获取所有应用到当前发票的交易,筛选交易类型为客户付款即可得到你要的Payments关联列表数据。
要匹配「Custom Realized Exchange gain/Loss」报告的数据,额外筛选关联付款交易中对应汇兑损益科目、多币别差异相关的行记录即可。

示例查询代码

以下是SuiteScript 2.x的可用示例,可直接在Suitelet中调用:

define(['N/query'], function(query) {
  function getInvoicePayments() {
    const invoicePaymentQuery = query.create({
      type: query.Type.INVOICE
    });
    // 连接应用到发票的交易(即付款、贷项等关联交易)
    const applyingTranJoin = invoicePaymentQuery.autoJoin({
      fieldId: 'applyingtransaction'
    });
    // 连接付款的交易行,用于提取汇兑损益数据
    const paymentLineJoin = applyingTranJoin.autoJoin({
      fieldId: 'transactionline'
    });
    // 过滤条件:仅已结清的发票
    invoicePaymentQuery.createCondition({
      fieldId: 'status',
      operator: query.Operator.ANY_OF,
      values: ['Paid In Full']
    });
    // 过滤条件:仅关联客户付款交易,排除贷项、退款等
    applyingTranJoin.createCondition({
      fieldId: 'type',
      operator: query.Operator.ANY_OF,
      values: ['CustPymt']
    });
    // 按需补充汇兑损益相关过滤条件,比如对应科目、金额差异等
    // paymentLineJoin.createCondition({
    //   fieldId: 'account',
    //   operator: query.Operator.ANY_OF,
    //   values: [/* 你系统中汇兑损益科目的内部ID */]
    // });
    // 定义返回字段,按需调整
    invoicePaymentQuery.columns = [
      invoicePaymentQuery.createColumn({fieldId: 'tranid', alias: 'invoice_num'}),
      invoicePaymentQuery.createColumn({fieldId: 'total', alias: 'invoice_total'}),
      applyingTranJoin.createColumn({fieldId: 'tranid', alias: 'payment_num'}),
      applyingTranJoin.createColumn({fieldId: 'trandate', alias: 'payment_date'}),
      paymentLineJoin.createColumn({fieldId: 'amount', alias: 'payment_line_amount'}),
      paymentLineJoin.createColumn({fieldId: 'fxamount', alias: 'payment_line_fx_amount'})
    ];
    // 执行查询返回结果
    return invoicePaymentQuery.run().asMappedResults();
  }
  // 后续在Suitelet逻辑中调用getInvoicePayments()即可拿到对应数据
  return {getInvoicePayments: getInvoicePayments}
});

注意事项

  • 若你需要的汇兑损益数据是单独的损益记录,可额外添加type为Revalue的交易类型过滤
  • 字段别名和过滤条件可根据你系统的实际自定义字段、科目配置调整
  • 数据量大时建议用runPaged()方法做分页查询避免性能问题

内容的提问来源于stack exchange,提问作者NooB Gamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:54:04