用一个查询从销售订单直通供应商账单-NetSuite
有什么用
用一个查询从销售订单直通供应商账单 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销售订单,查询到一共关联到了具体哪些供应商的账单呢?
用上面那一个查询即可得出:
而它对应了系统中的多个流程和交易订单。
分析该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号码:
第一个嵌套
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来链接。
最上级查询
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