Project

General

Profile

FIX_TO_TRINH THANH LY.txt

Luc Tran Van, 06/17/2025 03:32 PM

 
1
SET QUOTED_IDENTIFIER ON
2
SET ANSI_NULLS ON
3
GO
4
ALTER PROCEDURE dbo.ASS_PLAN_REQUEST_LIQUID_MASTER_SendApprove
5
@p_REQ_ID	VARCHAR(15)  = NULL,
6
@p_USER_LOGIN   VARCHAR(150) = NULL
7
AS
8
BEGIN TRANSACTION
9
	DECLARE @NOTIFATION NVARCHAR(200) = N'Hồ sơ số: '+ (SELECT REQ_CODE FROM ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID = @p_REQ_ID) + N' đã được gửi phê duyệt thành công'
10

    
11
    DECLARE @PARENT_ID VARCHAR(20) = '', @IS_MED_APP VARCHAR(20) = '', @BRANCH_ID VARCHAR(20) = '', @DEP_ID VARCHAR(20) = '',
12
	@PROCESS_CHILD_CUR VARCHAR(10) --Process id trả về để store gửi mail biết đây là bước xử lý của ai khi điều phối
13
    DECLARE @ROLE_USER VARCHAR(20)
14

    
15
    SELECT @BRANCH_ID = BRANCH_ID, @DEP_ID = DEP_ID FROM ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID = @p_REQ_ID
16
    SET @PARENT_ID = (SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE STATUS = 'C' AND REQ_ID = @p_REQ_ID)
17
    
18
    IF @PARENT_ID = 'APPROVE'
19
  	BEGIN
20
  		ROLLBACK TRANSACTION
21
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin tờ trình thanh lý phiếu số: '+@p_REQ_ID+
22
  							N' đã được phê duyệt' ErrorDesc
23
  		RETURN '-1'
24
  	END
25
-- XỬ LÝ CHO BƯỚC GỬI DUYỆT CẤP ĐƠN VỊ
26
IF NOT EXISTS(SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS WHERE STATUS = 'C' AND REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DVCM_DP')
27
BEGIN
28
	IF(EXISTS(SELECT 1 FROM dbo.ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='R'))
29
  	BEGIN
30
  		ROLLBACK TRANSACTION
31
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin tờ trình thanh lý phiếu số: '+@p_REQ_ID+
32
  							N' đang bị từ chối. Vui lòng xử lý phiếu' ErrorDesc
33
  		RETURN '-1'
34
  	END
35
	IF(EXISTS(SELECT 1 FROM dbo.ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='A'))
36
  	BEGIN
37
  		ROLLBACK TRANSACTION
38
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin tờ trình thanh lý phiếu số: '+@p_REQ_ID+
39
  							N' đã được duyệt' ErrorDesc
40
  		RETURN '-1'
41
  	END
42
	IF(EXISTS(SELECT 1 FROM dbo.ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS='U'))
43
  	BEGIN
44
  		ROLLBACK TRANSACTION
45
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin tờ trình thanh lý phiếu số: '+@p_REQ_ID+
46
  							N' đã được gửi duyệt' ErrorDesc
47
  		RETURN '-1'
48
  	END
49

    
50
-- START: QUY TRINH XU LY TO TRINH
51
	INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
52
	VALUES(@p_REQ_ID, 'SEND', @p_USER_LOGIN, GETDATE(), N'Người tạo gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
53
    
54
    DELETE PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'MED_APP'
55
    UPDATE PL_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_USER_LOGIN, APPROVE_DT = GETDATE() WHERE STATUS = 'C' AND REQ_ID = @p_REQ_ID
56

    
57
    IF EXISTS(SELECT 1 FROM ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID = @p_REQ_ID AND ISNULL(USER_APPROVAL,'')<>'')
58
    BEGIN
59
          SELECT @ROLE_USER = RoleName FROM TL_USER WHERE TLNANME =(SELECT USER_APPROVAL FROM ASS_PLAN_REQUEST_LIQUID_MASTER WHERE REQ_ID = @p_REQ_ID)
60
        	INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID,DEP_ID, CHECKER_ID, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES)
61
        	VALUES (@p_REQ_ID, 'MED_APP', 'C', @ROLE_USER, @BRANCH_ID,@DEP_ID, '', @PARENT_ID, 'N', '', '', N'Chờ cấp phê duyệt trung gian phê duyệt')
62
            
63
        	UPDATE ASS_PLAN_REQUEST_LIQUID_MASTER SET AUTH_STATUS = 'W' WHERE REQ_ID = @p_REQ_ID; IF @@ERROR <> 0 GOTO ABORT
64
    END
65
    ELSE BEGIN
66
			SET @ROLE_USER = IIF(EXISTS(SELECT 1 FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID AND BRANCH_TYPE = 'PDG'),'TPGD','GDDV')
67
            INSERT INTO PL_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, BRANCH_ID, DEP_ID, PARENT_PROCESS_ID, IS_LEAF, COST_ID, DVDM_ID, NOTES)
