Project

General

Profile

2.1 PL REQ PROCESS CHILD APPR.txt

Luc Tran Van, 10/19/2022 11:32 PM

 
1
ALTER   PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App]
2
@p_REQ_ID VARCHAR(20),
3
@p_PROCESS_ID VARCHAR(20),
4
@p_TLNAME VARCHAR(20),
5
@p_MAKER_ID VARCHAR(20),
6
@p_TYPE_JOB VARCHAR(20),
7
@p_PROCESS_DES NVARCHAR(MAX),
8
@p_REF_ID INT,
9
@p_IS_AUTHORITY bit
10
AS
11
BEGIN TRANSACTION
12
DECLARE @IS_AUTH_HDQT_NOTES NVARCHAR(6), @IS_AUTHORITY_HDQT VARCHAR(1),@IS_NEXT_HDQT BIT
13
SET @IS_AUTHORITY_HDQT='N'
14
IF(RIGHT(@p_PROCESS_DES,7)=N'KTMHĐQT')
15
BEGIN
16
	SET @IS_AUTHORITY_HDQT='Y'
17
	SET @IS_AUTH_HDQT_NOTES=N''
18
	SET @p_PROCESS_DES = LEFT(@p_PROCESS_DES, LEN(@p_PROCESS_DES)-7)
19
END
20
IF(RIGHT(@p_PROCESS_DES,6)=N'TMHĐQT')
21
BEGIN
22
	SET @IS_AUTHORITY_HDQT='Y'
23
	SET @IS_AUTH_HDQT_NOTES=N'TMHĐQT'
24
	SET @p_PROCESS_DES = LEFT(@p_PROCESS_DES, LEN(@p_PROCESS_DES)-6)
25
END
26
--- LUCTV 20102022: NEU TO TRINH DIEU CHUYEN <=10 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
27
DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
28
SET @TOTAL_AMT_TRANSFER =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID)
29
---END LUCTV
30
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
31
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
32
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
33
BEGIN
34
	ROLLBACK TRANSACTION
35
	SELECT -1 as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang bị từ chối. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt lại!' ErrorDesc
36
	RETURN -1
37
END
38
--- LUCTV 13042021 KIEM TRA NEU LA CAP TKTGD : CO THE DUYET BAT CU LUC NAO, KO CAN PHAI THONG QUA DIEU PHOI
39
DECLARE @ROLE_USER_VP VARCHAR(15)
40
-- KHAI BAO THEM ROLE NHAN UY QUYEN
41
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
42
SET @ROLE_USER_VP = (SELECT ROLENAME FROM TL_USER WHERE TLNANME =@p_MAKER_ID)
43
INSERT INTO @TABLE_ROLE SELECT @ROLE_USER_VP
44
INSERT INTO @TABLE_ROLE SELECT ROLE_NEW FROM TL_SYS_ROLE_MAPPING WHERE ROLE_OLD =@ROLE_USER_VP AND 
45
(CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) AND CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR (EFF_DATE IS NULL OR EXP_DATE IS NULL))
46
 --KIEM TRA NEU DANG CHO TKTGD
47
IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TKTGD' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1))
48
BEGIN
49
	IF(@ROLE_USER_VP IN (@ROLE_USER_VP))
50
	BEGIN
51
		SET @p_REF_ID =(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TKTGD' AND STATUS ='C')
52
		IF @p_REF_ID IS NULL OR @p_REF_ID =''
53
		BEGIN
54
			ROLLBACK TRANSACTION  
55
			SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của Văn Phòng Thư Ký TGĐ. Vui lòng đợi quy trình!' ErrorDesc  
56
			RETURN -1 
57
		END
58
		ELSE
59
		BEGIN
60
			UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Thư Ký TGĐ đã duyệt' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
61
			-- LAY REF ID CUA TGD
62
			SET @p_REF_ID = (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TGD')
63
			UPDATE PL_REQUEST_PROCESS SET STATUS ='C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
64
			UPDATE PL_REQUEST_DOC SET PROCESS_ID ='TGD' WHERE REQ_ID =@p_REQ_ID
65
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_ID
66
			--IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE ISNULL(TK_TGD_NOTES,'') ='' AND REQ_ID =@p_REQ_ID))
67
			--BEGIN
68
			--	UPDATE PL_REQUEST_DOC SET TK_TGD_NOTES =@p_PROCESS_DES WHERE REQ_ID =@p_REQ_ID
69
			--END
70
			UPDATE PL_REQUEST_DOC SET TK_TGD_NOTES =@p_PROCESS_DES WHERE REQ_ID =@p_REQ_ID
71
			--- INSERT VAO LOG
72
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,
73
			N'Thư Ký TGD đã phê duyệt')
74
			------
75
			COMMIT TRANSACTION
76
			SELECT 0 as Result, 
