CREATE PROC [dbo].[PL_CHECK_ROLE_UPDATE] @p_REQ_ID varchar(15) = NULL, @p_USER_LOGIN varchar(15) = NULL, @TYPE VARCHAR(15) = NULL, @REF_ID VARCHAR(15) = NULL AS BEGIN TRANSACTION IF (@TYPE = 'TTCT') BEGIN -- Nếu tìm thấy IF (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID AND AUTH_STATUS <> 'E' AND AUTH_STATUS <> 'R')) BEGIN ROLLBACK TRANSACTION SELECT '1' as Result, '' ErrorDesc RETURN '1' END END ELSE IF (@TYPE = 'TTCT-DVCM') BEGIN DECLARE @DVDM_ID VARCHAR(15) = ( SELECT pc.DVDM_ID FROM TL_USER tu LEFT JOIN PL_COSTCENTER_DT pcd ON tu.SECUR_CODE = pcd.DEP_ID AND tu.TLSUBBRID = pcd.BRANCH_ID LEFT JOIN PL_COSTCENTER pc O N pcd.COST_ID = pc.COST_ID LEFT JOIN CM_DVDM cd ON pc.DVDM_ID = cd.DVDM_ID WHERE tu.TLNANME = @p_USER_LOGIN AND cd.IS_DVDM = 1 ) DECLARE @p_REF_ID VARCHAR(10) = ( SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS = 'C' AND DVDM_ID = @DVDM_ID ) -- Đã xác nhận và đã gửi phê duyệt IF (EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND TLNAME = @p_USER_LOGIN and STATUS_JOB = 'P' AND PROCESS_ID = @p_REF_ID)) BEGIN ROLLBACK TRANSACTION SELECT '1' as Result, '' ErrorDesc,'1' SendApprove RETURN '1' END END COMMIT TRANSACTION SELECT '0' as Result, '' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' ErrorDesc RETURN '-1' End