更新销售合同/提成/业绩、精工工序工价/生产审核/工时统计、仓储盘点/库存/补货/入库/库房管理,新增提成设置/销售业绩/库房管理/入库单移动端等模块及SQL脚本
This commit is contained in:
186
sql/库存查询_2026年前未完成订单需求明细.sql
Normal file
186
sql/库存查询_2026年前未完成订单需求明细.sql
Normal file
@@ -0,0 +1,186 @@
|
||||
-- 库存查询2026年前未完成订单需求明细,按组件完成状态排除已完成组件并汇总导出;修改人:Ld 修改时间:2026-07-24 11:30:00;
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 组件订单 AS
|
||||
(
|
||||
SELECT
|
||||
c.组件流水号,
|
||||
o.订单编号,
|
||||
o.下单日期,
|
||||
o.下单人,
|
||||
ISNULL(kh.客户名称, '') AS 客户名称,
|
||||
ISNULL(psn.姓名, CONVERT(nvarchar(50), o.下单人)) AS 下单人姓名,
|
||||
c.是否分配,
|
||||
c.产品状态,
|
||||
c.数量 AS 组件数量,
|
||||
c.完成数量 AS 组件完成数量,
|
||||
o.订单类型,
|
||||
o.是否提交,
|
||||
p.是否启用
|
||||
FROM dbo.PDM_组件名称 c
|
||||
INNER JOIN dbo.PDM_机床名称 m ON c.机床流水号 = m.机床流水号
|
||||
INNER JOIN dbo.PDM_项目名称 p ON m.项目流水号 = p.项目流水号
|
||||
INNER JOIN dbo.合同管理_订单信息_基础表 o ON p.项目流水号 = o.项目流水号
|
||||
LEFT JOIN dbo.客户关系管理系统_客户名称 kh ON p.客户流水号 = kh.客户流水号
|
||||
LEFT JOIN dbo.人事档案管理_人员名单 psn ON o.下单人 = psn.人员编号
|
||||
),
|
||||
需求明细 AS
|
||||
(
|
||||
SELECT
|
||||
co.订单编号,
|
||||
co.下单日期,
|
||||
co.客户名称,
|
||||
co.下单人姓名,
|
||||
b.组件流水号,
|
||||
b.物料流水号,
|
||||
ISNULL(mat.名称, b.名称) AS 零件名称,
|
||||
ISNULL(mat.代号, b.代号) AS 图号,
|
||||
SUM(ISNULL(b.零件数量, 0)) AS 需求量
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
INNER JOIN 组件订单 co ON b.组件流水号 = co.组件流水号
|
||||
LEFT JOIN dbo.库存管理_物料主文件_基本 mat ON b.物料流水号 = mat.物料流水号
|
||||
WHERE co.是否分配 = 1
|
||||
AND co.订单类型 <> 3
|
||||
AND co.下单日期 < '2026-01-01'
|
||||
AND NOT (ISNULL(co.是否提交, 0) = 6 AND ISNULL(co.是否启用, 0) = 1)
|
||||
AND NOT (ISNULL(co.产品状态, 0) = 4 OR (ISNULL(co.组件数量, 0) > 0 AND ISNULL(co.组件完成数量, 0) >= ISNULL(co.组件数量, 0)))
|
||||
GROUP BY co.订单编号, co.下单日期, co.客户名称, co.下单人姓名, b.组件流水号, b.物料流水号, ISNULL(mat.名称, b.名称), ISNULL(mat.代号, b.代号)
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
co.订单编号,
|
||||
co.下单日期,
|
||||
co.客户名称,
|
||||
co.下单人姓名,
|
||||
s.组件流水号,
|
||||
s.物料流水号,
|
||||
mat.名称 AS 零件名称,
|
||||
mat.代号 AS 图号,
|
||||
SUM(ISNULL(s.零件数量, 0)) AS 需求量
|
||||
FROM dbo.PDM_零件明细表_标准件和外购件 s
|
||||
INNER JOIN 组件订单 co ON s.组件流水号 = co.组件流水号
|
||||
LEFT JOIN dbo.库存管理_物料主文件_基本 mat ON s.物料流水号 = mat.物料流水号
|
||||
WHERE co.是否分配 = 1
|
||||
AND co.订单类型 <> 3
|
||||
AND co.下单日期 < '2026-01-01'
|
||||
AND NOT (ISNULL(co.是否提交, 0) = 6 AND ISNULL(co.是否启用, 0) = 1)
|
||||
AND NOT (ISNULL(co.产品状态, 0) = 4 OR (ISNULL(co.组件数量, 0) > 0 AND ISNULL(co.组件完成数量, 0) >= ISNULL(co.组件数量, 0)))
|
||||
GROUP BY co.订单编号, co.下单日期, co.客户名称, co.下单人姓名, s.组件流水号, s.物料流水号, mat.名称, mat.代号
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
co.订单编号,
|
||||
co.下单日期,
|
||||
co.客户名称,
|
||||
co.下单人姓名,
|
||||
t.组件流水号,
|
||||
t.物料流水号,
|
||||
mat.名称 AS 零件名称,
|
||||
mat.代号 AS 图号,
|
||||
SUM(ISNULL(t.实领数, 0)) AS 需求量
|
||||
FROM dbo.车间装配管理_装配执行_临时领料明细 t
|
||||
LEFT JOIN 组件订单 co ON t.组件流水号 = co.组件流水号
|
||||
LEFT JOIN dbo.库存管理_物料主文件_基本 mat ON t.物料流水号 = mat.物料流水号
|
||||
WHERE t.物料流水号 IS NOT NULL
|
||||
AND co.下单日期 < '2026-01-01'
|
||||
AND NOT (ISNULL(co.是否提交, 0) = 6 AND ISNULL(co.是否启用, 0) = 1)
|
||||
AND NOT (ISNULL(co.产品状态, 0) = 4 OR (ISNULL(co.组件数量, 0) > 0 AND ISNULL(co.组件完成数量, 0) >= ISNULL(co.组件数量, 0)))
|
||||
GROUP BY co.订单编号, co.下单日期, co.客户名称, co.下单人姓名, t.组件流水号, t.物料流水号, mat.名称, mat.代号
|
||||
),
|
||||
已领明细 AS
|
||||
(
|
||||
SELECT co.订单编号, b.组件流水号, b.物料流水号, SUM(ISNULL(l.已领数量, 0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
INNER JOIN dbo.PDM_零件明细表_基本件 b ON l.基本件流水号 = b.基本件流水号
|
||||
INNER JOIN 组件订单 co ON b.组件流水号 = co.组件流水号
|
||||
WHERE co.下单日期 < '2026-01-01'
|
||||
AND NOT (ISNULL(co.是否提交, 0) = 6 AND ISNULL(co.是否启用, 0) = 1)
|
||||
GROUP BY co.订单编号, b.组件流水号, b.物料流水号
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT co.订单编号, s.组件流水号, s.物料流水号, SUM(ISNULL(l.已领数量, 0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
INNER JOIN dbo.PDM_零件明细表_标准件和外购件 s ON l.标准件和外购件流水号 = s.标准件和外购件流水号
|
||||
INNER JOIN 组件订单 co ON s.组件流水号 = co.组件流水号
|
||||
WHERE co.下单日期 < '2026-01-01'
|
||||
AND NOT (ISNULL(co.是否提交, 0) = 6 AND ISNULL(co.是否启用, 0) = 1)
|
||||
GROUP BY co.订单编号, s.组件流水号, s.物料流水号
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT co.订单编号, l.组件流水号, l.物料流水号, SUM(ISNULL(l.已领数量, 0)) AS 已领数
|
||||
FROM dbo.车间装配管理_领料单明细 l
|
||||
LEFT JOIN 组件订单 co ON l.组件流水号 = co.组件流水号
|
||||
WHERE l.物料流水号 IS NOT NULL
|
||||
AND ISNULL(l.物料流水号, 0) <> 0
|
||||
AND ISNULL(l.基本件流水号, 0) = 0
|
||||
AND ISNULL(l.标准件和外购件流水号, 0) = 0
|
||||
AND co.下单日期 < '2026-01-01'
|
||||
AND NOT (ISNULL(co.是否提交, 0) = 6 AND ISNULL(co.是否启用, 0) = 1)
|
||||
GROUP BY co.订单编号, l.组件流水号, l.物料流水号
|
||||
),
|
||||
已领汇总 AS
|
||||
(
|
||||
SELECT 订单编号, 组件流水号, 物料流水号, SUM(已领数) AS 已领数
|
||||
FROM 已领明细
|
||||
GROUP BY 订单编号, 组件流水号, 物料流水号
|
||||
),
|
||||
基本未完成 AS
|
||||
(
|
||||
SELECT b.组件流水号, COUNT(*) AS 未完成数
|
||||
FROM dbo.PDM_零件明细表_基本件 b
|
||||
LEFT JOIN dbo.车间生产管理_零件工艺计划_视图 v ON b.基本件流水号 = v.基本件流水号
|
||||
WHERE ISNULL(v.考核状态, 0) < 3
|
||||
GROUP BY b.组件流水号
|
||||
),
|
||||
采购未完成 AS
|
||||
(
|
||||
SELECT 组件流水号, COUNT(*) AS 未完成数
|
||||
FROM dbo.采购管理_采购合同明细_查询视图
|
||||
WHERE ISNULL(采购状态, N'') <> N'已入库'
|
||||
GROUP BY 组件流水号
|
||||
),
|
||||
存在部件组件 AS
|
||||
(
|
||||
SELECT 组件流水号 FROM dbo.PDM_零件明细表_基本件
|
||||
UNION
|
||||
SELECT 组件流水号 FROM dbo.PDM_零件明细表_标准件和外购件
|
||||
UNION
|
||||
SELECT 组件流水号 FROM dbo.采购管理_采购合同明细_查询视图
|
||||
),
|
||||
全部完成组件 AS
|
||||
(
|
||||
SELECT e.组件流水号
|
||||
FROM 存在部件组件 e
|
||||
LEFT JOIN 基本未完成 b ON e.组件流水号 = b.组件流水号
|
||||
LEFT JOIN 采购未完成 p ON e.组件流水号 = p.组件流水号
|
||||
WHERE ISNULL(b.未完成数, 0) = 0
|
||||
AND ISNULL(p.未完成数, 0) = 0
|
||||
),
|
||||
最终明细 AS
|
||||
(
|
||||
SELECT
|
||||
d.订单编号,
|
||||
CONVERT(varchar(10), d.下单日期, 23) AS 下单日期,
|
||||
d.客户名称,
|
||||
d.下单人姓名 AS 下单人,
|
||||
d.零件名称,
|
||||
d.图号,
|
||||
d.需求量,
|
||||
ISNULL(l.已领数, 0) AS 已领数,
|
||||
CASE WHEN d.需求量 > ISNULL(l.已领数, 0) THEN d.需求量 - ISNULL(l.已领数, 0) ELSE 0 END AS 最终需求量
|
||||
FROM 需求明细 d
|
||||
LEFT JOIN 已领汇总 l
|
||||
ON d.订单编号 = l.订单编号
|
||||
AND d.组件流水号 = l.组件流水号
|
||||
AND d.物料流水号 = l.物料流水号
|
||||
WHERE NOT EXISTS (SELECT 1 FROM 全部完成组件 c WHERE c.组件流水号 = d.组件流水号)
|
||||
)
|
||||
SELECT 订单编号, 下单日期, 客户名称, 下单人, 零件名称, 图号, SUM(需求量) AS 需求量, SUM(已领数) AS 已领数, SUM(最终需求量) AS 最终需求量
|
||||
FROM 最终明细
|
||||
WHERE 最终需求量 > 0
|
||||
GROUP BY 订单编号, 下单日期, 客户名称, 下单人, 零件名称, 图号
|
||||
ORDER BY 下单日期 DESC, 订单编号, 零件名称, 图号;
|
||||
Reference in New Issue
Block a user