更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本

This commit is contained in:
Developer
2026-06-29 13:36:34 +08:00
parent 137e276340
commit be0ff91e24
54 changed files with 5066 additions and 723 deletions

View File

@@ -0,0 +1,392 @@
IF OBJECT_ID(N'dbo.仓储管理_入库记录_退货入库_验证', N'P') IS NOT NULL
DROP PROCEDURE dbo.仓储管理_入库记录_退货入库_验证
GO
CREATE PROCEDURE dbo.仓储管理_入库记录_退货入库_验证
@物料流水号 INT = NULL,
@退货数量 FLOAT = NULL,
@是否采购 INT = NULL,
@采购合同明细流水号 INT = NULL,
@批号 INT = NULL,
@入库时间 DATETIME = NULL,
@入库记录流水号 INT = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @货位存量 FLOAT;
DECLARE @图号 NVARCHAR(50);
DECLARE @名称 NVARCHAR(50);
DECLARE @库位 NVARCHAR(50);
DECLARE @货位流水号 INT;
SELECT
@名称 = 名称,
@图号 = 代号,
@库位 = 库位
FROM dbo.库存管理_物料主文件_基本
WHERE 物料流水号 = @物料流水号;
SELECT @货位流水号 = 货位流水号
FROM dbo.库存管理_外购件_入库记录
WHERE 入库记录流水号 = @入库记录流水号;
SET @图号 = RIGHT(ISNULL(@图号, N''), 2);
SET @名称 = LEFT(ISNULL(@名称, N''), 2);
IF @名称 = N'主轴'
BEGIN
SELECT @货位存量 = ISNULL(MAX(货位存量), 0)
FROM dbo.库存管理_物料与货位对照表
WHERE 物料流水号 = @物料流水号
AND 采购合同明细流水号 = @采购合同明细流水号
AND 是否采购 = @是否采购
AND (@货位流水号 IS NULL OR 货位流水号 = @货位流水号)
AND (@批号 IS NULL OR 批号 = @批号);
END
ELSE
BEGIN
SELECT @货位存量 = ISNULL(MAX(货位存量), 0)
FROM dbo.库存管理_物料与货位对照表
WHERE 物料流水号 = @物料流水号
AND 采购合同明细流水号 = @采购合同明细流水号
AND 是否采购 = @是否采购
AND (@货位流水号 IS NULL OR 货位流水号 = @货位流水号);
IF ISNULL(@货位存量, 0) < ISNULL(@退货数量, 0)
AND (@图号 = N'MP' OR @库位 = N'毛坯库')
BEGIN
SELECT @货位存量 = ISNULL(MAX(货位存量), 0)
FROM dbo.库存管理_物料与货位对照表
WHERE 物料流水号 = @物料流水号
AND 采购合同明细流水号 IS NULL
AND 是否采购 IS NULL
AND (@货位流水号 IS NULL OR 货位流水号 = @货位流水号);
END;
END;
IF ISNULL(@退货数量, 0) > ISNULL(@货位存量, 0)
SELECT 0 AS 数值;
ELSE
SELECT 1 AS 数值;
END
GO
IF OBJECT_ID(N'dbo.仓储管理_入库记录_退货入库', N'P') IS NOT NULL
DROP PROCEDURE dbo.仓储管理_入库记录_退货入库
GO
CREATE PROCEDURE dbo.仓储管理_入库记录_退货入库
@物料流水号 INT = NULL,
@退货数量 FLOAT = NULL,
@退货原因 NVARCHAR(500) = NULL,
@入库记录流水号 INT = NULL,
@退货人 INT = NULL,
@采购合同流水号 INT = NULL,
@供应商流水号 INT = NULL,
@是否采购 INT = NULL,
@采购合同明细流水号 INT = NULL,
@批号 INT = NULL,
@组件流水号 INT = NULL,
@采购合同 NVARCHAR(50) = NULL,
@供应商 NVARCHAR(500) = NULL,
@物料名称 NVARCHAR(500) = NULL,
@图号或型号 NVARCHAR(500) = NULL,
@物料编码 NVARCHAR(50) = NULL,
@单位 NVARCHAR(50) = NULL,
@类型 NVARCHAR(50) = NULL,
@入库时间 DATETIME,
@库存 FLOAT = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @图号 NVARCHAR(50);
DECLARE @名称 NVARCHAR(50);
DECLARE @入库货位流水号 INT;
DECLARE @影响行数 INT;
BEGIN TRY
BEGIN TRANSACTION;
SELECT @入库货位流水号 = 货位流水号
FROM dbo.库存管理_外购件_入库记录
WHERE 入库记录流水号 = @入库记录流水号;
INSERT INTO dbo.仓储管理_入库记录_退货记录表
(退货数量, 退货原因, 供应商流水号, 退货人流水号, 退货时间, 采购合同流水号, 入库记录流水号, 是否采购, 采购合同, 供应商, 类型, 物料名称, 图号或型号, 物料编码, 单位)
VALUES
(@退货数量, @退货原因, @供应商流水号, @退货人, GETDATE(), @采购合同流水号, @入库记录流水号, @是否采购, @采购合同, @供应商, @类型, @物料名称, @图号或型号, @物料编码, @单位);
UPDATE dbo.库存管理_外购件累计库存
SET 累计库存 = ISNULL(累计库存, 0) - @退货数量
WHERE 物料流水号 = @物料流水号;
SELECT @名称 = 名称, @图号 = 代号
FROM dbo.库存管理_物料主文件_基本
WHERE 物料流水号 = @物料流水号;
SET @图号 = LEFT(ISNULL(@图号, N''), 2);
SET @名称 = LEFT(ISNULL(@名称, N''), 2);
SET @影响行数 = 0;
IF @名称 = N'主轴'
BEGIN
UPDATE dbo.库存管理_物料与货位对照表
SET 货位存量 = 货位存量 - @退货数量
WHERE 物料流水号 = @物料流水号
AND 采购合同明细流水号 = @采购合同明细流水号
AND 是否采购 = @是否采购
AND (@入库货位流水号 IS NULL OR 货位流水号 = @入库货位流水号)
AND CONVERT(VARCHAR(10), @入库时间, 23) = CONVERT(VARCHAR(10), 操作日期, 23)
AND 批号 = @批号
AND ISNULL(货位存量, 0) >= @退货数量;
SET @影响行数 = @@ROWCOUNT;
END
ELSE
BEGIN
IF @图号 = N'MP'
BEGIN
UPDATE dbo.库存管理_物料与货位对照表
SET 货位存量 = 货位存量 - @退货数量
WHERE 物料流水号 = @物料流水号
AND (@入库货位流水号 IS NULL OR 货位流水号 = @入库货位流水号)
AND 采购合同明细流水号 IS NULL
AND 是否采购 IS NULL
AND ISNULL(货位存量, 0) >= @退货数量;
SET @影响行数 = @@ROWCOUNT;
END
ELSE
BEGIN
UPDATE dbo.库存管理_物料与货位对照表
SET 货位存量 = 货位存量 - @退货数量
WHERE 物料流水号 = @物料流水号
AND 采购合同明细流水号 = @采购合同明细流水号
AND 是否采购 = @是否采购
AND (@入库货位流水号 IS NULL OR 货位流水号 = @入库货位流水号)
AND CONVERT(VARCHAR(10), @入库时间, 23) = CONVERT(VARCHAR(10), 操作日期, 23)
AND ISNULL(货位存量, 0) >= @退货数量;
SET @影响行数 = @@ROWCOUNT;
END;
END;
IF @影响行数 = 0
BEGIN
RAISERROR(N'库存盘点对应库位库存不足或未找到对应库存记录', 16, 1);
END;
UPDATE dbo.库存管理_外购件_入库记录
SET 实际到货数量 = 实际到货数量 - @退货数量,
退货数量 = ISNULL(退货数量, 0) + @退货数量
WHERE 入库记录流水号 = @入库记录流水号;
IF @名称 = N'主轴'
UPDATE dbo.采购管理_采购批次
SET 已到数 = 已到数 - @退货数量
WHERE 采购合同明细流水号 = @采购合同明细流水号
AND 批号 = @批号;
IF @是否采购 = 1
BEGIN
UPDATE dbo.采购管理_采购合同明细
SET 已到货数量 = 已到货数量 - @退货数量,
到货日期 = NULL
WHERE 采购合同明细流水号 = @采购合同明细流水号;
UPDATE dbo.采购管理_采购合同
SET 是否到货 = 1
WHERE 采购合同流水号 = @采购合同流水号;
END
ELSE
BEGIN
UPDATE dbo.采购管理_耗材采购合同明细
SET 已到货数量 = ISNULL(已到货数量, 0) - @退货数量,
到货日期 = NULL
WHERE 采购合同明细流水号 = @采购合同明细流水号;
UPDATE dbo.采购管理_采购合同
SET 是否到货 = 1
WHERE 采购合同流水号 = @采购合同流水号;
END;
DECLARE @订单类型 INT;
DECLARE @订单流水号 INT;
DECLARE @组件采购 INT;
SELECT
@订单流水号 = 订单流水号,
@订单类型 = 订单类型,
@组件采购 = 组件采购
FROM dbo.PDM_组件名称_视图
WHERE 组件流水号 = @组件流水号;
IF @订单类型 = 3
BEGIN
UPDATE dbo.合同管理_订单信息_基础表
SET 是否提交 = 3,
入库日期 = NULL
WHERE 订单流水号 = @订单流水号;
UPDATE dbo.库存管理_外购件累计库存
SET 补货中 = ISNULL(补货中, 0) + @退货数量
WHERE 物料流水号 = @物料流水号;
END;
IF @订单类型 = 1 AND @组件采购 = 1
BEGIN
UPDATE dbo.PDM_组件名称
SET 产品状态 = 2
WHERE 组件流水号 = @组件流水号;
END;
COMMIT TRANSACTION;
SELECT '1' AS result;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH;
END
GO
IF OBJECT_ID(N'dbo.仓储管理_自制件入库记录_退货入库', N'P') IS NOT NULL
DROP PROCEDURE dbo.仓储管理_自制件入库记录_退货入库
GO
CREATE PROCEDURE dbo.仓储管理_自制件入库记录_退货入库
@物料流水号 INT = NULL,
@退货数量 FLOAT = NULL,
@退货原因 NVARCHAR(500) = NULL,
@入库记录流水号 INT = NULL,
@退货人 INT = NULL,
@组件流水号 INT = NULL,
@入库时间 DATETIME,
@批号 NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @工艺计划流水号 INT;
DECLARE @名称 NVARCHAR(50);
DECLARE @入库货位流水号 INT;
DECLARE @影响行数 INT;
BEGIN TRY
BEGIN TRANSACTION;
SELECT
@工艺计划流水号 = 工艺计划流水号,
@入库货位流水号 = 货位流水号
FROM dbo.库存管理_自制件_入库记录
WHERE 入库记录流水号 = @入库记录流水号;
INSERT INTO dbo.仓储管理_自制件入库记录_退货记录表
(退货数量, 退货原因, 退货人流水号, 退货时间, 入库记录流水号)
VALUES
(@退货数量, @退货原因, @退货人, GETDATE(), @入库记录流水号);
UPDATE dbo.库存管理_外购件累计库存
SET 累计库存 = ISNULL(累计库存, 0) - @退货数量
WHERE 物料流水号 = @物料流水号;
SELECT @名称 = 名称
FROM dbo.库存管理_物料主文件_基本
WHERE 物料流水号 = @物料流水号;
SET @名称 = LEFT(ISNULL(@名称, N''), 2);
IF @名称 = N'主轴'
BEGIN
UPDATE dbo.库存管理_物料与货位对照表
SET 货位存量 = 货位存量 - @退货数量
WHERE 物料流水号 = @物料流水号
AND 工艺计划流水号 = @工艺计划流水号
AND (@入库货位流水号 IS NULL OR 货位流水号 = @入库货位流水号)
AND CONVERT(VARCHAR(10), @入库时间, 23) = CONVERT(VARCHAR(10), 操作日期, 23)
AND 批号 = @批号
AND ISNULL(货位存量, 0) >= @退货数量;
END
ELSE
BEGIN
UPDATE dbo.库存管理_物料与货位对照表
SET 货位存量 = 货位存量 - @退货数量
WHERE 物料流水号 = @物料流水号
AND 工艺计划流水号 = @工艺计划流水号
AND (@入库货位流水号 IS NULL OR 货位流水号 = @入库货位流水号)
AND CONVERT(VARCHAR(10), @入库时间, 23) = CONVERT(VARCHAR(10), 操作日期, 23)
AND ISNULL(货位存量, 0) >= @退货数量;
END;
SET @影响行数 = @@ROWCOUNT;
IF @影响行数 = 0
BEGIN
RAISERROR(N'库存盘点对应库位库存不足或未找到对应库存记录', 16, 1);
END;
UPDATE dbo.库存管理_自制件_入库记录
SET 实际到货数量 = 实际到货数量 - @退货数量,
退货数量 = ISNULL(退货数量, 0) + @退货数量
WHERE 入库记录流水号 = @入库记录流水号;
IF @名称 = N'主轴'
UPDATE dbo.车间生产工艺管理_零件批次
SET 入库数 = 入库数 - @退货数量
WHERE 工艺计划流水号 = @工艺计划流水号
AND 批号 = @批号;
UPDATE dbo.车间生产管理工艺_零件工艺计划
SET 考核状态 = 3,
入库数量 = 入库数量 - @退货数量
WHERE 工艺计划流水号 = @工艺计划流水号;
DECLARE @订单类型 INT;
DECLARE @订单流水号 INT;
DECLARE @组件车间 INT;
SELECT
@订单流水号 = 订单流水号,
@订单类型 = 订单类型,
@组件车间 = 组件精工车间
FROM dbo.PDM_组件名称_视图
WHERE 组件流水号 = @组件流水号;
IF @订单类型 = 3
BEGIN
UPDATE dbo.合同管理_订单信息_基础表
SET 是否提交 = 3,
入库日期 = NULL
WHERE 订单流水号 = @订单流水号;
UPDATE dbo.库存管理_外购件累计库存
SET 补货中 = ISNULL(补货中, 0) + @退货数量
WHERE 物料流水号 = @物料流水号;
END;
IF @订单类型 = 1 AND @组件车间 = 1
BEGIN
UPDATE dbo.PDM_组件名称
SET 产品状态 = 2
WHERE 组件流水号 = @组件流水号;
END;
COMMIT TRANSACTION;
SELECT '1' AS result;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT '0' AS result, ERROR_MESSAGE() AS msg;
END CATCH;
END
GO

