USE [ERPTOOL_JY_20250826Back] GO /* 目的: 1. 物料新增/编辑不再维护默认库位。 2. 新增物料不再写入 0 库存的“物料与货位对照表”记录。 3. 保留 @货位流水号 参数,兼容未同步发布的旧前端调用。 */ ALTER PROCEDURE [dbo].[物料管理_增加] @材料流水号 int = null, @货位流水号 int = null, @单位流水号 int = null, @类型 int = null, @物料名称 nvarchar(50) = null, @图号 nvarchar(50) = null, @物料编码 nvarchar(50) = null, @物料库流水号 int = null AS BEGIN SET NOCOUNT ON; DECLARE @物料流水号 int; IF @材料流水号 = 0 SET @材料流水号 = 3; INSERT INTO 库存管理_物料主文件_基本 (名称, 代号, 单位流水号, 材料流水号, 类型, 物料编码, 物料库流水号) VALUES (@物料名称, @图号, @单位流水号, @材料流水号, @类型, @物料编码, @物料库流水号); SET @物料流水号 = IDENT_CURRENT(N'库存管理_物料主文件_基本'); INSERT INTO 库存管理_外购件累计库存(物料流水号, 累计库存) VALUES(@物料流水号, 0); END GO ALTER PROCEDURE [dbo].[物料管理_增加新] @材料流水号 int = null, @货位流水号 int = null, @单位流水号 int = null, @类型 int = null, @物料名称 nvarchar(50) = null, @图号 nvarchar(50) = null, @物料说明 nvarchar(MAX) = null, @物料库流水号 int = null, @人员编号 int = null AS BEGIN SET NOCOUNT ON; DECLARE @物料流水号 int, @物料编码2 nvarchar(50) = null; IF @材料流水号 = 0 SET @材料流水号 = 3; IF @类型 = 1 BEGIN SELECT @物料编码2 = 'LJ' + RIGHT(CAST(POWER(10, 8) AS varchar) + (SUBSTRING((SELECT 物料编码 FROM 库存管理_物料主文件_基本 WHERE 物料流水号 = (SELECT MAX(物料流水号) FROM 库存管理_物料主文件_基本)), 3, 8) + 1), 8); INSERT INTO 库存管理_物料主文件_基本 (名称, 代号, 单位流水号, 材料流水号, 类型, 物料编码, 物料库流水号, 修改人, 修改日期, 物料说明) VALUES (@物料名称, @图号, @单位流水号, @材料流水号, @类型, @物料编码2, @物料库流水号, @人员编号, GETDATE(), @物料说明); SET @物料流水号 = IDENT_CURRENT(N'库存管理_物料主文件_基本'); INSERT INTO 库存管理_外购件累计库存(物料流水号, 累计库存) VALUES(@物料流水号, 0); END IF @类型 = 2 BEGIN SELECT @物料编码2 = 'LJ' + RIGHT(CAST(POWER(10, 8) AS varchar) + (SUBSTRING((SELECT 物料编码 FROM 库存管理_物料主文件_基本 WHERE 物料流水号 = (SELECT MAX(物料流水号) FROM 库存管理_物料主文件_基本)), 3, 8) + 1), 8); INSERT INTO 库存管理_物料主文件_基本 (名称, 代号, 单位流水号, 材料流水号, 类型, 物料编码, 物料库流水号, 修改人, 修改日期, 物料说明) VALUES (@物料名称, @图号, @单位流水号, @材料流水号, @类型, @物料编码2, @物料库流水号, @人员编号, GETDATE(), @物料说明); SET @物料流水号 = IDENT_CURRENT(N'库存管理_物料主文件_基本'); INSERT INTO 库存管理_外购件累计库存(物料流水号, 累计库存) VALUES(@物料流水号, 0); SELECT @物料编码2 = 'MP' + RIGHT(CAST(POWER(10, 8) AS varchar) + (SUBSTRING((SELECT 物料编码 FROM 库存管理_物料主文件_基本 WHERE 物料流水号 = (SELECT MAX(物料流水号) FROM 库存管理_物料主文件_基本)), 3, 8) + 1), 8); INSERT INTO 库存管理_物料主文件_基本 (名称, 代号, 单位流水号, 材料流水号, 类型, 物料编码, 物料库流水号, 修改人, 修改日期, 物料说明) VALUES (@物料名称 + 'MP', @图号 + 'MP', @单位流水号, @材料流水号, 1, @物料编码2, @物料库流水号, @人员编号, GETDATE(), @物料说明); SET @物料流水号 = IDENT_CURRENT(N'库存管理_物料主文件_基本'); INSERT INTO 库存管理_外购件累计库存(物料流水号, 累计库存) VALUES(@物料流水号, 0); END END GO ALTER PROCEDURE [dbo].[物料管理_编辑] @材料流水号 int = null, @货位流水号 int = null, @单位流水号 int = null, @类型 int = null, @物料名称 nvarchar(50) = null, @图号 nvarchar(50) = null, @物料流水号 int = null, @操作者 int = null, @物料编码 nvarchar(50) = null, @物料说明 nvarchar(MAX) = null, @物料库流水号 int = null, @最高库存 int = null, @安全库存 int = null, @最低库存 int = null AS BEGIN SET NOCOUNT ON; UPDATE 库存管理_物料主文件_基本 SET 名称 = @物料名称, 代号 = @图号, 单位流水号 = @单位流水号, 材料流水号 = @材料流水号, 类型 = @类型, 修改人 = @操作者, 修改日期 = GETDATE(), 物料编码 = @物料编码, 物料说明 = @物料说明, 物料库流水号 = @物料库流水号 WHERE 物料流水号 = @物料流水号; UPDATE dbo.PDM_零件明细表_基本件 SET 材料流水号 = @材料流水号 WHERE 物料流水号 = @物料流水号; UPDATE dbo.PDM_零件明细表_标准件和外购件 SET 材料流水号 = @材料流水号 WHERE 物料流水号 = @物料流水号; IF (SELECT COUNT(*) FROM PDM_零件明细表_基本件 WHERE 物料流水号 = @物料流水号) > 0 BEGIN IF (SELECT COUNT(*) FROM 车间生产管理工艺_零件工艺计划 WHERE 基本件流水号 IN (SELECT 基本件流水号 FROM PDM_零件明细表_基本件 WHERE 物料流水号 = @物料流水号) AND 考核状态 < 4) > 0 BEGIN UPDATE 车间生产管理工艺_零件工艺计划 SET 零件图号 = @图号 WHERE 基本件流水号 IN (SELECT 基本件流水号 FROM PDM_零件明细表_基本件 WHERE 物料流水号 = @物料流水号) AND 考核状态 < 4; END END END GO