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
|
|