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

image-20240419110043185

有什么用

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

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

怎么用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
`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查询

最小的第二个嵌套

1
2
3
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

第一个嵌套

1
2
3
4
5
6
7
8
9
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

最上级查询

1
2
3
4
5
6
7
8
9
10
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)