Files
JY1.0/sql/仓储管理_库存查询_采购中排除已入库.sql

130 lines
7.3 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
USE [ERPTOOL_JY]
GO
-- 库存查询采购中排除已入库数据;修改人:Ld 修改时间:2026-07-23 16:39:41;
ALTER PROCEDURE [dbo].[仓储管理_库存查询_查询]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@图号_check bit = null,
@图号 nvarchar(50) = null,
@类型_check bit = null,
@类型 nvarchar(50) = null,
@库位_check bit = null,
@库位 nvarchar(50) = null,
@排序名称 int = null,
@排序方式 int = null
AS
declare @selectStr nvarchar(4000)
declare @selectStrWhere nvarchar(4000)
--(select 车间生产管理_零件工艺计划_视图.物料流水号,isnull(SUM(数量) - SUM(车间生产管理_零件工艺计划_视图.入库数量) - SUM(P.报废数量),0) as 加工中 from 车间生产管理_零件工艺计划_视图 inner join (select 工艺计划流水号,工序流水号 from dbo.车间生产管理工艺_零件工序 where dbo.车间生产管理工艺_零件工序.工序顺序 = 1) as n
-- 这是改动前
set @selectStr =
'Select 仓储管理_累计库存查询_视图.*,批次,isnull(需求量,0) as 需求量,毛坯库存,isnull(加工中,0) as 加工中,isnull(采购中,0) as 采购中,isnull(补货毛坯,0) as 补货毛坯 from 仓储管理_累计库存查询_视图
left join
(select count(*) as 批次,物料流水号 from 库存管理_物料与货位对照表 where 货位存量 > 0 group by 物料流水号)
as a on 仓储管理_累计库存查询_视图.物料流水号 = a.物料流水号 LEFT JOIN dbo.物料管理_需求量_视图 ON a.物料流水号 = dbo.物料管理_需求量_视图.物料流水号
left join
(select 车间生产管理_零件工艺计划_视图.物料流水号,isnull(SUM(数量) - SUM(车间生产管理_零件工艺计划_视图.入库数量) - ISNULL(SUM(P.报废数量),0),0) as 加工中 from 车间生产管理_零件工艺计划_视图 inner join (select 工艺计划流水号,工序流水号 from dbo.车间生产管理工艺_零件工序 where dbo.车间生产管理工艺_零件工序.工序顺序 = 1) as n
on 车间生产管理_零件工艺计划_视图.工艺计划流水号 = n.工艺计划流水号 inner join
(select SUM(ISNULL(已领数量,0)) as 数量,工序流水号 from 车间生产管理工艺_零件工序_任务分配 group by 工序流水号) as m on n.工序流水号 = m.工序流水号 left join
(select sum(报废数量) as 报废数量,工艺计划流水号 from 车间生产管理工艺_零件工艺计划_报废零件记录 group by 工艺计划流水号) as P on 车间生产管理_零件工艺计划_视图.工艺计划流水号 = P.工艺计划流水号 where 车间生产管理_零件工艺计划_视图.是否提交 < 5 and 车间生产管理_零件工艺计划_视图.考核状态 < 3
group by 物料流水号)
as D on 仓储管理_累计库存查询_视图.物料流水号 = D.物料流水号
left join
(select sum(isnull(采购数,0)-isnull(到货数,0)) as 采购中,物料流水号 from 采购管理_采购合同明细_全部_查询视图 where 是否滑台 <> 1 and 是否滑台 <> 2 and 已删 = 0 and 采购状态 <> ''已到'' and 采购状态 <> ''已入库''
GROUP BY 物料流水号)
as T on 仓储管理_累计库存查询_视图.物料流水号 = T.物料流水号
left join
(select isnull(sum(isnull(累计库存,0)),0) as 毛坯库存,库存管理_物料主文件_基本.代号,库存管理_物料主文件_基本.名称 from 库存管理_物料主文件_基本
left join 库存管理_外购件累计库存 on 库存管理_物料主文件_基本.物料流水号 = 库存管理_外购件累计库存.物料流水号 where 库存管理_物料主文件_基本.是否禁用 = 0 group by 库存管理_物料主文件_基本.代号,库存管理_物料主文件_基本.名称) as C on 仓储管理_累计库存查询_视图.图号或型号 + ''MP'' = C.代号 AND 仓储管理_累计库存查询_视图.物料名称 + ''MP'' = C.名称
left join
(SELECT dbo.库存管理_物料主文件_基本.名称, dbo.库存管理_物料主文件_基本.代号, isnull(SUM(dbo.采购管理_采购合同明细.数量 - dbo.采购管理_采购合同明细.已到货数量),0) AS 补货毛坯
FROM dbo.采购管理_采购合同明细 INNER JOIN
dbo.PDM_零件明细表_标准件和外购件 ON dbo.采购管理_采购合同明细.标准件和外购件流水号 = dbo.PDM_零件明细表_标准件和外购件.标准件和外购件流水号 INNER JOIN
dbo.库存管理_物料主文件_基本 ON dbo.PDM_零件明细表_标准件和外购件.物料流水号 = dbo.库存管理_物料主文件_基本.物料流水号
GROUP BY dbo.库存管理_物料主文件_基本.名称, dbo.库存管理_物料主文件_基本.代号) as E on 仓储管理_累计库存查询_视图.图号或型号 + ''MP'' = E.代号 AND 仓储管理_累计库存查询_视图.物料名称 + ''MP'' = E.名称 '
set @selectStrWhere = 'where 1 = 1 '
--2024-04-29改动备注isnull(SUM(数量 - 车间生产管理_零件工艺计划_视图.入库数量 - P.报废数量),0) as 加工中
--isnull(SUM(数量) - SUM(车间生产管理_零件工艺计划_视图.入库数量) - SUM(P.报废数量),0) as 加工中
if(@物料名称_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(物料名称,'''') like + ''%'' + @物料名称 + ''%'' '
if(@物料编码_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(物料编码,'''') like + ''%'' + @物料编码 + ''%'' '
if(@图号_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(图号或型号,'''') like + ''%'' + @图号 + ''%'' '
if(@类型_check = 1)
set @selectStrWhere = @selectStrWhere+' and 类型 = @类型 '
if(@库位_check = 1)
set @selectStrWhere = @selectStrWhere+' and isnull(货位名称,'''') like + ''%'' + @库位 + ''%'' '
if @排序名称 = 1
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料编码 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料编码 ASC'
end
end
else if @排序名称 = 2
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料名称 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 物料名称 ASC'
end
end
else if @排序名称 = 3
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 货位名称 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 货位名称 ASC'
end
end
else if @排序名称 = 4
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 库存 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 库存 ASC'
end
end
else if @排序名称 = 5
begin
if @排序方式 = 1
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 最低库存 DESC'
end
else
begin
set @selectStr = @selectStr+@selectStrWhere+'order by 最低库存 ASC'
end
end
else
begin
set @selectStr = @selectStr+@selectStrWhere
end
print @selectStr
EXEC sp_executesql @selectStr,N'@物料名称 nvarchar(50),@物料编码 nvarchar(50), @图号 nvarchar(50),@类型 nvarchar(50),@库位 nvarchar(50)',
@物料名称,@物料编码,@图号,@类型,@库位
GO