更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本
This commit is contained in:
392
sql/仓储管理_入库退货同步盘点库存.sql
Normal file
392
sql/仓储管理_入库退货同步盘点库存.sql
Normal 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
|
||||
283
sql/仓储管理_库存盘点_库存调拨.sql
Normal file
283
sql/仓储管理_库存盘点_库存调拨.sql
Normal 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
|
||||
156
sql/移除物料标准库位维护.sql
Normal file
156
sql/移除物料标准库位维护.sql
Normal 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
|
||||
Reference in New Issue
Block a user