更新工序工价、库存查询、库位、领料、出库明细、入库等仓储模块,新增采购合同入库单移动端设计及SQL脚本
This commit is contained in:
139
sql/车间生产管理工艺_零件工序_取消派工_加固.sql
Normal file
139
sql/车间生产管理工艺_零件工序_取消派工_加固.sql
Normal file
@@ -0,0 +1,139 @@
|
||||
ALTER PROCEDURE [dbo].[车间生产管理工艺_零件工序_取消派工]
|
||||
@工艺任务流水号 INT = NULL,
|
||||
@工序流水号 INT = NULL,
|
||||
@数量 INT = NULL,
|
||||
@退货人 INT = NULL,
|
||||
@订单流水号 INT = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @工艺计划流水号 INT;
|
||||
DECLARE @任务数量 FLOAT;
|
||||
DECLARE @加工数量 INT;
|
||||
DECLARE @是否加工中 INT;
|
||||
DECLARE @工序顺序 INT;
|
||||
DECLARE @图号 NVARCHAR(50);
|
||||
DECLARE @物料名称 NVARCHAR(50);
|
||||
DECLARE @物料流水号 INT;
|
||||
DECLARE @出库记录流水号 INT;
|
||||
DECLARE @匹配出库记录数 INT;
|
||||
DECLARE @n INT = 0;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
SELECT
|
||||
@任务数量 = 数量,
|
||||
@加工数量 = ISNULL(加工数量, 0),
|
||||
@是否加工中 = ISNULL(是否加工中, 0)
|
||||
FROM dbo.车间生产管理工艺_零件工序_任务分配 WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE 工艺任务流水号 = @工艺任务流水号
|
||||
AND 工序流水号 = @工序流水号;
|
||||
|
||||
IF @任务数量 IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'派工任务不存在或已取消', 16, 1);
|
||||
END;
|
||||
|
||||
IF @加工数量 > 0 OR @是否加工中 > 0
|
||||
BEGIN
|
||||
RAISERROR(N'零件已加工或加工中,不能取消派工', 16, 1);
|
||||
END;
|
||||
|
||||
IF ISNULL(@任务数量, 0) <= 0
|
||||
BEGIN
|
||||
RAISERROR(N'派工数量异常,不能取消派工', 16, 1);
|
||||
END;
|
||||
|
||||
SELECT
|
||||
@工艺计划流水号 = 工艺计划流水号,
|
||||
@工序顺序 = 工序顺序
|
||||
FROM dbo.车间生产管理工艺_零件工序
|
||||
WHERE 工序流水号 = @工序流水号;
|
||||
|
||||
IF @工序顺序 = 1
|
||||
BEGIN
|
||||
SELECT
|
||||
@图号 = RTRIM(LTRIM(零件图号)) + N'MP',
|
||||
@物料名称 = 零件名称 + N'MP'
|
||||
FROM dbo.车间生产管理_零件工艺计划_视图
|
||||
WHERE 工艺计划流水号 = @工艺计划流水号;
|
||||
|
||||
SELECT @物料流水号 = 物料流水号
|
||||
FROM dbo.库存管理_物料主文件_基本
|
||||
WHERE RTRIM(LTRIM(代号)) = @图号
|
||||
AND RTRIM(LTRIM(名称)) = @物料名称
|
||||
AND ISNULL(是否禁用, 0) = 0;
|
||||
|
||||
IF @物料流水号 IS NOT NULL
|
||||
BEGIN
|
||||
SELECT
|
||||
@匹配出库记录数 = COUNT(*),
|
||||
@出库记录流水号 = MAX(出库记录流水号)
|
||||
FROM dbo.库存管理_物料出库_出库记录 WITH (UPDLOCK, HOLDLOCK)
|
||||
WHERE 物料流水号 = @物料流水号
|
||||
AND 订单流水号 = @订单流水号
|
||||
AND ISNULL(出库数量, 0) - ISNULL(退料数量, 0) >= @任务数量;
|
||||
|
||||
IF ISNULL(@匹配出库记录数, 0) > 1
|
||||
BEGIN
|
||||
RAISERROR(N'同一订单同一毛坯存在多条可退出库记录,请先人工确认出库记录', 16, 1);
|
||||
END;
|
||||
|
||||
IF ISNULL(@匹配出库记录数, 0) = 1
|
||||
BEGIN
|
||||
EXEC dbo.仓储管理_退料入库_执行
|
||||
@出库记录流水号 = @出库记录流水号,
|
||||
@退料数量 = @任务数量,
|
||||
@退料人 = @退货人;
|
||||
END;
|
||||
END;
|
||||
END;
|
||||
|
||||
UPDATE dbo.车间生产管理工艺_零件工序
|
||||
SET 已分配数 = ISNULL(已分配数, 0) - @任务数量
|
||||
WHERE 工序流水号 = @工序流水号
|
||||
AND ISNULL(已分配数, 0) >= @任务数量;
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
BEGIN
|
||||
RAISERROR(N'工序已分配数不足,取消派工失败', 16, 1);
|
||||
END;
|
||||
|
||||
DELETE FROM dbo.车间生产管理工艺_零件工序_任务分配
|
||||
WHERE 工艺任务流水号 = @工艺任务流水号
|
||||
AND 工序流水号 = @工序流水号;
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
BEGIN
|
||||
RAISERROR(N'派工任务删除失败', 16, 1);
|
||||
END;
|
||||
|
||||
SELECT @n = COUNT(*)
|
||||
FROM dbo.车间生产管理工艺_零件工序_任务分配
|
||||
WHERE 工序流水号 IN
|
||||
(
|
||||
SELECT 工序流水号
|
||||
FROM dbo.车间生产管理工艺_零件工序
|
||||
WHERE 工艺计划流水号 = @工艺计划流水号
|
||||
);
|
||||
|
||||
IF @n = 0
|
||||
BEGIN
|
||||
UPDATE dbo.车间生产管理工艺_零件工艺计划
|
||||
SET 分配日期 = NULL
|
||||
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;
|
||||
Reference in New Issue
Block a user