77
				N'Thư ký TGĐ đã phê duyệt thành công' ErrorDesc
78
			RETURN 0
79
		END
80
	END
81
END
82
ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) ='TKHDQT' AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C' AND LEVEL_JOB = 1))
83
BEGIN
84
	IF(@ROLE_USER_VP IN (@ROLE_USER_VP))
85
	BEGIN
86
		SET @p_REF_ID =(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='TKHDQT' AND STATUS ='C')
87
		IF @p_REF_ID IS NULL OR @p_REF_ID =''
88
		BEGIN
89
			ROLLBACK TRANSACTION  
90
			SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của Văn Phòng Thư Ký HĐQT. Vui lòng đợi quy trình!' ErrorDesc  
91
			RETURN -1 
92
		END
93
		ELSE
94
		BEGIN
95
			UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Văn phòng HĐQT đã duyệt' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
96
			-- LAY REF ID CUA TGD
97
			SET @p_REF_ID = (SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID ='HDQT')
98
			UPDATE PL_REQUEST_PROCESS SET STATUS ='C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID
99
			UPDATE PL_REQUEST_DOC SET PROCESS_ID ='HDQT' WHERE REQ_ID =@p_REQ_ID
100
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID =@p_REQ_ID
101
			IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE ISNULL(TK_HDQT_NOTES,'') ='' AND REQ_ID =@p_REQ_ID))
102
			BEGIN
103
				UPDATE PL_REQUEST_DOC SET TK_HDQT_NOTES =@p_PROCESS_DES, OTHER_NOTES =@IS_AUTH_HDQT_NOTES WHERE REQ_ID =@p_REQ_ID
104
			END
105
			UPDATE PL_REQUEST_DOC SET  OTHER_NOTES =@IS_AUTH_HDQT_NOTES, IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID =@p_REQ_ID
106
			--- INSERT VAO LOG
107
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) 
108
			VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Văn phòng HĐQT đã phê duyệt')
109
			------
110
			COMMIT TRANSACTION
111
			SELECT 0 as Result, N'Văn phòng HĐQT đã phê duyệt thành công' ErrorDesc
112
			RETURN 0
113
		END
114
	END
115
END
116
ELSE IF((SELECT PROCESS_ID FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID) IN ('DVCM','DVDM_DC') AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_ID AND STATUS_JOB = 'C'))
117
BEGIN
118
	IF (NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PROCESS_ID IN ('DVCM','DVDM_DC') AND STATUS ='C' AND ID = @p_REF_ID))
119
	BEGIN
120
		ROLLBACK TRANSACTION  
121
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa tới bước xử lý của đơn vị chuyên môn. Vui lòng đợi quy trình!' ErrorDesc  
122
		RETURN -1 
123
	END
124
	ELSE
125
	BEGIN
126
		---------BAODNQ 23/6/2022 : Update trạng thái duyệt khi trưởng DVCM duyệt-------------
127
		DECLARE @p_BRANCH_LOGIN_ID VARCHAR(15), @p_DEP_LOGIN_ID VARCHAR(15)
128
		SET @p_BRANCH_LOGIN_ID = (SELECT TLSUBBRID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
129
		SET @p_DEP_LOGIN_ID = (SELECT DEP_ID FROM TL_USER WHERE TLNANME = @p_MAKER_ID)
130
		
131
		UPDATE dbo.PL_REQUEST_COSTCENTER SET 
132
      NOTES = @p_PROCESS_DES,
133
			AUTH_STATUS='A',
134
			APPROVE_DT=GETDATE(),
135
			CHECKER_ID=@p_MAKER_ID
136
		WHERE REQ_ID=@p_REQ_ID 
137
		AND COST_ID IN(
138
			SELECT PC.DVDM_ID FROM PL_COSTCENTER PC
139
			LEFT JOIN PL_COSTCENTER_DT PCD ON PC.COST_ID = PCD.COST_ID
140
			WHERE PCD.BRANCH_ID = @p_BRANCH_LOGIN_ID 
141
			AND (PCD.DEP_ID = @p_DEP_LOGIN_ID OR PCD.DEP_ID IN (SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME = @p_MAKER_ID))
142
		) 
143
		-----------------------END BAODNQ-------------
144
		UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Đơn vị chuyên môn đã xác nhận' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID AND PROCESS_ID ='DVCM'
145
		UPDATE PL_REQUEST_PROCESS SET STATUS ='P', CHECKER_ID =@p_MAKER_ID,APPROVE_DT = GETDATE(), NOTES =N'Đơn vị đầu mối quản lý ngân sách cho - nhận đã xác nhận' WHERE REQ_ID =@p_REQ_ID AND ID =@p_REF_ID AND PROCESS_ID ='DVDM_DC'
146

    
147
		IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVCM')
148
					AND (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='DVCM')))
149
		BEGIN
