如何使用SuiteQL查询NetSuite中Invoice及对应支付交易记录
解决方案
你当前仅查询TransactionLine表无法获取支付关联信息,是因为客户付款(AbbrevType为CustPymt)是独立的交易记录,和Invoice的关联关系存储在付款的应用映射逻辑中,可通过以下两种SuiteQL方案实现需求:
方案1:使用TransactionPaymentMap映射表关联(推荐)
这是NetSuite官方预置的交易与支付映射视图,无需手动关联多层表,可直接获取Invoice对应的支付ID等核心信息,示例查询语句如下:
SELECT -- 发票基础信息 inv.TranID AS InvoiceNumber, inv.TranDate AS InvoiceDate, inv.Total AS InvoiceTotal, -- 支付关联信息 pymt.TranID AS PaymentID, pymt.TranDate AS PaymentDate, pymt.Total AS PaymentTotal, tpm.AmountApplied AS AmountAppliedToInvoice FROM Transaction inv INNER JOIN TransactionPaymentMap tpm ON tpm.AppliedToTransaction = inv.ID INNER JOIN Transaction pymt ON tpm.Transaction = pymt.ID WHERE inv.AbbrevType = 'INV' AND inv.TranID = '2535' AND pymt.AbbrevType = 'CustPymt'
上述语句会直接返回编号为2535的发票关联的所有付款记录,你可以根据报表需求自行增删查询字段。
方案2:通过交易行关联(适用需要付款行明细的场景)
如果你需要同时获取付款的行级明细信息,可以通过付款交易行的AppliedToTransaction字段关联原Invoice,示例语句如下:
SELECT inv.TranID AS InvoiceNumber, pymt.TranID AS PaymentID, pymtLine.LineAmount AS AppliedAmount, pymtLine.Memo AS PaymentLineMemo FROM Transaction inv INNER JOIN TransactionLine pymtLine ON pymtLine.AppliedToTransaction = inv.ID INNER JOIN Transaction pymt ON pymtLine.Transaction = pymt.ID WHERE inv.AbbrevType = 'INV' AND inv.TranID = '2535' AND pymt.AbbrevType = 'CustPymt'
注意事项
- 执行查询的角色需要具备Invoice、客户付款交易的查看权限,以及对应表的查询权限,否则会返回空结果
- 若发票为部分核销状态,查询结果会返回多条记录,每条对应一笔付款对该发票的核销金额
- 若要生成全量Invoice+支付的报表,直接去掉WHERE条件中的
inv.TranID = '2535'筛选即可
内容的提问来源于stack exchange,提问作者NooB Gamer
相关产品推荐
相关产品推荐

