Files
JY1.0/sql/物料标准维护_禁用物料功能_正式库_20260804.sql

212 lines
7.6 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
ALTER PROCEDURE [dbo].[物料管理_查询数据_分页]
@物料名称_check bit = null,
@物料名称 nvarchar(50) = null,
@物料编码_check bit = null,
@物料编码 nvarchar(50) = null,
@图号_check bit = null,
@图号 nvarchar(50) = null,
@类型_check bit = null,
@类型 int = null,
@时间_check bit = null,
@开始时间 nvarchar(50) = null,
@结束时间 nvarchar(50) = null,
@排序名称 int =null,
@排序方式 int =null,
@物料库_check bit = null,
@物料库 int = null,
@是否禁用_check bit = null, -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 正式库支持前端切换查看启用/禁用物料
@是否禁用 bit = null, -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 1 查询禁用物料0 查询启用物料
@PageCurrent int=1, --要显示的页码
@PageSize int = 20, --每页的大小(记录数)
@PageCount int = '1111' OUTPUT, --总页数
@ItemCount int = '1111' OUTPUT --总记录数
AS
declare @selectStrWhere nvarchar(4000)
set @selectStrWhere = '1=1 ' -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 默认条件改为可拼接启用状态
if (ISNULL(@是否禁用_check, 0) = 1) -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 按按钮传入状态筛选禁用/启用物料
set @selectStrWhere = @selectStrWhere + ' and 是否禁用 = ' + str(ISNULL(@是否禁用, 0))
else
set @selectStrWhere = @selectStrWhere + ' and 是否禁用=0 '
--if(@物料名称_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 名称 like + ''%'' + @物料名称 + ''%'' '
--if(@时间_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 修改日期 >=@开始时间 and 修改日期 <=@结束时间 '
--if(@图号_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 代号 like + ''%'' + @图号 + ''%'' '
--if(@类型_check = 1)
-- set @selectStrWhere = @selectStrWhere+' and 类型 = @类型 '
if (@物料名称_check = 1)
if(@物料名称 is not null)
set @selectStrWhere = @selectStrWhere+' and 名称 like '+N'''%'+@物料名称+N'%'''
if (@物料编码_check = 1)
if(@物料编码 is not null)
set @selectStrWhere = @selectStrWhere+' and 物料编码 like '+N'''%'+@物料编码+N'%'''
if (@时间_check = 1)
if(@开始时间 is not null and @结束时间 is not null)
set @selectStrWhere = @selectStrWhere+' and ' + N''''+@开始时间+N'''' + '<=修改日期' + ' and '+ N''''+@结束时间+N'''' + '>=修改日期'
if (@图号_check = 1)
if(@图号 is not null)
set @selectStrWhere = @selectStrWhere+' and 代号 like '+N'''%'+@图号+N'%'''
if (@类型_check = 1)
if(@类型 is not null)
set @selectStrWhere = @selectStrWhere+' and 类型 = '+str(@类型)
---if (@物料库_check = 1)
-- if(@物料库 is not null)
-- set @selectStrWhere = @selectStrWhere+' and 物料库流水号 = '+ str(@物料库)
declare @tbname sysname --要分页显示的表名
declare @fieldkey sysname --用于定位记录的主键(唯一键)字段,只能是单个字段
declare @where nvarchar(4000) --查询条件
declare @fieldshow nvarchar(1000) --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段
declare @fieldOrder nvarchar(1000) ----以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC --不指定则按主键顺序
set @tbname = '物料视图'
set @fieldkey = '物料流水号'
set @where = @selectStrWhere
set @fieldshow =' [代号], [修改人], [修改日期], [单位], [单位流水号],[名称], [库位], [货位流水号], [操作日期],[文件内容],[文件后缀], [物料类型],[物料库流水号],
[是否启用], [是否禁用], [材料], [材料流水号],
[物料流水号], [物料编码], [类型], [类型名称], [物料说明],[规格],[曾用物料编码],[Expr1]' -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 保持原输出字段并继续返回是否禁用状态
if @排序名称 = 1
begin
if @排序方式 = 1
begin
set @fieldOrder ='名称 DESC'
end
else
begin
set @fieldOrder = '名称 ASC'
end
end
else if @排序名称 = 2
begin
if @排序方式 = 1
begin
set @fieldOrder = '代号 DESC'
end
else
begin
set @fieldOrder = '代号 ASC'
end
end
else
begin
set @fieldOrder = '操作日期 DESC'
end
exec sp_xt_pagesplit @tbname,@fieldkey,@where,@fieldshow,@fieldOrder,'',@PageCurrent,@PageSize,@PageCount out,@ItemCount out
GO
ALTER PROCEDURE [dbo].[物料管理_删除]
@物料流水号 int=null
AS
BEGIN
SET NOCOUNT ON;
IF @物料流水号 IS NULL OR NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料主文件_基本 WHERE 物料流水号 = @物料流水号)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
UPDATE dbo.库存管理_物料主文件_基本
SET 是否禁用 = 1
WHERE 物料流水号 = @物料流水号; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 删除保持原逻辑删除语义
DELETE FROM dbo.库存管理_物料_图片
WHERE 物料流水号 = @物料流水号; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 删除后继续清理物料图片
SELECT '1' AS result, N'删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 返回前端可识别结果
END
GO
IF OBJECT_ID(N'[dbo].[物料管理_启用]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[物料管理_启用]
GO
CREATE PROCEDURE [dbo].[物料管理_启用]
@物料流水号 int=null,
@操作者 int=null
AS
BEGIN
SET NOCOUNT ON;
IF @物料流水号 IS NULL OR NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料主文件_基本 WHERE 物料流水号 = @物料流水号)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
UPDATE dbo.库存管理_物料主文件_基本
SET 是否禁用 = 0,
修改人 = @操作者,
修改日期 = GETDATE()
WHERE 物料流水号 = @物料流水号; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 禁用物料重新启用
SELECT '1' AS result, N'启用成功' AS msg; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 返回前端可识别结果
END
GO
IF OBJECT_ID(N'[dbo].[物料管理_物理删除]', N'P') IS NOT NULL
DROP PROCEDURE [dbo].[物料管理_物理删除]
GO
CREATE PROCEDURE [dbo].[物料管理_物理删除]
@物料流水号 int=null
AS
BEGIN
SET NOCOUNT ON;
IF @物料流水号 IS NULL OR NOT EXISTS (SELECT 1 FROM dbo.库存管理_物料主文件_基本 WHERE 物料流水号 = @物料流水号)
BEGIN
SELECT '0' AS result, N'物料不存在' AS msg;
RETURN;
END
IF EXISTS (SELECT 1 FROM dbo.库存管理_物料主文件_基本 WHERE 物料流水号 = @物料流水号 AND ISNULL(是否禁用, 0) = 0)
BEGIN
SELECT '0' AS result, N'启用物料不能物理删除,请先删除禁用后再操作' AS msg;
RETURN;
END
BEGIN TRY
BEGIN TRAN;
DELETE FROM dbo.库存管理_物料_图片
WHERE 物料流水号 = @物料流水号; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 物理删除禁用物料时同步清理图片
DELETE FROM dbo.库存管理_物料主文件_基本
WHERE 物料流水号 = @物料流水号
AND ISNULL(是否禁用, 0) = 1; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 仅允许已禁用物料物理删除
COMMIT TRAN;
SELECT '1' AS result, N'永久删除成功' AS msg; -- 修改人:Ld 修改时间:2026-08-04 08:34:47; 返回前端可识别结果
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRAN;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH
END
GO