150
			
151
			UPDATE dbo.PL_REQUEST_PROCESS SET STATUS = 'C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVCM'
152
			UPDATE PL_REQUEST_DOC SET PROCESS_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVCM') WHERE REQ_ID =@p_REQ_ID
153
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) 
154
			VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Đơn vị chuyên môn đã phê duyệt')
155
			COMMIT TRANSACTION
156
			SELECT 0 as Result, N'Trưởng đơn vị chuyên môn đã phê duyệt thành công KKK' ErrorDesc
157
			RETURN 0
158
		END
159
		ELSE IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND STATUS ='C' AND PROCESS_ID ='DVDM_DC')
160
			AND (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='DVDM_DC')))
161
		BEGIN
162
			UPDATE dbo.PL_REQUEST_PROCESS SET STATUS = 'C', CHECKER_ID ='',APPROVE_DT = NULL WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVDM_DC'
163
			UPDATE PL_REQUEST_DOC SET PROCESS_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND PARENT_PROCESS_ID = 'DVDM_DC') WHERE REQ_ID =@p_REQ_ID
164
			INSERT INTO dbo.PL_PROCESS (REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES) 
165
			VALUES( @p_REQ_ID,@p_PROCESS_ID,@p_MAKER_ID, GETDATE() , @p_PROCESS_DES ,N'Đơn vị đầu mối quản lý ngân sách cho - nhận đã phê duyệt')
166
			COMMIT TRANSACTION
167
			SELECT 0 as Result, N'Trưởng đơn vị đầu mối quản lý ngân sách đã phê duyệt thành công' ErrorDesc
168
			RETURN 0
169
		END
170
	END
171
END
172
 --END CODE LUCTV 13 04 2021
173
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS  WHERE REQ_ID=@p_REQ_ID AND IS_HAS_CHILD=1 AND STATUS='C' AND PROCESS_ID NOT IN ('TKTGD','TKHDQT','DVCM','DVDM_DC')))
174
BEGIN
175
	IF(EXISTS(
176
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
177
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
178
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID))
179
	BEGIN
180
		ROLLBACK TRANSACTION  
181
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
182
		RETURN -1
183
	END
184

    
185
	IF(NOT EXISTS(
186
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
187
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
188
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID))
189
	BEGIN
190

    
191
		ROLLBACK TRANSACTION  
192
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng thực hiện điều phối hoặc đợi viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
193
		RETURN -1 
194
	END
195
	IF(NOT EXISTS(
196
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
197
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
198
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID))
199
	BEGIN
200
		ROLLBACK TRANSACTION  
201
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng thực hiện điều phối hoặc đợi viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
202
		RETURN -1 
203
	END
204
	IF(EXISTS(
205
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
206
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
207
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID))
208
	BEGIN
209
		ROLLBACK TRANSACTION  
210
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng thực hiện điều phối hoặc đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
211
		RETURN -1
212
	END
213
END
214
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
215
SELECT @ERROR=ERROR,
216
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
217
IF(@ERROR=1)
218
BEGIN
219
	 ROLLBACK TRANSACTION;
220
    SELECT -1  Result,
221
           @EROOR_DES ErrorDesc
222
   
223
    RETURN 0;
224
END
225

    
226
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20)
227
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
228
				@PROCESS_CURR VARCHAR(10),
229
				@STEP_CURR INT,
230
				@STEP_NEXT VARCHAR(20),
231
				@PROCESS_NEXT VARCHAR(10),
232
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
233

    
234
SELECT @BRANCH_ID=  TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID
235
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
236

    
237

    
238
		DECLARE
239
		@COST_ID_TABLE TABLE (
240
			COST_ID VARCHAR(15)
241
		)
242

    
243
		DECLARE @DVDM_ID_TABLE TABLE (
244
			DVDM_ID VARCHAR(15)
245
		)
246

    
247
		DECLARE @AUTHOR_DVDM TABLE
248
		(
249
		ROLE_ID VARCHAR(100),
250
		BRANCH_ID VARCHAR(20),
251
		DEP_ID VARCHAR(20),
252
		DVDM_ID VARCHAR(20)
253
		)
254

    
255

    
256
	INSERT INTO @AUTHOR_DVDM
257
	(
258
	    ROLE_ID,
259
	    BRANCH_ID,
260
	    DEP_ID,
261
	    DVDM_ID
262
	)
263
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
264
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
265
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
266
	WHERE TU.TLNANME=@p_MAKER_ID
267
	UNION ALL
268
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
269
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
270
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
271
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
272
	WHERE TU.TLNANME=@p_MAKER_ID
273
	UNION ALL
274
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
275
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
276
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
277
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
278
	UNION ALL
279
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
280
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
281
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
282
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
283
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
284
		INSERT INTO @COST_ID_TABLE
