ALTER PROCEDURE [dbo].[TR_CONTRACT_Del] @p_CONTRACT_ID varchar(15) AS DECLARE @sErrorCode VARCHAR(20) = '', @PDNTT_CODE_LIST VARCHAR(1000), @PDNTT_TAM_UNG_LST VARCHAR(1000) --Neu ton tai PO NÀO ĐÓ da link den HỢP ĐỒNG nay IF EXISTS(SELECT * FROM TR_PO_MASTER A WHERE A.CONTRACT_ID = @p_CONTRACT_ID) BEGIN SET @sErrorCode = 'TRC-00001' END IF NOT EXISTS (SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID) BEGIN SET @sErrorCode = 'TRC-00002' END IF @sErrorCode <> '' BEGIN SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @sErrorCode RETURN '-1' END BEGIN TRANSACTION IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID AND AUTH_STATUS NOT IN ('E','R'))) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã được gửi phê duyệt. Bạn chỉ được phép xóa bản nháp!' AS ErrorDesc RETURN '-1' END --IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID AND AUTH_STATUS ='A')) --BEGIN -- ROLLBACK TRANSACTION -- SELECT '-1' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã được phê duyệt trước đó. Bạn chỉ được phép cập nhật thông tin hợp đồng!' AS ErrorDesc -- RETURN '-1' --END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A')) ) BEGIN ROLLBACK TRANSACTION SET @PDNTT_TAM_UNG_LST = (select STUFF( (select '; ' + ISNULL(DTA.REQ_PAY_CODE,DTA.REQ_PAY_ID) FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID) AND AUTH_STATUS_KT = 'A' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) SELECT '-1' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã có phiếu đề nghị tạm ứng: ' +ISNULL(@PDNTT_TAM_UNG_LST,'')+N' sử dụng và KSV đã phê duyệt. Vì vậy bạn không được phép xóa' AS ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT ='A')) ) BEGIN SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + ISNULL(DTA.REQ_PAY_CODE,DTA.REQ_PAY_ID) FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID) AND AUTH_STATUS_KT = 'A' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã có phiếu đề nghị thanh toán: '+ISNULL(@PDNTT_CODE_LIST,'')+N' sử dụng và KSV đã phê duyệt. Vì vậy bạn không được phép xóa' AS ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT <> 'A')) ) BEGIN SET @PDNTT_TAM_UNG_LST = (select STUFF( (select '; ' + ISNULL(DTA.REQ_PAY_CODE,DTA.REQ_PAY_ID) FROM TR_REQ_ADVANCE_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID) AND AUTH_STATUS_KT <> 'A' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã có phiếu đề nghị tạm ứng sử dụng. Vui lòng hủy các phiếu: ' + ISNULL(@PDNTT_TAM_UNG_LST,'') AS ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID AND REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_PAYMENT WHERE AUTH_STATUS_KT <> 'A')) ) BEGIN SET @PDNTT_CODE_LIST = (select STUFF( (select '; ' + ISNULL(DTA.REQ_PAY_CODE,DTA.REQ_PAY_ID) FROM TR_REQ_PAYMENT DTA WHERE REQ_PAY_ID IN (SELECT REQ_PAY_ID FROM TR_REQ_ADVANCE_DT WHERE REF_ID =@p_CONTRACT_ID) AND AUTH_STATUS_KT <> 'A' FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')) ROLLBACK TRANSACTION SELECT '-1' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã có phiếu đề nghị thanh toán sử dụng. Vui lòng hủy các phiếu: ' + ISNULL(@PDNTT_CODE_LIST,'') AS ErrorDesc RETURN '-1' END IF((SELECT A.AUTH_STATUS FROM TR_PO_MASTER A WHERE A.CONTRACT_ID = @p_CONTRACT_ID) = 'A') BEGIN UPDATE TR_CONTRACT SET RECORD_STATUS = '0' WHERE CONTRACT_ID = @p_CONTRACT_ID UPDATE TR_CONTRACT_DT SET RECORD_STATUS = '0' WHERE CONTRACT_ID = @p_CONTRACT_ID UPDATE TR_CONTRACT_PAYMENT SET RECORD_STATUS = '0' WHERE CONTRACT_ID = @p_CONTRACT_ID END ELSE BEGIN --DELETE FROM TR_CONTRACT Where CONTRACT_ID = @p_CONTRACT_ID --DELETE FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @p_CONTRACT_ID --DELETE FROM TR_CONTRACT_PAYMENT WHERE CONTRACT_ID = @p_CONTRACT_ID UPDATE TR_CONTRACT SET RECORD_STATUS = '0' WHERE CONTRACT_ID = @p_CONTRACT_ID UPDATE TR_CONTRACT_DT SET RECORD_STATUS = '0' WHERE CONTRACT_ID = @p_CONTRACT_ID UPDATE TR_CONTRACT_PAYMENT SET RECORD_STATUS = '0' WHERE CONTRACT_ID = @p_CONTRACT_ID END COMMIT TRANSACTION SELECT '0' as Result, N'Hợp đồng có số ID: '+@p_CONTRACT_ID +N' đã được xóa khỏi hệ thống!' AS ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End