ALTER PROCEDURE [dbo].[TR_CONTRACT_App] @p_CONTRACT_ID VARCHAR(15), @p_AUTH_STATUS varchar(50) = NULL, @p_CHECKER_ID varchar(12) = NULL, @p_APPROVE_DT VARCHAR(20) = NULL AS BEGIN BEGIN TRANSACTION DECLARE @ROLE_ID VARCHAR(50) SET @ROLE_ID =(SELECT RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER WHERE TLNANME =@p_CHECKER_ID) IF(@ROLE_ID IS NOT NULL AND @ROLE_ID <>'' AND @ROLE_ID IN ('TPGD','GDDV','PGD','PTGD','TGD','HDQT','TP','PP','TBP','KTT','GDK','KSV','TC','NVTC','TPTC','PPGD')) BEGIN PRINT @ROLE_ID END ELSE BEGIN SET @ROLE_ID =(SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID) IF(@ROLE_ID IS NULL OR @ROLE_ID ='') BEGIN SET @ROLE_ID =(SELECT TOP 1 ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =(SELECT TOP 1 ROLENAME FROM TL_USER WHERE TLNANME=@p_CHECKER_ID)) END END IF(@ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TBP','TP','PP','TPTC','TC','GDK')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_CONTRACT_ID CONTRACT_ID, N'Bạn không nằm trong nhóm quyền được phép phê duyệt hợp đồng' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID AND AUTH_STATUS ='R')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_CONTRACT_ID CONTRACT_ID, N'Hợp đồng đang bị trả về! Vui lòng đợi nhân viên xử lý và gửi phê duyệt lại' ErrorDesc RETURN '-1' END IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID AND AUTH_STATUS ='E')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_CONTRACT_ID CONTRACT_ID, N'Hợp đồng đang lưu nháp! Vui lòng đợi nhân viên xử lý và gửi phê duyệt lại' 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, @p_CONTRACT_ID CONTRACT_ID, N'Hợp đồng này đã được phê duyệt trước đó. Bạn không được phê duyệt lại' ErrorDesc RETURN '-1' END IF((SELECT MAKER_ID FROM TR_CONTRACT WHERE CONTRACT_ID =@p_CONTRACT_ID)=@p_CHECKER_ID AND @ROLE_ID NOT IN ('TPGD','PPGD','PP','TP','GDDV','PGD','KTT','TP','PP','TPTC','TC','GDK')) BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, @p_CONTRACT_ID CONTRACT_ID, N'Người duyệt hợp đồng phải khác người tạo hợp đồng' ErrorDesc RETURN '-1' END --insert master UPDATE TR_CONTRACT SET [AUTH_STATUS] = 'A',[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103) WHERE CONTRACT_ID= @p_CONTRACT_ID IF @@Error <> 0 GOTO ABORT PRINT 'UPDATE MASTER SUCCESS' -- INSERT VAO LOG INSERT INTO dbo.PL_PROCESS ( REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC,NOTES ) VALUES ( @p_CONTRACT_ID, -- REQ_ID - varchar(15) 'APP', -- PROCESS_ID - varchar(10) @p_CHECKER_ID, -- CHECKER_ID - varchar(15) GETDATE(), -- APPROVE_DT - datetime N'Phê duyệt hợp đồng thành công' ,N'Phê duyệt hợp đồng') --insert asset detail tương đương như NỘI DUNG trong bảng contract detail COMMIT TRANSACTION SELECT '0' as Result, @P_CONTRACT_ID CONTRACT_ID, N'Hợp đồng có ID: '+@p_CONTRACT_ID+N' đã được phê duyệt thành công. Bạn có thể thực hiện thanh toán hoặc tạm ứng cho hợp đồng' ErrorDesc RETURN '0' ABORT: BEGIN ROLLBACK TRANSACTION SELECT '-1' as Result, '' CONTRACT_ID, ERROR_MESSAGE() ErrorDesc RETURN '-1' End END