285
		SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
286

    
287
		INSERT INTO @DVDM_ID_TABLE
288
		SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
289

    
290
		
291
		DECLARE @TYPE_JOB_CR VARCHAR(20)
292

    
293

    
294
		SET @TYPE_JOB_CR= (SELECT TOP 1 TYPE_JOB  FROM dbo.PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB='C')
295

    
296
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
297
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
298
		--AND TLNAME=@p_TLNAME
299
		AND TYPE_JOB=@TYPE_JOB_CR
300
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@TYPE_JOB_CR)
301
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
302
			
303
		INSERT INTO dbo.PL_PROCESS
304
				(
305
					REQ_ID,
306
					PROCESS_ID,
307
					CHECKER_ID,
308
					APPROVE_DT,
309
					PROCESS_DESC,NOTES
310
				)
311
				VALUES
312
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
313
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
314
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
315
					GETDATE() , -- APPROVE_DT - datetime
316
					@p_PROCESS_DES ,
317
					@TYPE_JOB_NAME+ N' đã phê duyệt xong'       -- PROCESS_DESC - nvarchar(1000)
318
				)
319
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
320
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
321
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
322
		--AND TLNAME=@p_TLNAME 
323
		AND TYPE_JOB=@TYPE_JOB_CR
324
		ORDER BY LEVEL_JOB DESC),0)                  
325

    
326
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
327
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
328
		PRINT 'H1'
329
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
330
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
331
		BEGIN
332
				PRINT 'HI HI HI'
333
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
334
				SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
335
				IF(@PROCESS_CURR='TC' OR (@PROCESS_CURR ='DVDC' AND @p_TLNAME IN (SELECT TLNANME FROM TL_USER WHERE (DEP_ID ='DEP000000000023' OR SECUR_CODE ='DEP000000000023'))))
336
				BEGIN
337
						SELECT @ERROR=ERROR,
338
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
339
					IF(@ERROR=1)
340
					BEGIN
341
						 ROLLBACK TRANSACTION;
342
						SELECT -1  Result,
343
							   @EROOR_DES ErrorDesc
344
   
345
						RETURN -1;
346
					END
347
					---Duyệt TTCT
348

    
349
					DECLARE @LIMTT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID VARCHAR(20),@TOTAL_TRANSFER_CE DECIMAL(18,2),@TOTAL_TRANSFER_OE DECIMAL(18,2)
350
					-- BO SUNG QUAN LY GIAM DOC KHOI /PTGD KHOI QUAN LY NGAN SACH CHO - NHAN LUCTV 20.10.2022
351
					--	DECLARE @KHOI_ID_TF VARCHAR(20), @KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT
352
					--	DECLARE @DATA_KHOI TABLE (  
353
					--	KHOI_ID VARCHAR(20),  
354
					--	TOTAL_AMT DECIMAL(18,2),  
355
					--	IS_NEXT BIT,  
356
					--	IS_GDK BIT,  
357
					--	IS_PTGD BIT  
358
					--	)  
359
					--	INSERT INTO @DATA_KHOI  
360
					--	(  
361
					--	KHOI_ID,  
362
					--	TOTAL_AMT,  
363
					--	IS_NEXT,  
364
					--	IS_GDK,  
365
					--	IS_PTGD  
366
					--	)  
367
					--	SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT  
368
					--	LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID  
369
 
370
					--	WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID <>'' AND FR_KHOI_ID IS NOT NULL GROUP BY FR_KHOI_ID,CD.IS_GDK,CD.IS_PTGD  
371
					--	SET @STEP_PARENT='TC'  
372
 
373
					--	SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')  
374
 
375
					--	DECLARE lstDATA CURSOR FOR  
376
					--	SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI  
377
 
378
					--	OPEN lstDATA  
379
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
380
					--	WHILE @@FETCH_STATUS=0  
381
					--	BEGIN  
382
					--	SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)  
383
 
384
					--	IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID_TF) AND @IS_GDK=1)  
385
					--	BEGIN  
386
					--	IF((@KHOI_ID_TF ='DM0000000000015' AND @TOTAL_AMT_TRANSFER  >10000000) OR @KHOI_ID_TF <> 'DM0000000000015')
387
					--	BEGIN
388
					--	INSERT INTO dbo.PL_REQUEST_PROCESS  
389
					--	(  
390
					--	REQ_ID,  
391
					--	PROCESS_ID,  
392
					--	STATUS,  
393
					--	ROLE_USER,  
394
					--	BRANCH_ID,  
395
					--	CHECKER_ID,  
396
					--	APPROVE_DT,  
397
					--	PARENT_PROCESS_ID,  
398
					--	IS_LEAF,  
399
					--	COST_ID,  
400
					--	DVDM_ID,  
401
					--	NOTES,IS_HAS_CHILD  
402
					--	)  