View File

@@ -0,0 +1,283 @@
IF OBJECT_ID(N'dbo.库存盘点_调拨记录', N'U') IS NULL
BEGIN
CREATE TABLE dbo.库存盘点_调拨记录
(
库存调拨流水号 INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
类型 NVARCHAR(50) NULL,
物料流水号 INT NULL,
原物料与货位流水号 INT NULL,
原货位流水号 INT NULL,
目标物料与货位流水号 INT NULL,
目标货位流水号 INT NULL,
调拨数量 FLOAT NULL,
调拨前原库存 FLOAT NULL,
调拨后原库存 FLOAT NULL,
调拨前目标库存 FLOAT NULL,
调拨后目标库存 FLOAT NULL,
调拨备注 NVARCHAR(200) NULL,
操作人 INT NULL,
操作时间 DATETIME NULL
)
END
GO
IF OBJECT_ID(N'dbo.仓储管理_库存盘点_库存调拨', N'P') IS NOT NULL
DROP PROCEDURE dbo.仓储管理_库存盘点_库存调拨
GO
CREATE PROCEDURE dbo.仓储管理_库存盘点_库存调拨
@物料与货位流水号 INT = NULL,
@物料流水号 INT = NULL,
@原货位流水号 INT = NULL,
@目标货位流水号 INT = NULL,
@调拨数量 FLOAT = NULL,
@原库存数 FLOAT = NULL,
@调拨备注 NVARCHAR(200) = NULL,
@操作者 INT = NULL,
@类型 NVARCHAR(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @当前库存 FLOAT;
DECLARE @目标库存 FLOAT;
DECLARE @调拨前原库存 FLOAT;
DECLARE @调拨后原库存 FLOAT;
DECLARE @调拨前目标库存 FLOAT;
DECLARE @调拨后目标库存 FLOAT;
DECLARE @目标物料与货位流水号 INT;
DECLARE @批次编号 NVARCHAR(50);
DECLARE @总库存 FLOAT;
DECLARE @错误 NVARCHAR(200);
IF ISNULL(@物料与货位流水号, 0) = 0
BEGIN
SELECT '0' AS result, N'原库存记录不能为空' AS msg;
RETURN;
END;
IF ISNULL(@目标货位流水号, 0) = 0
BEGIN
SELECT '0' AS result, N'目标库位不能为空' AS msg;
RETURN;
END;
IF ISNULL(@调拨数量, 0) <= 0
BEGIN
SELECT '0' AS result, N'调拨数量必须大于0' AS msg;
RETURN;
END;
IF ISNULL(@原货位流水号, 0) = ISNULL(@目标货位流水号, 0)
BEGIN
SELECT '0' AS result, N'目标库位不能与原库位相同' AS msg;
RETURN;
END;
BEGIN TRY
BEGIN TRANSACTION;
IF ISNULL(@类型, N'') = N'通用件'
BEGIN
SELECT
@当前库存 = ISNULL(货位存量, 0),
@物料流水号 = 产品流水号,
@原货位流水号 = 货位流水号
FROM dbo.库存管理_半成品与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE 物料与货位流水号 = @物料与货位流水号;
IF @物料流水号 IS NULL
BEGIN
RAISERROR(N'原库存记录不存在', 16, 1);
END;
IF @当前库存 < @调拨数量
BEGIN
RAISERROR(N'原库位库存不足', 16, 1);
END;
SET @调拨前原库存 = @当前库存;
SET @调拨后原库存 = @当前库存 - @调拨数量;
UPDATE dbo.库存管理_半成品与货位对照表
SET
货位存量 = @调拨后原库存,
盘点人编号 = @操作者,
盘点时间 = GETDATE()
WHERE 物料与货位流水号 = @物料与货位流水号;
SELECT
@目标物料与货位流水号 = 物料与货位流水号,
@目标库存 = ISNULL(货位存量, 0)
FROM dbo.库存管理_半成品与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE 产品流水号 = @物料流水号
AND 货位流水号 = @目标货位流水号;
SET @调拨前目标库存 = ISNULL(@目标库存, 0);
SET @调拨后目标库存 = @调拨前目标库存 + @调拨数量;
IF @目标物料与货位流水号 IS NULL
BEGIN
INSERT INTO dbo.库存管理_半成品与货位对照表
(产品流水号, 货位流水号, 货位存量, 盘点人编号, 盘点时间)
VALUES
(@物料流水号, @目标货位流水号, @调拨数量, @操作者, GETDATE());
SET @目标物料与货位流水号 = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo.库存管理_半成品与货位对照表
SET
货位存量 = @调拨后目标库存,
盘点人编号 = @操作者,
盘点时间 = GETDATE()
WHERE 物料与货位流水号 = @目标物料与货位流水号;
END;
SELECT @总库存 = SUM(ISNULL(货位存量, 0))
FROM dbo.库存管理_半成品与货位对照表
WHERE 产品流水号 = @物料流水号;
UPDATE dbo.库存管理_半成品累计库存
SET 累计库存 = @总库存
WHERE 产品流水号 = @物料流水号;
INSERT INTO dbo.库存盘点_修改记录
(物料与货位流水号, 产品流水号, 原数量, 更改后数量, 修改人)
VALUES
(@物料与货位流水号, @物料流水号, @调拨前原库存, @调拨后原库存, @操作者);
INSERT INTO dbo.库存盘点_调拨记录
(类型, 物料流水号, 原物料与货位流水号, 原货位流水号, 目标物料与货位流水号, 目标货位流水号, 调拨数量, 调拨前原库存, 调拨后原库存, 调拨前目标库存, 调拨后目标库存, 调拨备注, 操作人, 操作时间)
VALUES
(@类型, @物料流水号, @物料与货位流水号, @原货位流水号, @目标物料与货位流水号, @目标货位流水号, @调拨数量, @调拨前原库存, @调拨后原库存, @调拨前目标库存, @调拨后目标库存, @调拨备注, @操作者, GETDATE());
END
ELSE
BEGIN
SELECT
@当前库存 = ISNULL(货位存量, 0),
@物料流水号 = 物料流水号,
@原货位流水号 = 货位流水号,
@批次编号 = 批次号
FROM dbo.库存管理_物料与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE 物料与货位流水号 = @物料与货位流水号;
IF @物料流水号 IS NULL
BEGIN
RAISERROR(N'原库存记录不存在', 16, 1);
END;
IF @当前库存 < @调拨数量
BEGIN
RAISERROR(N'原库位库存不足', 16, 1);
END;
IF ISNULL(@批次编号, N'') = N''
BEGIN
SET @批次编号 = CONVERT(VARCHAR(10), GETDATE(), 23) + N'-PD' + CONVERT(NVARCHAR(50), @物料与货位流水号);
UPDATE dbo.库存管理_物料与货位对照表
SET 批次号 = @批次编号
WHERE 物料与货位流水号 = @物料与货位流水号;
END;
SET @调拨前原库存 = @当前库存;
SET @调拨后原库存 = @当前库存 - @调拨数量;
UPDATE dbo.库存管理_物料与货位对照表
SET
货位存量 = @调拨后原库存,
盘点人编号 = @操作者,
盘点时间 = GETDATE()
WHERE 物料与货位流水号 = @物料与货位流水号;
SELECT
@目标物料与货位流水号 = 物料与货位流水号,
@目标库存 = ISNULL(货位存量, 0)
FROM dbo.库存管理_物料与货位对照表 WITH (UPDLOCK, ROWLOCK)
WHERE 物料流水号 = @物料流水号
AND 货位流水号 = @目标货位流水号
AND ISNULL(采购合同明细流水号, 0) = 0
AND ISNULL(工艺计划流水号, 0) = 0;
SET @调拨前目标库存 = ISNULL(@目标库存, 0);
SET @调拨后目标库存 = @调拨前目标库存 + @调拨数量;
IF @目标物料与货位流水号 IS NULL
BEGIN
INSERT INTO dbo.库存管理_物料与货位对照表
(物料流水号, 货位流水号, 货位存量, 盘点人编号, 盘点时间, 批次号)
VALUES
(@物料流水号, @目标货位流水号, @调拨数量, @操作者, GETDATE(), @批次编号);
SET @目标物料与货位流水号 = SCOPE_IDENTITY();
END
ELSE
BEGIN
UPDATE dbo.库存管理_物料与货位对照表
SET
货位存量 = @调拨后目标库存,
盘点人编号 = @操作者,
盘点时间 = GETDATE()
WHERE 物料与货位流水号 = @目标物料与货位流水号;
END;
SELECT @总库存 = SUM(ISNULL(货位存量, 0))
FROM dbo.库存管理_物料与货位对照表
WHERE 物料流水号 = @物料流水号;
IF NOT EXISTS (
SELECT 1
FROM dbo.库存管理_外购件累计库存
WHERE 物料流水号 = @物料流水号
)
BEGIN
INSERT INTO dbo.库存管理_外购件累计库存
(物料流水号, 累计库存)
VALUES
(@物料流水号, @总库存);
END
ELSE
BEGIN
UPDATE dbo.库存管理_外购件累计库存
SET 累计库存 = @总库存
WHERE 物料流水号 = @物料流水号;
END;
INSERT INTO dbo.库存盘点_修改记录
(物料与货位流水号, 物料流水号, 原数量, 更改后数量, 修改人)
VALUES
(@物料与货位流水号, @物料流水号, @调拨前原库存, @调拨后原库存, @操作者);
INSERT INTO dbo.库存盘点_调拨记录
(类型, 物料流水号, 原物料与货位流水号, 原货位流水号, 目标物料与货位流水号, 目标货位流水号, 调拨数量, 调拨前原库存, 调拨后原库存, 调拨前目标库存, 调拨后目标库存, 调拨备注, 操作人, 操作时间)
VALUES
(@类型, @物料流水号, @物料与货位流水号, @原货位流水号, @目标物料与货位流水号, @目标货位流水号, @调拨数量, @调拨前原库存, @调拨后原库存, @调拨前目标库存, @调拨后目标库存, @调拨备注, @操作者, GETDATE());
END;
COMMIT TRANSACTION;
SELECT
'1' AS result,
N'调拨成功' AS msg,
@物料与货位流水号 AS 原物料与货位流水号,
@目标物料与货位流水号 AS 目标物料与货位流水号,
@调拨前原库存 AS 调拨前原库存,
@调拨后原库存 AS 调拨后原库存,
@调拨前目标库存 AS 调拨前目标库存,
@调拨后目标库存 AS 调拨后目标库存;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SET @错误 = ERROR_MESSAGE();
SELECT
'0' AS result,
@错误 AS msg;
END CATCH;
END
GO

View File

@@ -0,0 +1,156 @@
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