68
        	VALUES (@p_REQ_ID, 'HC_APP', 'C', @ROLE_USER, @BRANCH_ID, @DEP_ID, @PARENT_ID, 'N', '', '', N'Chờ trưởng đơn vị phê duyệt')
69

    
70
        	UPDATE ASS_PLAN_REQUEST_LIQUID_MASTER SET AUTH_STATUS = 'U' WHERE REQ_ID = @p_REQ_ID; IF @@ERROR <> 0 GOTO ABORT
71
         END
72
-- END: QUY TRINH XU LY TO TRINH
73
END
74
ELSE -- XỬ LÝ CHO BƯỚC GỬI DUYỆT CẤP ĐIỀU PHỐI
75
BEGIN
76
    IF NOT EXISTS(SELECT TOP 1 PROCESS_ID FROM PL_REQUEST_PROCESS_CHILD WHERE STATUS_JOB = 'C' AND REQ_ID = @p_REQ_ID AND TLNAME = @p_USER_LOGIN)
77
  	BEGIN
78
  		ROLLBACK TRANSACTION
79
  		SELECT '-1' Result, N'Thao tác thất bại! Bạn không có quyền thao tác phiếu ở bước này' ErrorDesc
80
  		RETURN '-1'
81
  	END
82

    
83
    DECLARE @PROCESS_CHILD_CUR_LEVEL INT
84
    SELECT TOP 1 @PROCESS_CHILD_CUR = PROCESS_ID, @PROCESS_CHILD_CUR_LEVEL = LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND TLNAME = @p_USER_LOGIN AND STATUS_JOB = 'C'
85

    
86
    DECLARE @PROCESS_CHILD_PAR INT, @PROCESS_CHILD_PAR_LEVEL INT
87
    SELECT TOP 1 @PROCESS_CHILD_PAR = ID, @PROCESS_CHILD_PAR_LEVEL = LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_CHILD_CUR AND LEVEL_JOB = @PROCESS_CHILD_CUR_LEVEL-1
88
    
89
    -- KIỂM TRA ĐÚNG PHẦN XỬ LÝ THÌ CHO PHÉP GỬI DUYỆT
90
    DECLARE @PROCESS_DVDM VARCHAR(20) SELECT TOP 1 @PROCESS_DVDM = DVDM_ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND ID = @PROCESS_CHILD_CUR
91
    IF NOT EXISTS(SELECT 1 FROM ASS_PLAN_REQUEST_LIQUID_DVCM WHERE REQ_ID = @p_REQ_ID AND DVCM_ID = @PROCESS_DVDM AND ISNULL(CONTENT, '') <> '')
92
  	BEGIN
93
  		ROLLBACK TRANSACTION
94
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin tờ trình thanh lý phiếu số: '+@p_REQ_ID+
95
  							N' chưa nhập nội dung tham vấn đơn vị chuyên môn' ErrorDesc
96
  		RETURN '-1'
97
  	END
98

    
99
    IF ISNULL(@PROCESS_CHILD_CUR,'') = '' OR @PROCESS_CHILD_CUR = 'APPROVE'
100
  	BEGIN
101
  		ROLLBACK TRANSACTION
102
  		SELECT '-1' Result, N'Gửi duyệt thất bại! Thông tin tờ trình thanh lý phiếu số: '+@p_REQ_ID+
103
  							N' chưa đến bước xử lý hoặc đã được gửi duyệt' ErrorDesc
104
  		RETURN '-1'
105
  	END
106

    
107
	INSERT INTO dbo.PL_PROCESS(REQ_ID, PROCESS_ID, CHECKER_ID, APPROVE_DT, PROCESS_DESC, NOTES)
108
	VALUES(@p_REQ_ID, 'DVCM_SEND', @p_USER_LOGIN, GETDATE(), N'Nhân viên DVCM gửi phê duyệt thành công', N'Nhân viên gửi phê duyệt')
109

    
110
    UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB = 'P' WHERE STATUS_JOB = 'C' AND REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_CHILD_CUR AND LEVEL_JOB = @PROCESS_CHILD_CUR_LEVEL
111
    UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB = 'C' WHERE STATUS_JOB = 'U' AND REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_CHILD_CUR AND LEVEL_JOB = @PROCESS_CHILD_PAR_LEVEL AND ID = @PROCESS_CHILD_PAR
112

    
113
END
114
	IF @@ERROR <> 0 GOTO ABORT
115

    
116
COMMIT TRANSACTION   
117
SELECT '0' as Result, ISNULL(@PROCESS_CHILD_CUR, '0') ProcessId, @NOTIFATION  ErrorDesc
118
RETURN '0'
119

    
120
ABORT:
121
BEGIN
122
	ROLLBACK TRANSACTION
123
	SELECT '-1' as Result, '' REQ_ID, '' ErrorDesc
124
	RETURN '-1'
125
END
126
--17062025_SECRETKEY
127