403
					--	VALUES  
404
					--	( @p_REQ_ID, -- REQ_ID - varchar(15)  
405
					--	'GDK_TT', -- PROCESS_ID - varchar(10)  
406
					--	'U', -- STATUS - varchar(5)  
407
					--	'GDK', -- ROLE_USER - varchar(50)  
408
					--	'', -- BRANCH_ID - varchar(15)  
409
					--	'', -- CHECKER_ID - varchar(15)  
410
					--	NULL, -- APPROVE_DT - datetime  
411
					--	@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
412
					--	'N', -- IS_LEAF - varchar(1)  
413
					--	'', -- COST_ID - varchar(15)  
414
					--	@KHOI_ID_TF ,  
415
					--	N'Chờ giám đốc khối quản lý ngân sách điều chuyển xác nhận',  
416
					--	0 -- DVDM_ID - varchar(15)  
417
					--	)  
418
					--	END
419
					--	END  
420
					--	--IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)  
421
					--	IF(@TOTAL_TRANSFER > @LIMTT_MAX )  
422
					--	UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF  
423
					--	IF(@IS_GDK=0)  
424
					--	UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF  
425
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
426
					--	END  
427
					--	CLOSE lstDATA  
428
					--	DEALLOCATE lstDATA  
429

    
430
					--	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))  
431
					--	SET @STEP_PARENT='GDK_TT'  
432
					--	IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1)  
433
					--	OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID))  
434
					--	BEGIN  
435
					--	DECLARE lstDATA CURSOR FOR  
436
					--	SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI WHERE IS_NEXT=1  
437
 
438
					--	OPEN lstDATA  
439
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
440
					--	WHILE @@FETCH_STATUS=0  
441
					--	BEGIN  
442
					--	SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID_TF)  
443
 
444
					--	IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF) AND @IS_PTGD=1)  
445
					--	BEGIN  
446
					--	INSERT INTO dbo.PL_REQUEST_PROCESS  
447
					--	(  
448
					--	REQ_ID,  
449
					--	PROCESS_ID,  
450
					--	STATUS,  
451
					--	ROLE_USER,  
452
					--	BRANCH_ID,  
453
					--	CHECKER_ID,  
454
					--	APPROVE_DT,  
455
					--	PARENT_PROCESS_ID,  
456
					--	IS_LEAF,  
457
					--	COST_ID,  
458
					--	DVDM_ID,  
459
					--	NOTES,IS_HAS_CHILD  
460
					--	)  
461
					--	VALUES  
462
					--	( @p_REQ_ID, -- REQ_ID - varchar(15)  
463
					--	'PTGDK_TT', -- PROCESS_ID - varchar(10)  
464
					--	'U', -- STATUS - varchar(5)  
465
					--	'PTGD', -- ROLE_USER - varchar(50)  
466
					--	'', -- BRANCH_ID - varchar(15)  
467
					--	'', -- CHECKER_ID - varchar(15)  
468
					--	NULL, -- APPROVE_DT - datetime  
469
					--	@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
470
					--	'N', -- IS_LEAF - varchar(1)  
471
					--	'', -- COST_ID - varchar(15)  
472
					--	@KHOI_ID_TF ,  
473
					--	N'Chờ Phó tổng giám đốc khối xác nhận',  
474
					--	0 -- DVDM_ID - varchar(15)  
475
					--	)  
476
					--	END  
477
					--	UPDATE @DATA_KHOI SET IS_NEXT=0 
478
					--	IF(@IS_GDK=0)  
479
					--	UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF  
480
					--	FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD  
481
					--	END  
482
					--	CLOSE lstDATA  
483
					--	DEALLOCATE lstDATA  
484
					--	END
485
					------- END LUCTV 20.10.2022
486
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='LIMIT_DCNS')
487
					SET @TOTAL_TRANSFER_CE=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID AND B.GD_CODE LIKE '%CE%')
488
					SET @TOTAL_TRANSFER_OE=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID AND B.GD_CODE LIKE '%OE%')
489
					IF(@TOTAL_TRANSFER_CE > 200000000 OR @TOTAL_TRANSFER_OE > 100000000)
490
					BEGIN
491
					SET @STEP_PARENT='TC'
492
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='LIMIT_DCNS')
493
					SET @KHOI_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='LIMIT_DCNS')
494
					IF @KHOI_ID IS NULL OR @KHOI_ID =''
495
						SET @KHOI_ID ='DM0000000000017'
496
					IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID))
497
					BEGIN
498
						INSERT INTO dbo.PL_REQUEST_PROCESS
499
						(
500
							REQ_ID,
501
							PROCESS_ID,
502
							STATUS,
503
							ROLE_USER,
504
							BRANCH_ID,
505
							CHECKER_ID,
506
							APPROVE_DT,
507
							PARENT_PROCESS_ID,
508
							IS_LEAF,
509
							COST_ID,
510
							DVDM_ID,
511
							NOTES,IS_HAS_CHILD
512
						)
