域名已变更 请手动修改文章中域名指向carlzeng.com

用一个查询从销售订单直通供应商账单-NetSuite

image-20240419110043185

有什么用

用一个查询从销售订单直通供应商账单 NetSuite: 从SO销售订单,到PO采购订单,到Bill供应商账单

下面文章的分享仅作为演示在SuiteQL Query Too中的展示,现实情况下的应用可以非常灵活(由于范围广泛无法此文章中展开)

怎么用

`SELECT Transaction.ID,
        Transaction.TranDate,
        BUILTIN.DF(Transaction.Type)  AS Type,
        Transaction.TranID,
        REPLACE(BUILTIN.DF(Transaction.Status), BUILTIN.DF(Transaction.Type) || ' : ', '') AS Status,
        Transaction.ForeignTotal
 FROM Transaction
 WHERE Transaction.ID IN (
		 -- 这是第一个嵌套
     SELECT DISTINCT TransactionLine.Transaction
     FROM TransactionLine
     WHERE (TransactionLine.CreatedFrom in (
         -- 这是第二个嵌套
         SELECT DISTINCT TransactionLine.Transaction
         FROM TransactionLine
         WHERE (TransactionLine.CreatedFrom = 50878826)
     )
     )
 )`

背景

SO销售订单,自动生成多个PO采购订单;这些设置是定义了销售货品属于Speical Order或者Drop Ship。

当SO销售订单审批通过以后,这些PO采购订单就会自动生成,然后走采购流程,收货,预付款或最后供应商发账单Bill。另外一边继续走销售订单的系统及现实流程

那么如何通过最起初原始的一张SO销售订单,查询到一共关联到了具体哪些供应商的账单呢?

用上面那一个查询即可得出:

image-20240419111639828

而它对应了系统中的多个流程和交易订单。

分析该query查询

最小的第二个嵌套

SELECT DISTINCT TransactionLine.Transaction
FROM TransactionLine
WHERE (TransactionLine.CreatedFrom = 50878826)

查询哪些PO采购订单是创建于特定的SO销售订单(50878826),这借助了NetSuite中采购订单的ID是链接存储与SO销售订单的Item列表中(可通过‘Create PO’来查询)。

查询系统交易的交易行表(TransactionLine),通过TransactionLine.CreatedFrom指定SO销售订单,然后向上一级查询当前交易行的系统交易/订单ID。

这个查询得到了3个PO号码:

image-20240419112503073

第一个嵌套

 SELECT DISTINCT TransactionLine.Transaction
     FROM TransactionLine
     WHERE (TransactionLine.CreatedFrom in (
         -- 这是第二个嵌套
         SELECT DISTINCT TransactionLine.Transaction
         FROM TransactionLine
         WHERE (TransactionLine.CreatedFrom = 50878826)
     )
     )

这个查询其实已经查到供应商的账单了,

原理是通过已知的PO采购订单,来查询哪些交易是创建自这些PO采购订单的,而Bill供应商账单就是创建自PO采购订单的,而且他们二者通过CreatedFrom来链接。

image-20240419112939609

最上级查询

SELECT Transaction.ID,
        Transaction.TranDate,
        BUILTIN.DF(Transaction.Type)  AS Type,
        Transaction.TranID,
        REPLACE(BUILTIN.DF(Transaction.Status), BUILTIN.DF(Transaction.Type) || ' : ', '') AS Status,
        Transaction.ForeignTotal
 FROM Transaction
 WHERE Transaction.ID IN (
 --  ...
 )

该最上级查询是用于输出用户友好的结果,比如一个NS系统内部的链接(当然也可以挂一个SuiteLet链接下一步交易事务处理)

这是一个非常灵活的应用query的例子,可以无限延展出很多实例和应用,如果你有什么想法,欢迎留言或meeting

相关内容

灵感来源

NetSuite: SuiteQL and Related Transactions (Revisited)

posted @ 2024-05-10 16:03  CarlZeng  阅读(15)  评论(0编辑  收藏  举报
域名已变更 请手动修改文章中域名指向carlzeng.com