feat: 打通出库作业链路
This commit is contained in:
85
sql/proc_hand_delete_in_job.sql
Normal file
85
sql/proc_hand_delete_in_job.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
IF OBJECT_ID(N'[dbo].[proc_hand_delete_in_job]', N'P') IS NOT NULL
|
||||
DROP PROCEDURE [dbo].[proc_hand_delete_in_job]
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE [dbo].[proc_hand_delete_in_job]
|
||||
@v_job_id varchar(80),
|
||||
@v_result int OUTPUT,
|
||||
@v_resultmsg varchar(500) OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @v_tray_code varchar(255);
|
||||
DECLARE @v_cargo_space_id varchar(80);
|
||||
|
||||
BEGIN TRY
|
||||
IF @v_job_id IS NULL OR LTRIM(RTRIM(@v_job_id)) = ''
|
||||
BEGIN
|
||||
SET @v_result = 0;
|
||||
SET @v_resultmsg = '作业ID不能为空';
|
||||
RETURN;
|
||||
END
|
||||
|
||||
SELECT TOP 1
|
||||
@v_tray_code = tray_code,
|
||||
@v_cargo_space_id = cargo_space_id
|
||||
FROM dbo.mydo_job
|
||||
WHERE job_id = @v_job_id
|
||||
AND in_or_out = 1;
|
||||
|
||||
IF @v_tray_code IS NULL AND @v_cargo_space_id IS NULL
|
||||
BEGIN
|
||||
SET @v_result = 0;
|
||||
SET @v_resultmsg = '未找到对应入库作业';
|
||||
RETURN;
|
||||
END
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
;WITH detail_qty AS (
|
||||
SELECT
|
||||
COALESCE(NULLIF(stockin_detail_id, ''), NULLIF(in_or_out_d_id, '')) AS stockin_detail_id,
|
||||
SUM(ISNULL(in_quantity, 0)) AS rollback_qty
|
||||
FROM dbo.mydo_job_detail
|
||||
WHERE job_id = @v_job_id
|
||||
AND COALESCE(NULLIF(stockin_detail_id, ''), NULLIF(in_or_out_d_id, '')) IS NOT NULL
|
||||
GROUP BY COALESCE(NULLIF(stockin_detail_id, ''), NULLIF(in_or_out_d_id, ''))
|
||||
)
|
||||
UPDATE d
|
||||
SET d.scan_num = CASE
|
||||
WHEN ISNULL(d.scan_num, 0) - q.rollback_qty < 0 THEN 0
|
||||
ELSE ISNULL(d.scan_num, 0) - q.rollback_qty
|
||||
END
|
||||
FROM dbo.in_stockin_detail d
|
||||
INNER JOIN detail_qty q ON d.stockin_detail_id = q.stockin_detail_id;
|
||||
|
||||
UPDATE dbo.bas_cargo_space
|
||||
SET status = '1',
|
||||
locked = 'N',
|
||||
tray_code = NULL
|
||||
WHERE cargo_space_id = @v_cargo_space_id
|
||||
OR (tray_code = @v_tray_code AND status = '3' AND locked = 'Y');
|
||||
|
||||
DELETE FROM dbo.mydo_job_detail
|
||||
WHERE job_id = @v_job_id;
|
||||
|
||||
DELETE FROM dbo.mydo_job
|
||||
WHERE job_id = @v_job_id
|
||||
AND in_or_out = 1;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SET @v_result = 10;
|
||||
SET @v_resultmsg = '入库作业已作废';
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0
|
||||
ROLLBACK TRANSACTION;
|
||||
|
||||
SET @v_result = 0;
|
||||
SET @v_resultmsg = ERROR_MESSAGE();
|
||||
END CATCH
|
||||
END
|
||||
GO
|
||||
Reference in New Issue
Block a user