513
						VALUES
514
						(   @p_REQ_ID,        -- REQ_ID - varchar(15)
515
							'GDK_TT',        -- PROCESS_ID - varchar(10)
516
							'U',        -- STATUS - varchar(5)
517
							'GDK',        -- ROLE_USER - varchar(50)
518
							'',        -- BRANCH_ID - varchar(15)
519
							'',        -- CHECKER_ID - varchar(15)
520
							NULL, -- APPROVE_DT - datetime
521
							@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
522
							'N',        -- IS_LEAF - varchar(1)
523
							'',        -- COST_ID - varchar(15)
524
							@KHOI_ID ,
525
							N'Chờ giám đốc khối Tài Chính xác nhận',
526
							0        -- DVDM_ID - varchar(15)
527
							)
528
					--LUCTV 20211028 FIX LOI CAP NHAT NHUNG STEP CU KHAC GDK_TT DANG CO CHA LA TAI CHINH VE GDK_TT
529
					UPDATE PL_REQUEST_PROCESS SET PARENT_PROCESS_ID ='GDK_TT' WHERE PROCESS_ID <> 'GDK_TT' AND PARENT_PROCESS_ID ='TC' AND REQ_ID =@p_REQ_ID
530
					--END EDIT
531
					END
532
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
533
					SET @STEP_PARENT='GDK_TT'
534

    
535
					IF(@TOTAL_TRANSFER_CE > 500000000 OR @TOTAL_TRANSFER_OE > 300000000)
536
					BEGIN
537
											
538
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
539
							BEGIN
540
							-- LUCTV : CHEN THEM BUOC THU KI TGD
541
							INSERT INTO dbo.PL_REQUEST_PROCESS
542
							(
543
							REQ_ID,
544
							PROCESS_ID,
545
							STATUS,
546
							ROLE_USER,
547
							BRANCH_ID,
548
							CHECKER_ID,
549
							APPROVE_DT,
550
							PARENT_PROCESS_ID,
551
							IS_LEAF,
552
							COST_ID,
553
							DVDM_ID,
554
							NOTES,
555
							IS_HAS_CHILD
556
							)
557
							VALUES
558
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
559
							'TKTGD',                               -- PROCESS_ID - varchar(10)
560
							'U',                                 -- STATUS - varchar(5)
561
							'TKTGD',                               -- ROLE_USER - varchar(50)
562
							'',                                  -- BRANCH_ID - varchar(15)
563
							'',                                  -- CHECKER_ID - varchar(15)
564
							NULL,                                -- APPROVE_DT - datetime
565
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
566
							'N',                                 -- IS_LEAF - varchar(1)
567
							'',                                  -- COST_ID - varchar(15)
568
							'', N'Chờ Văn Phòng Thư Ký Tổng Giám Đốc xác nhận', 1 -- DVDM_ID - varchar(15)
569
							);
570
							SET @STEP_PARENT ='TKTGD'
571
							--END
572
							---------
573
							INSERT INTO dbo.PL_REQUEST_PROCESS
574
							(
575
							REQ_ID,
576
							PROCESS_ID,
577
							STATUS,
578
							ROLE_USER,
579
							BRANCH_ID,
580
							CHECKER_ID,
581
							APPROVE_DT,
582
							PARENT_PROCESS_ID,
583
							IS_LEAF,
584
							COST_ID,
585
							DVDM_ID,
586
							NOTES,
587
							IS_HAS_CHILD
588
							)
589
							VALUES
590
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
591
							'TGD',                               -- PROCESS_ID - varchar(10)
592
							'U',                                 -- STATUS - varchar(5)
593
							'TGD',                               -- ROLE_USER - varchar(50)
594
							'',                                  -- BRANCH_ID - varchar(15)
595
							'',                                  -- CHECKER_ID - varchar(15)
596
							NULL,                                -- APPROVE_DT - datetime
597
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
598
							--'TKTGD',
599
							'N',                                 -- IS_LEAF - varchar(1)
600
							'',                                  -- COST_ID - varchar(15)
601
							'', N'Chờ tổng giám phê duyệt điều chuyển', 0 -- DVDM_ID - varchar(15)
602
							);
603
							END
604

    
605
						SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='TGD' AND LIMIT_TYPE='LIMIT_DCNS')
606
						--- LUCTV 15.08.2022 KIEM TRA NEU TONG CHI PHI TO TRINH VƯƠT HAN MUC CUA TGD THI LÊN CHỦ TỊCH HĐQT
607
						--IF(ISNULL(@TOTAL_TRANSFER_CE,0) + ISNULL(@TOTAL_TRANSFER_OE,0)>@LIMTT_MAX)
