85 lines
2.4 KiB
Transact-SQL
85 lines
2.4 KiB
Transact-SQL
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 < 20;
|
|
|
|
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',
|
|
tray_code = NULL
|
|
WHERE cargo_space_id = @v_cargo_space_id
|
|
OR (tray_code = @v_tray_code AND status = '3');
|
|
|
|
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 < 20;
|
|
|
|
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
|