608
						SET @IS_NEXT_HDQT =(SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD'))
609
	
610
						IF(@IS_NEXT_HDQT=1)
611
						BEGIN
612
						IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='HDQT'))
613
						BEGIN
614
						---- THEM THU KI HDQT
615
						SET @STEP_PARENT ='TGD'
616
						INSERT INTO dbo.PL_REQUEST_PROCESS
617
						(
618
							REQ_ID,
619
							PROCESS_ID,
620
							STATUS,
621
							ROLE_USER,
622
							BRANCH_ID,
623
							CHECKER_ID,
624
							APPROVE_DT,
625
							PARENT_PROCESS_ID,
626
							IS_LEAF,
627
							COST_ID,
628
							DVDM_ID,
629
							NOTES,
630
							IS_HAS_CHILD
631
						)
632
						VALUES
633
						(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
634
							'TKHDQT',                               -- PROCESS_ID - varchar(10)
635
							'U',                                 -- STATUS - varchar(5)
636
							'TKHDQT',                               -- ROLE_USER - varchar(50)
637
							'',                                  -- BRANCH_ID - varchar(15)
638
							'',                                  -- CHECKER_ID - varchar(15)
639
							NULL,                                -- APPROVE_DT - datetime
640
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
641
							'N',                                 -- IS_LEAF - varchar(1)
642
							'',                                  -- COST_ID - varchar(15)
643
							'', N'Chờ Văn Phòng HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
644
							);
645
						SET @STEP_PARENT = 'TKHDQT';
646
						---- END THU KY HDQT
647
						INSERT INTO dbo.PL_REQUEST_PROCESS
648
						(
649
							REQ_ID,
650
							PROCESS_ID,
651
							STATUS,
652
							ROLE_USER,
653
							BRANCH_ID,
654
							CHECKER_ID,
655
							APPROVE_DT,
656
							PARENT_PROCESS_ID,
657
							IS_LEAF,
658
							COST_ID,
659
							DVDM_ID,
660
							NOTES,
661
							IS_HAS_CHILD
662
						)
663
						VALUES
664
						(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
665
							'HDQT',                               -- PROCESS_ID - varchar(10)
666
							'U',                                 -- STATUS - varchar(5)
667
							'HDQT',                               -- ROLE_USER - varchar(50)
668
							'',                                  -- BRANCH_ID - varchar(15)
669
							'',                                  -- CHECKER_ID - varchar(15)
670
							NULL,                                -- APPROVE_DT - datetime
671
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
672
							'N',                                 -- IS_LEAF - varchar(1)
673
							'',                                  -- COST_ID - varchar(15)
674
							'', N'Chờ HDQT phê duyệt điều chuyển', 0 -- DVDM_ID - varchar(15)
675
							);
676
					SET @STEP_PARENT = 'HDQT';
677
					END
678
					-- END LUCTV 15.08.2022
679
					END
680
					END
681
					DECLARE @LAST_PROCESS VARCHAR(20)	
682
					SET @LAST_PROCESS=(
683
					SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL 
684
					LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID
685
					WHERE REQ_ID=@p_REQ_ID
686
					GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS 
687
					ORDER BY CP.LEVEL_PROCESS DESC)
688

    
689
					--UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
690
					--SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')  
691
						
692
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='GDK_TT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
693
						BEGIN
694
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='GDK_TT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
695
						END
696
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='PTGDK_TT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
697
						BEGIN
698
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='PTGDK_TT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
699
						END
700
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='TGD' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
701
						BEGIN
702
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='TGD' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
703
						END
704
						IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE PROCESS_ID ='HDQT' AND STATUS <> 'P' AND REQ_ID =@p_REQ_ID))
705
						BEGIN
706
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID='HDQT' WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
707
						END
708
					END
709
					SET @NOTES = 'Tài chính'
710
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND 
711
					(ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID) OR ID =@p_REF_ID) 
712
					AND PROCESS_ID=@PROCESS_CURR
713
				  IF (EXISTS(SELECT prc.REQ_COST_ID FROM PL_REQUEST_COSTCENTER prc WHERE prc.COST_ID = 'DM0000000000048' AND prc.REQ_ID = @p_REQ_ID))
714
				  BEGIN
715
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS = 'A', NOTES = @p_PROCESS_DES, APPROVE_DT = GETDATE(), CHECKER_ID = @p_MAKER_ID WHERE REQ_ID = @p_REQ_ID AND COST_ID = 'DM0000000000048'
716
				  END
717

    
718
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
719

    
720
					SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
721

    
722
					UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
723

    
724
				END
725
				ELSE IF(@PROCESS_CURR='KT')
726
				BEGIN
727
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
728
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND PROCESS_ID=@PROCESS_CURR
729
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
730
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
731
				END
732
				ELSE IF(@PROCESS_CURR='DVCM' OR @PROCESS_CURR ='DVDM_DC' )
733
				BEGIN
734
					SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
735
					UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID 
736
					AND (COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM))
737
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() 
738
					WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID))
739
					AND (DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR  COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM) OR ID =@p_REF_ID)
740

    
741
					IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
742
					BEGIN
743
						
744
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
745
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
746
						
747
					END
748
				END
749
        ELSE
750
		BEGIN
751
        IF(@PROCESS_CURR = 'TKHDQT')
752
        BEGIN
753
          UPDATE PL_REQUEST_DOC SET IS_AUTHORITY = @p_IS_AUTHORITY WHERE REQ_ID = @p_REQ_ID
754
        END
755
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
756
				UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_DOC_ID=@p_REQ_ID AND 
757
				FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='')
758
				-- LUCTV: 2204 BO SUNG THEM DIEU KIEN SO SANH PROCESS_ID VOI REF ID
759
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() 
760
				WHERE REQ_ID=@p_REQ_ID AND ID =@p_REF_ID
761
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
762
				BEGIN
763
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
764
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
765
						
766
				END
767
				IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)))
768
					BEGIN
769
					IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
770
					BEGIN
771
							IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
772
							BEGIN
773

    
774
							
775
									DECLARE 	@LIMIT_VALUE DECIMAL(18,0),
776
									@IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
777
									DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
778
						
779

    
780
									SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID)
781
						
782
									SET @NOTE=   (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
783
									IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TC'))
784
									BEGIN
785
									DECLARE lstTransfer CURSOR FOR
786
									SELECT FR_DVDM_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND   FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>'' AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)
787
									AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND DVDM_ID=FR_DVDM_ID	)
788
									AND FR_DVDM_ID <>'DM0000000000048'  AND ( (FR_DVDM_ID  ='DM0000000000003' AND ISNULL(@TOTAL_AMT_TRANSFER,0) >=10000000) OR FR_DVDM_ID <> 'DM0000000000003')
789
									GROUP BY FR_DVDM_ID
790
									OPEN lstTransfer
791
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
792
									WHILE @@FETCH_STATUS = 0 
793
									BEGIN 
794
									IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER='GDDV' AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
795
									LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
796
									WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
797
									BEGIN
798
										INSERT INTO dbo.PL_REQUEST_PROCESS
799
										(
800
											REQ_ID,
801
											PROCESS_ID,
802
											STATUS,
803
											ROLE_USER,
804
											BRANCH_ID,
805
											CHECKER_ID,
806
											APPROVE_DT,
807
											PARENT_PROCESS_ID,
808
											IS_LEAF,
809
											COST_ID,
810
											DVDM_ID,
811
											NOTES,IS_HAS_CHILD
812
										)
813
										VALUES
814
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
815
											'DVDM_DC',        -- PROCESS_ID - varchar(10)
816
											'U',        -- STATUS - varchar(5)
817
											'GDDV',        -- ROLE_USER - varchar(50)
818
											'',        -- BRANCH_ID - varchar(15)
819
											'',        -- CHECKER_ID - varchar(15)
820
											NULL, -- APPROVE_DT - datetime
821
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
822
											'N',        -- IS_LEAF - varchar(1)
823
											'',        -- COST_ID - varchar(15)
824
											@DVDM_ID ,        -- DVDM_ID - varchar(15)
825
											--N'Chờ '+@NOTE+N' xác nhận ngân sách cho'
826
											N'Chờ đơn vị đầu mối quản lý ngân sách cho xác nhận'
827
											,1) -- LUCTV 20.10.22 DVDM_DC CHO CÓ TÍNH NĂNG ĐIỀU PHỐI
828
									END
829

    
830
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
831
									END
832
									CLOSE lstTransfer
833
									DEALLOCATE lstTransfer
834

    
835

    
836

    
837
								SET @STEP_NEXT='TC'
838
								IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
839
								BEGIN
840
										SET @STEP_PARENT='DVDM_DC'
841
										SET @STEP_NEXT	='DVDM_DC'
842
								END
843

    
844
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
845
								SET @STEP_PARENT='TC'
846
	
847
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID
848
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
849
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID
850
								END
851

    
852
						END	
853
					END
854
				END		
855
			END
856
			-- NEU CAP DUYET CUA DVDM_DC
857
			IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE'))
858
			BEGIN
859
				
860
					
861
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
862
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
863
			END
864
		END	
865
		IF @@Error <> 0 GOTO ABORT
866
COMMIT TRANSACTION
867
SELECT 0 as Result, N'Phê duyệt thành công' ErrorDesc
868
RETURN 0
869
ABORT:
870
BEGIN
871
		ROLLBACK TRANSACTION
872
		SELECT -1 as Result, '' ErrorDesc
873
		RETURN -1
874
End