Project

General

Profile

TR_REQ_PROCESS_CHILD_App.txt

Luc Tran Van, 04/05/2023 03:42 PM

 
1
ALTER PROCEDURE dbo.TR_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_XMLDATA XML
10
AS
11
BEGIN TRANSACTION
12
-- LUCTV 20052020 BO SUNG CHECK NEU TRA VE THI KHONG DUYET DUOC
13

    
14
--IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C' AND PROCESS_ID=@p_PROCESS_ID))
15
--BEGIN
16
--	SELECT 1 as Result, '' ErrorDesc
17
--	RETURN 0
18
--END
19
-- BO SUNG NHUNG PHONG BAN DO USER NAY KIEM NHIẸM
20
DECLARE @DEP_AUTH TABLE (DEP_AUTH VARCHAR(15))
21
INSERT INTO @DEP_AUTH SELECT DEP_ID FROM TL_SYS_ROLE_MAPPING WHERE TLNAME =@p_MAKER_ID 
22
AND 1=1
23
AND (CONVERT(DATE,GETDATE(),103) >= CONVERT(DATE,EFF_DATE, 103) OR EFF_DATE IS NULL)
24
AND (CONVERT(DATE, GETDATE(),103) <=CONVERT(DATE,EXP_DATE, 103) OR EXP_DATE IS NULL)
25
IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC  WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DMMS'))
26
BEGIN
27
	--IF(EXISTS(
28
	--SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
29
	--LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
30
	--WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C'))
31
	--BEGIN
32
	--	ROLLBACK TRANSACTION  
33
	--	SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
34
	--	RETURN -1
35
	--END
36
	--IF(NOT EXISTS(
37
	--SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
38
	--LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
39
	--WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' ))
40
	--BEGIN
41

    
42
	--	ROLLBACK TRANSACTION  
43
	--	SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc  
44
	--	RETURN -1 
45
	--END
46
	IF(EXISTS(
47
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
48
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
49
	WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID))
50
	BEGIN
51
		ROLLBACK TRANSACTION  
52
		SELECT -1 Result, N'Tại đơn vị mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
53
		RETURN -1
54
	END
55
	IF(NOT EXISTS(
56
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
57
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
58
	WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID ))
59
	BEGIN
60

    
61
		ROLLBACK TRANSACTION  
62
		SELECT -1 Result, N'Tại đơn vị mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc  
63
		RETURN -1 
64
	END
65
END
66
--- 16 04 2021 LUCTV BO SUNG VALIDATE
67
--IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC  WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DMMS'))
68
--BEGIN
69
--	IF(EXISTS(
70
--	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
71
--	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
72
--	WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.ID =@p_REF_ID))
73
--	BEGIN
74
--		ROLLBACK TRANSACTION  
75
--		SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
76
--		RETURN -1
77
--	END
78
--	IF(NOT EXISTS(
79
--	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
80
--	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
81
--	WHERE PR.PROCESS_ID='DMMS' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.ID =@p_REF_ID ))
82
--	BEGIN
83

    
84
--		ROLLBACK TRANSACTION  
85
--		SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc  
86
--		RETURN -1 
87
--	END
88
--END
89
--- NEU BUOC XU LY LA DVCM
90
--- 16 04 2021 LUCTV BO SUNG VALIDATE
91
IF(EXISTS(SELECT REQ_ID FROM dbo.TR_REQUEST_DOC  WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
92
BEGIN
93
	SET @p_PROCESS_ID =(SELECT PROCESS_ID FROM dbo.TR_REQUEST_DOC  WHERE REQ_ID=@p_REQ_ID)
94
	IF(EXISTS(
95
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
96
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
97
	WHERE PR.PROCESS_ID='DVCM' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C' AND PRC.PROCESS_ID =@p_REF_ID))
98
	BEGIN
99
		ROLLBACK TRANSACTION  
100
		SELECT -1 Result, N'Tại đơn vị chuyên môn. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' trước đó bạn đã giao cho nhân viên & chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
101
		RETURN -1
102
	END
103
	--IF(NOT EXISTS(
104
	--SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
105
	--LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
106
	--WHERE PR.PROCESS_ID='DVCM' AND PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.PROCESS_ID =@p_REF_ID ))
107
	--BEGIN
108
	--	ROLLBACK TRANSACTION  
109
	--	SELECT -1 Result, N'Tại đơn vị chuyên môn. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc  
110
	--	RETURN -1 
111
	--END
112
END
113
---
114

    
115
---------------BAODNQ 22/12/2022: Nếu PYCMS đã qua bước trưởng đơn vị ĐMMS duyệt thì k cho ấn duyệt lại--------------------------
116
IF(EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DMMS' AND STATUS = 'P' AND (CHECKER_ID IS NOT NULL AND CHECKER_ID <> '' AND CHECKER_ID = @p_MAKER_ID)))
117
BEGIN
118
	ROLLBACK TRANSACTION  
119
	SELECT -1 Result, N'Tại đầu mối mua sắm. Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +
120
	N' đã được trưởng đơn vị đầu mối mua sắm phê duyệt. Vui lòng chờ đợi bước xử lý tiếp theo xử lý phiếu' ErrorDesc  
121
	RETURN -1 
122
END
123

    
124
DECLARE @IS_KT VARCHAR(15)
125
SET @IS_KT =(SELECT TOP 1 IS_KT FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)
126
--- END LUCTV 08122020
127
IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
128
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
129
	BEGIN
130
		ROLLBACK TRANSACTION
131
		SELECT -1 Result, N'Phiếu yêu cầu mua sắm số: '+(SELECT REQ_CODE FROM TR_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
132
		RETURN -1
133
END
134
Declare @hdoc INT
135
	EXEC sp_xml_preparedocument @hdoc Output,@p_XMLDATA
136
	DECLARE @lstFILE TABLE(
137
	ATTACH_ID  VARCHAR(20),
138
	IS_READ	BIT 
139
	)
140
	INSERT INTO @lstFILE
141
	SELECT *
142
	FROM OPENXML(@hDoc,'/Root/ATTACH_FILE',2)
143
	WITH 
144
	(
145
		ATTACH_ID  VARCHAR(20),
146
		IS_READ	BIT  
147
	)
148

    
149
IF(EXISTS(SELECT TR_REQUEST_DOC_FILE_ID FROM dbo.TR_REQUEST_DOC_FILE WHERE REQ_ID=@p_REQ_ID AND IS_VIEW=1
150
 AND EXISTS(SELECT ATTACH_ID FROM @lstFILE WHERE [@lstFILE].ATTACH_ID=TR_REQUEST_DOC_FILE.ATTACH_ID AND IS_READ=0)))
151
 BEGIN
152
		ROLLBACK TRANSACTION
153
			SELECT -1 Result, N'File đinh kèm bắt buộc đọc' ErrorDesc 
154
			RETURN 0
155
 END
156
DECLARE @LEVEL INT,	@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
157
			
158
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
159
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
160

    
161
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
162
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
163
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
164
		ORDER BY LEVEL_JOB DESC),0)
165

    
166
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
167
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
168
		
169
			SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)
170
			SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
171
			
172
		INSERT INTO dbo.PL_PROCESS
173
				(
174
					REQ_ID,
175
					PROCESS_ID,
176
					CHECKER_ID,
177
					APPROVE_DT,
178
					PROCESS_DESC,NOTES
179
				)
180
				VALUES
181
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
182
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
183
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
184
					GETDATE() , -- APPROVE_DT - datetime
185
					@p_PROCESS_DES ,
186
					ISNULL(@TYPE_JOB_NAME,N'Đơn vị chuyên môn')+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
187
				)
188
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
189
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
190
		BEGIN
191
				IF(@p_PROCESS_ID='DMMS')
192
				BEGIN
193
				DECLARE @PROCESS_PARENT VARCHAR(20)
194
				SET @PROCESS_PARENT='DMMS'
195

    
196
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE(),NOTES=N'Đầu mối mua sắm đã phê duyệt' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_PROCESS_ID
197
		
198
				DECLARE @LIMIT_VALUE_KT DECIMAL(18,0),@ROLE_KT VARCHAR(20),@DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(200),@TOTAL_AMT_REQ DECIMAL(18,0)
199

    
200
				SET @LIMIT_VALUE_KT = (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
201
				SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
202
				
203
				SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
204
				
205
				SET @TOTAL_AMT_REQ =(SELECT SUM(((PRICE * QUANTITY) + ISNULL(TAXES,0))* ISNULL(EXCHANGE_RATE,1)) AS TOTAL_AMT FROM dbo.TR_REQUEST_DOC_DT 
206
				--WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' OR NOTES ='CDT'))
207
				WHERE REQ_DOC_ID=@p_REQ_ID)
208
				--IF(@TOTAL_AMT_REQ > @LIMIT_VALUE_KT AND @IS_KT ='1') -- CODE CŨ CHẶN K QUA KẾ TOÁN
209
				----------BAODNQ 6/5/2022: THÊM ĐOẠN CODE ĐI QUA PHÒNG KẾ TOÁN-----------
210
				-------------Nếu PYCMS > 100tr và có BB xét giá 100-500tr hoặc trên 500tr
211
				IF(@TOTAL_AMT_REQ >= 100000000 
212
					AND (
213
						EXISTS(SELECT* FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID)
214
						OR EXISTS (SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID)
215
						)
216
					)
217
					--------------Nếu đã tồn tại DVCM kế toán thì k thêm vào-----------------
218
					AND NOT EXISTS(SELECT REQ_COST_ID FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID
219
									AND COST_ID = @DVDM_KT)
220
				BEGIN
221
					SET @IS_KT = '1'
222
				--------------END BAODNQ--------------------------
223
					DECLARE @l_REQ_COST_ID VARCHAR(15)
224
					EXEC SYS_CodeMasters_Gen 'TR_REQUEST_COSTCENTER', @l_REQ_COST_ID out
225
					INSERT dbo.TR_REQUEST_COSTCENTER
226
					(
227
					    REQ_COST_ID,
228
					    COST_ID,
229
					    REQ_ID,
230
					    NOTES,
231
					    AUTH_STATUS,
232
					    MAKER_ID,
233
					    CREATE_DT,
234
					    CHECKER_ID,
235
					    APPROVE_DT
236
					)
237
					VALUES
238
					(   @l_REQ_COST_ID,        -- REQ_COST_ID - varchar(15)
239
						@DVDM_KT,        -- COST_ID - varchar(15)			    
240
						@p_REQ_ID,        -- REQ_ID - varchar(15)
241
					    N'',       -- NOTES - nvarchar(500)
242
					    'U',        -- AUTH_STATUS - varchar(1)
243
					    @p_MAKER_ID,        -- MAKER_ID - varchar(15)
244
					    GETDATE(), -- CREATE_DT - datetime
245
					    '',        -- CHECKER_ID - varchar(15)
246
					   NULL -- APPROVE_DT - datetime
247
					    )
248
				END
249

    
250
				--------------------BAODNQ 18/7/2022: Nếu có DVCM trùng DMMS thì xác nhận luôn--------
251
				DECLARE @p_DVDM_DMMS_ID VARCHAR(15) = (
252
					SELECT CDV.DVDM_ID
253
					FROM CM_DMMS CD
254
					LEFT JOIN PL_COSTCENTER_DT PCD ON CD.BRANCH_ID = PCD.BRANCH_ID AND CD.DEP_ID = PCD.DEP_ID
255
					LEFT JOIN PL_COSTCENTER PC ON PCD.COST_ID = PC.COST_ID
256
					LEFT JOIN CM_DVDM CDV ON PC.DVDM_ID = CDV.DVDM_ID
257
					WHERE CD.DMMS_ID = (SELECT DVDM_ID FROM PL_REQUEST_PROCESS WHERE PROCESS_ID = 'DMMS' AND REQ_ID = @p_REQ_ID)
258
					AND CDV.IS_DVCM = 1
259
				)
260
				IF(EXISTS(SELECT*FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID AND COST_ID = @p_DVDM_DMMS_ID))
261
				BEGIN
262
					UPDATE TR_REQUEST_COSTCENTER SET
263
						AUTH_STATUS='A',
264
						APPROVE_DT=GETDATE(),
265
						CHECKER_ID=@p_MAKER_ID,
266
						NOTES = N'Xác nhận'
267
					WHERE REQ_ID = @p_REQ_ID AND COST_ID = @p_DVDM_DMMS_ID
268
				END
269

    
270
				IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID) AND EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' )))
271
					BEGIN
272
					DECLARE @COST_ID VARCHAR(20)
273
					DECLARE lstCostCenter CURSOR FOR
274
					SELECT COST_ID  FROM dbo.TR_REQUEST_COSTCENTER
275
					WHERE REQ_ID=@p_REQ_ID
276
					 OPEN lstCostCenter
277
		 			FETCH NEXT FROM lstCostCenter INTO @COST_ID
278
					WHILE @@FETCH_STATUS = 0 
279
					BEGIN 
280

    
281
					IF(NOT EXISTS(SELECT * FROM TR_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID AND COST_ID = @COST_ID AND AUTH_STATUS = 'A'))
282
					BEGIN
283

    
284
					IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND 
285
					(ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )AND ( DVDM_ID=@COST_ID OR @COST_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
286
					LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
287
					WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
288
					BEGIN
289

    
290
					IF(@COST_ID=@DVDM_KT AND @IS_KT ='1')
291
					BEGIN
292
						INSERT INTO dbo.PL_REQUEST_PROCESS
293
						(
294
							REQ_ID,
295
							PROCESS_ID,
296
							STATUS,
297
							ROLE_USER,
298
							BRANCH_ID,
299
							CHECKER_ID,
300
							APPROVE_DT,
301
							PARENT_PROCESS_ID,
302
							IS_LEAF,
303
							COST_ID,
304
							DVDM_ID,
305
							NOTES,
306
							IS_HAS_CHILD
307
						)
308
						VALUES
309
						(   @p_REQ_ID,        -- REQ_ID - varchar(15)
310
							'DVCM',        -- PROCESS_ID - varchar(10)
311
							'U',        -- STATUS - varchar(5)
312
							'KSV',        -- ROLE_USER - varchar(50)
313
							'',        -- BRANCH_ID - varchar(15)
314
							'',        -- CHECKER_ID - varchar(15)
315
							NULL, -- APPROVE_DT - datetime
316
						   @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
317
							'N',        -- IS_LEAF - varchar(1)
318
							'',        -- COST_ID - varchar(15)
319
							@COST_ID ,
320
							N'Chờ đơn vị chuyên môn xác nhận' ,
321
							1       -- DVDM_ID - varchar(15)
322
						 )
323
					END
324
					ELSE
325
					BEGIN
326
				    INSERT INTO dbo.PL_REQUEST_PROCESS
327
				    (
328
				        REQ_ID,
329
				        PROCESS_ID,
330
				        STATUS,
331
				        ROLE_USER,
332
				        BRANCH_ID,
333
				        CHECKER_ID,
334
				        APPROVE_DT,
335
				        PARENT_PROCESS_ID,
336
				        IS_LEAF,
337
				        COST_ID,
338
				        DVDM_ID,
339
						NOTES,
340
						IS_HAS_CHILD
341
				    )
342
				    VALUES
343
				    (   @p_REQ_ID,        -- REQ_ID - varchar(15)
344
				        'DVCM',        -- PROCESS_ID - varchar(10)
345
				        'U',        -- STATUS - varchar(5)
346
				        'GDDV',        -- ROLE_USER - varchar(50)
347
				        '',        -- BRANCH_ID - varchar(15)
348
				        '',        -- CHECKER_ID - varchar(15)
349
						NULL, -- APPROVE_DT - datetime
350
				       @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
351
				        'N',        -- IS_LEAF - varchar(1)
352
				        '',        -- COST_ID - varchar(15)
353
				        @COST_ID ,
354
						N'Chờ đơn vị chuyên môn xác nhận' ,
355
						1       -- DVDM_ID - varchar(15)
356
				     )
357
					 END
358
					END
359
					END
360
					FETCH NEXT FROM lstCostCenter INTO @COST_ID
361
					END
362
					CLOSE lstCostCenter
363
					DEALLOCATE lstCostCenter
364
					
365
				END
366

    
367
				----------------BAODNQ 6/7/2022: Nếu có BB xét giá trên 500tr và có check chọn qua GDK TC----------
368
				IF(EXISTS(SELECT * FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID AND HAS_GDK_TC = 'Y'))
369
				BEGIN
370
					IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
371
					BEGIN
372
						SET @PROCESS_PARENT='DVCM'
373
					END
374
					
375
					DECLARE @p_ROLE_ID VARCHAR(20), @p_DVDM_ID VARCHAR(15)
376
					SET @p_ROLE_ID = 'GDK'
377
					SET @p_DVDM_ID = 'DM0000000000017' --- PHÒNG TÀI CHÍNH
378

    
379
					INSERT INTO dbo.PL_REQUEST_PROCESS
380
					(
381
					    REQ_ID,
382
					    PROCESS_ID,
383
					    STATUS,
384
					    ROLE_USER,
385
					    BRANCH_ID,
386
					    CHECKER_ID,
387
					    APPROVE_DT,
388
					    PARENT_PROCESS_ID,
389
					    IS_LEAF,
390
					    COST_ID,
391
					    DVDM_ID,
392
					    NOTES,
393
					    IS_HAS_CHILD
394
					)
395
					VALUES
396
					(  @p_REQ_ID,        -- REQ_ID - varchar(15)
397
					   'GDK_TC',        -- PROCESS_ID - varchar(10)
398
					    'U',        -- STATUS - varchar(5)
399
					    @p_ROLE_ID,        -- ROLE_USER - varchar(50)
400
					    '',        -- BRANCH_ID - varchar(15)
401
					    '',        -- CHECKER_ID - varchar(15)
402
					    NULL, -- APPROVE_DT - datetime
403
					    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
404
					    '',        -- IS_LEAF - varchar(1)
405
					    '',        -- COST_ID - varchar(15)
406
					    @p_DVDM_ID,        -- DVDM_ID - varchar(15)
407
					    N'Chờ Giám đốc khối Tài Chính phê duyệt',       -- NOTES - nvarchar(500)
408
					    0       -- IS_HAS_CHILD - bit
409
					    )
410
					SET @PROCESS_PARENT= 'GDK_TC'
411
				END
412
				---------------END BAODNQ 6/7/2022--------------------------
413

    
414
				DECLARE @TOTAL_AMT DECIMAL(18,2),@ROLE_PDTH VARCHAR(20)	,@LIMIT_VALUE DECIMAL(18,2)	,@IS_NEXT BIT,@PROCESS_ID  VARCHAR(5),@ROLE_ID VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTES NVARCHAR(50),@DVDM_NAME NVARCHAR(200)
415

    
416
				--IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
417
				--	SET @PROCESS_PARENT='DVCM'
418
				IF(NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'GDK_TC')
419
				AND EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DVCM'))
420
				BEGIN
421
					SET @PROCESS_PARENT='DVCM'
422
				END
423
				
424
				SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))
425
				--SET @IS_NEXT=1
426
				IF(@IS_NEXT =1 AND EXISTS(SELECT REQDT_ID FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK' ))) 
427
				BEGIN
428
				SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
429
				SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
430
				SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID)
431
				SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID)
432
				SET @NOTES = @NOTES + ' ' + @DVDM_NAME
433

    
434
				INSERT INTO dbo.PL_REQUEST_PROCESS
435
					(
436
					    REQ_ID,
437
					    PROCESS_ID,
438
					    STATUS,
439
					    ROLE_USER,
440
					    BRANCH_ID,
441
					    CHECKER_ID,
442
					    APPROVE_DT,
443
					    PARENT_PROCESS_ID,
444
					    IS_LEAF,
445
					    COST_ID,
446
					    DVDM_ID,
447
					    NOTES,
448
					    IS_HAS_CHILD
449
					)
450
					VALUES
451
					(  @p_REQ_ID,        -- REQ_ID - varchar(15)
452
					   'GDK_PYC',        -- PROCESS_ID - varchar(10)
453
					    'U',        -- STATUS - varchar(5)
454
					    @ROLE_ID,        -- ROLE_USER - varchar(50)
455
					    '',        -- BRANCH_ID - varchar(15)
456
					    '',        -- CHECKER_ID - varchar(15)
457
					    NULL, -- APPROVE_DT - datetime
458
					    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
459
					    '',        -- IS_LEAF - varchar(1)
460
					    '',        -- COST_ID - varchar(15)
461
					    @DVDM_ID,        -- DVDM_ID - varchar(15)
462
					    N'Chờ ' +@NOTES+N' phê duyệt',       -- NOTES - nvarchar(500)
463
					    0       -- IS_HAS_CHILD - bit
464
					    )
465
					SET @PROCESS_PARENT= 'GDK_PYC'
466
                END
467
			----------------BAODNQ 11/6/2022 PYCMS CÓ TỜ TRÌNH CĐT------------------------
468
				IF(EXISTS (SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID AND TYPE_PL <> 'TTCP'))
469
				BEGIN
470
					DECLARE @p_LIMIT_PTGDK_HT DECIMAL(18,0),
471
							@p_LIMIT_TGD DECIMAL(18,0),
472
							@p_TOTAL_AMT_REQ_DOC DECIMAL(18,0) = (
473
								SELECT TOTAL_AMT FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID
474
							)
475

    
476
					----------------Set hạng mức------------------
477
					DECLARE @t_HANGHOA_TABLE TABLE(HH_ID VARCHAR(15), HH_CODE VARCHAR(100))
478
					INSERT INTO @t_HANGHOA_TABLE
479
						SELECT TRDT.HANGHOA_ID, CH.HH_CODE 
480
						FROM TR_REQUEST_DOC_DT TRDT
481
						LEFT JOIN CM_HANGHOA CH ON TRDT.HANGHOA_ID = CH.HH_ID
482
						WHERE TRDT.REQ_DOC_ID = @p_REQ_ID
483

    
484
					IF(EXISTS(SELECT * FROM @t_HANGHOA_TABLE WHERE HH_CODE IN ('HCQT-003-000007', 'SPMKT-001-000007')))
485
					BEGIN
486
						SET @p_LIMIT_PTGDK_HT = 300000000
487
						SET @p_LIMIT_TGD = 500000000
488
					END
489
					ELSE IF(EXISTS(SELECT * FROM @t_HANGHOA_TABLE WHERE HH_CODE IN ('THQHCC-001-000003')))
490
					BEGIN
491
						SET @p_LIMIT_PTGDK_HT = 50000000
492
						SET @p_LIMIT_TGD = 300000000
493
					END
494
					ELSE
495
					BEGIN
496
						SET @p_LIMIT_PTGDK_HT = 100000000
497
						SET @p_LIMIT_TGD = 300000000
498
					END
499
					----- LUCTV 05.04.2023 KIEM TRA NEU MUA SẮM THEO HÌNH THỨC CHỈ ĐỊNH THẦU ĐỘC QUYỀN, THÌ KHÔNG QUA TGĐ CHO NÊN SẼ CHO HẠN MỨC TGĐ LÊN 1 CON SỐ ẢO (100 TỶ ĐỒNG)
500
					IF(EXISTS(SELECT * FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID AND TRAN_TYPE_ID ='TRN0000000010'))
501
					BEGIN
502
						SET @p_LIMIT_TGD = 500000000000
503
					END
504
					---- END
505
					------------ PCYMS CÓ TỜ TRÌNH CĐT VƯỢT HẠN MỨC PTGDK HỖ TRỢ-------
506
					IF(@p_TOTAL_AMT_REQ_DOC > @p_LIMIT_PTGDK_HT) --- 08032023 LUCTV BO CHO NAY VI PTGD KHOI HO TRO KHONG CON CHỨC DANH NÀY NUA
507
					BEGIN
508
						--SET @DVDM_ID = 'DM0000000000015' ---PHÒNG HỖ TRỢ
509
						--SET @ROLE_ID = 'PTGD' -- PHÓ TỔNG GIÁM ĐỐC KHỐI
510

    
511
						--INSERT INTO dbo.PL_REQUEST_PROCESS
512
						--(
513
						--	REQ_ID,
514
						--	PROCESS_ID,
515
						--	STATUS,
516
						--	ROLE_USER,
517
						--	BRANCH_ID,
518
						--	CHECKER_ID,
519
						--	APPROVE_DT,
520
						--	PARENT_PROCESS_ID,
521
						--	IS_LEAF,
522
						--	COST_ID,
523
						--	DVDM_ID,
524
						--	NOTES,
525
						--	IS_HAS_CHILD
526
						--)
527
						--VALUES
528
						--(  @p_REQ_ID,        -- REQ_ID - varchar(15)
529
						--   'PTGDK_CDT',        -- PROCESS_ID - varchar(10)
530
						--	'U',        -- STATUS - varchar(5)
531
						--	@ROLE_ID,        -- ROLE_USER - varchar(50)
532
						--	'',        -- BRANCH_ID - varchar(15)
533
						--	'',        -- CHECKER_ID - varchar(15)
534
						--	NULL, -- APPROVE_DT - datetime
535
						--	@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
536
						--	'',        -- IS_LEAF - varchar(1)
537
						--	'',        -- COST_ID - varchar(15)
538
						--	@DVDM_ID,        -- DVDM_ID - varchar(15)
539
						--	N'Chờ Phó Tổng Giám đốc khối Hỗ Trợ phê duyệt',   -- NOTES - nvarchar(500)
540
						--	0       -- IS_HAS_CHILD - bit
541
						--)
542
						--SET @PROCESS_PARENT= 'PTGDK_CDT'
543
						IF(NOT EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID ='GDK_PYC' AND DVDM_ID =@DVDM_ID))
544
						BEGIN
545
							SET @DVDM_ID = 'DM0000000000015' ---PHÒNG HỖ TRỢ
546
							SET @ROLE_ID = 'GDK' -- PHÓ TỔNG GIÁM ĐỐC KHỐI
547
							INSERT INTO dbo.PL_REQUEST_PROCESS
548
							(
549
								REQ_ID,
550
								PROCESS_ID,
551
								STATUS,
552
								ROLE_USER,
553
								BRANCH_ID,
554
								CHECKER_ID,
555
								APPROVE_DT,
556
								PARENT_PROCESS_ID,
557
								IS_LEAF,
558
								COST_ID,
559
								DVDM_ID,
560
								NOTES,
561
								IS_HAS_CHILD
562
							)
563
							VALUES
564
							(  @p_REQ_ID,        -- REQ_ID - varchar(15)
565
							   'GDK_PYC',        -- PROCESS_ID - varchar(10)
566
								'U',        -- STATUS - varchar(5)
567
								@ROLE_ID,        -- ROLE_USER - varchar(50)
568
								'',        -- BRANCH_ID - varchar(15)
569
								'',        -- CHECKER_ID - varchar(15)
570
								NULL, -- APPROVE_DT - datetime
571
								@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
572
								'',        -- IS_LEAF - varchar(1)
573
								'',        -- COST_ID - varchar(15)
574
								@DVDM_ID,        -- DVDM_ID - varchar(15)
575
								N'Chờ ' +@NOTES+N' phê duyệt',       -- NOTES - nvarchar(500)
576
								0       -- IS_HAS_CHILD - bit
577
								)
578
								SET @PROCESS_PARENT= 'GDK_PYC'
579
						END
580
					END
581
					-------------------TỜ TRÌNH CĐT CÓ CHECK GDK TÀI CHÍNH-----------
582
					IF(EXISTS (SELECT * FROM PL_APPOINT_CONTRACTOR WHERE TR_REQUEST_DOC_ID = @p_REQ_ID AND TYPE_PL <> 'TTCP' AND HAS_GDK_TC = 'Y'))
583
					BEGIN
584
						SET @DVDM_ID = 'DM0000000000017' --- PHÒNG TÀI CHÍNH
585
						SET @ROLE_ID = 'GDK'
586

    
587
						INSERT INTO dbo.PL_REQUEST_PROCESS
588
						(
589
							REQ_ID,
590
							PROCESS_ID,
591
							STATUS,
592
							ROLE_USER,
593
							BRANCH_ID,
594
							CHECKER_ID,
595
							APPROVE_DT,
596
							PARENT_PROCESS_ID,
597
							IS_LEAF,
598
							COST_ID,
599
							DVDM_ID,
600
							NOTES,
601
							IS_HAS_CHILD
602
						)
603
						VALUES
604
						(  @p_REQ_ID,        -- REQ_ID - varchar(15)
605
						   'GDK_CDT_TC',        -- PROCESS_ID - varchar(10)
606
							'U',        -- STATUS - varchar(5)
607
							@ROLE_ID,        -- ROLE_USER - varchar(50)
608
							'',        -- BRANCH_ID - varchar(15)
609
							'',        -- CHECKER_ID - varchar(15)
610
							NULL, -- APPROVE_DT - datetime
611
							@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
612
							'',        -- IS_LEAF - varchar(1)
613
							'',        -- COST_ID - varchar(15)
614
							@DVDM_ID,        -- DVDM_ID - varchar(15)
615
							N'Chờ Giám đốc khối Tài Chính phê duyệt',       -- NOTES - nvarchar(500)
616
							0       -- IS_HAS_CHILD - bit
617
						)
618
						SET @PROCESS_PARENT= 'GDK_CDT_TC'
619
					END
620
					---- LUCTV 17-03-2023 NEU TO TRINH ĐÃ LÀ CHỈ ĐỊNH THẦU THÌ TẠI PYCMS DÙ CÓ LÀM TỜ TRÌNH CĐT BAO NHIÊU ĐI CHĂNG NỮA CŨNG CHỈ DỪNG LẠI Ở GĐK HỖ TRỢ
621
					DECLARE @p_PL_REQ_ID VARCHAR(15)
622
					SET @p_PL_REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
623
					IF(NOT EXISTS (SELECT * FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID AND PL_REQDT_ID IN (SELECT REQDT_ID FROM PL_REQUEST_DOC_DT 
624
					WHERE REQ_ID =@p_PL_REQ_ID AND TRADE_TYPE = 'CDT')))
625
					BEGIN
626
					-------------------PCYMS CÓ TỜ TRÌNH CĐT VƯỢT HẠN MỨC TGD-------
627
					IF(@p_TOTAL_AMT_REQ_DOC > @p_LIMIT_TGD)
628
					BEGIN
629
						----------------Qua thư ký TGĐ trc-----------------
630
						--SET @DVDM_ID = 'DM0000000000013'
631
						SET @DVDM_ID = NULL
632
						SET @ROLE_ID = 'TKTGD'
633
						INSERT INTO dbo.PL_REQUEST_PROCESS
634
						(
635
							REQ_ID,
636
							PROCESS_ID,
637
							STATUS,
638
							ROLE_USER,
639
							BRANCH_ID,
640
							CHECKER_ID,
641
							APPROVE_DT,
642
							PARENT_PROCESS_ID,
643
							IS_LEAF,
644
							COST_ID,
645
							DVDM_ID,
646
							NOTES,
647
							IS_HAS_CHILD
648
						)
649
						VALUES
650
						(  @p_REQ_ID,        -- REQ_ID - varchar(15)
651
						   'TKTGD_CDT',        -- PROCESS_ID - varchar(10)
652
							'U',        -- STATUS - varchar(5)
653
							@ROLE_ID,        -- ROLE_USER - varchar(50)
654
							'',        -- BRANCH_ID - varchar(15)
655
							'',        -- CHECKER_ID - varchar(15)
656
							NULL, -- APPROVE_DT - datetime
657
							@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
658
							'',        -- IS_LEAF - varchar(1)
659
							'',        -- COST_ID - varchar(15)
660
							@DVDM_ID,        -- DVDM_ID - varchar(15)
661
							N'Chờ Thư ký Tổng Giám đốc phê duyệt',   -- NOTES - nvarchar(500)
662
							0       -- IS_HAS_CHILD - bit
663
						)
664
						SET @PROCESS_PARENT= 'TKTGD_CDT'
665

    
666
						---------------Qua TGĐ------------------
667
						--SET @DVDM_ID = 'DM0000000000013'
668
						SET @DVDM_ID = NULL
669
						SET @ROLE_ID = 'TGD'
670
						INSERT INTO dbo.PL_REQUEST_PROCESS
671
						(
672
							REQ_ID,
673
							PROCESS_ID,
674
							STATUS,
675
							ROLE_USER,
676
							BRANCH_ID,
677
							CHECKER_ID,
678
							APPROVE_DT,
679
							PARENT_PROCESS_ID,
680
							IS_LEAF,
681
							COST_ID,
682
							DVDM_ID,
683
							NOTES,
684
							IS_HAS_CHILD
685
						)
686
						VALUES
687
						(  @p_REQ_ID,        -- REQ_ID - varchar(15)
688
						   'TGD_CDT',        -- PROCESS_ID - varchar(10)
689
							'U',        -- STATUS - varchar(5)
690
							@ROLE_ID,        -- ROLE_USER - varchar(50)
691
							'',        -- BRANCH_ID - varchar(15)
692
							'',        -- CHECKER_ID - varchar(15)
693
							NULL, -- APPROVE_DT - datetime
694
							@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
695
							'',        -- IS_LEAF - varchar(1)
696
							'',        -- COST_ID - varchar(15)
697
							@DVDM_ID,        -- DVDM_ID - varchar(15)
698
							N'Chờ Tổng Giám đốc phê duyệt',   -- NOTES - nvarchar(500)
699
							0       -- IS_HAS_CHILD - bit
700
						)
701
						SET @PROCESS_PARENT= 'TGD_CDT'
702
					END
703
				END
704
				----------------------------END BAODNQ 11/6/2022------------------
705
				END -- LUCTV 17-03-2023 NEU TO TRINH ĐÃ LÀ CHỈ ĐỊNH THẦU THÌ TẠI PYCMS DÙ CÓ LÀM TỜ TRÌNH CĐT BAO NHIÊU ĐI CHĂNG NỮA CŨNG CHỈ DỪNG LẠI Ở GĐK HỖ TRỢ
706
				INSERT INTO dbo.PL_REQUEST_PROCESS
707
				(
708
				    REQ_ID,
709
				    PROCESS_ID,
710
				    STATUS,
711
				    ROLE_USER,
712
				    BRANCH_ID,
713
				    CHECKER_ID,
714
				    APPROVE_DT,
715
				    PARENT_PROCESS_ID,
716
				    IS_LEAF,
717
				    COST_ID,
718
				    DVDM_ID,
719
				    NOTES,
720
				    IS_HAS_CHILD
721
				)
722
				VALUES
723
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
724
				    'APPROVE',        -- PROCESS_ID - varchar(10)
725
				    'U',        -- STATUS - varchar(5)
726
				    '',        -- ROLE_USER - varchar(50)
727
				    '',        -- BRANCH_ID - varchar(15)
728
				    '',        -- CHECKER_ID - varchar(15)
729
				    NULL, -- APPROVE_DT - datetime
730
				    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
731
				    'N',        -- IS_LEAF - varchar(1)
732
				    '',        -- COST_ID - varchar(15)
733
				    '',        -- DVDM_ID - varchar(15)
734
				    N'Hoàn tất',       -- NOTES - nvarchar(500)
735
				    NULL       -- IS_HAS_CHILD - bit
736
				    )
737
				DECLARE @PROCESS_NEXT_ID VARCHAR(10)
738
				SET @PROCESS_NEXT_ID = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID)
739

    
740
				
741
				
742
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID
743
				UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT_ID WHERE REQ_ID=@p_REQ_ID
744
				
745
				END -- KET THUC DMMS
746
				ELSE IF(@p_PROCESS_ID='DVCM')
747
				BEGIN
748
						DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@PROCESS_NEXT VARCHAR(10)
749

    
750
							SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
751
							SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
752
							SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
753
							-- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV
754
							--IF(@ROLE_ID ='KTT')
755
							--BEGIN
756
							--	SET @ROLE_ID ='GDDV'
757
							--END
758
							SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@p_PROCESS_ID)
759
						
760

    
761
						UPDATE dbo.TR_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID, NOTES = @p_PROCESS_DES WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN
762
																																	dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID WHERE BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IN (SELECT * FROM @DEP_AUTH)))
763
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',CHECKER_ID=@p_MAKER_ID,
764
						APPROVE_DT=GETDATE() ,NOTES=N'Đơn vị chuyên môn xác nhận' 
765
						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 DVDM_ID IN (SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC LEFT JOIN
766
																																	dbo.PL_COSTCENTER_DT PT ON PT.COST_ID=PC.COST_ID
767
																																	WHERE BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IN (SELECT * FROM @DEP_AUTH)))
768

    
769
                                                                  
770
						IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@p_PROCESS_ID AND REQ_ID=@p_REQ_ID AND STATUS='C'))
771
						BEGIN
772
						
773
										UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
774
										UPDATE dbo.TR_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
775

    
776
										----------------BAODNQ 6/7/2022-----------------
777
										IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_NEXT AND STATUS = 'C' AND (NOTES IS NULL OR NOTES = '')))
778
										BEGIN
779
											DECLARE @p_PROCESS_NOTES NVARCHAR(MAX)
780
											IF(@PROCESS_NEXT = 'GDK_TC')
781
											BEGIN
782
												SET @p_PROCESS_NOTES = N'Chờ Giám đốc khối Tài Chính phê duyệt'
783
											END
784
											ELSE IF(@PROCESS_NEXT = 'GDK_PYC')
785
											BEGIN
786
												SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID='GDK')
787
												SET @p_PROCESS_NOTES = N'Chờ ' +@NOTES+N' phê duyệt'
788
											END
789

    
790
											UPDATE PL_REQUEST_PROCESS SET 
791
												NOTES = @p_PROCESS_NOTES
792
											WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = @PROCESS_NEXT
793
										END
794
										
795
										----------------END BAODNQ 6/7/2022-----------------
796
						
797
					END
798
				END --- KET THUC DON VI CHUYEN MON
799

    
800
			--IF(@PROCESS_NEXT='APPROVE')
801
			IF(EXISTS(SELECT * FROM TR_REQUEST_DOC WHERE PROCESS_ID ='APPROVE' AND REQ_ID =@p_REQ_ID))
802
			BEGIN
803
				DECLARE @TempTB TABLE
804
				(
805
					TOTAL_AMT DECIMAL(18,2),
806
					TRADE_ID VARCHAR(20),
807
					PLAN_ID VARCHAR(20)
808
				)
809
				INSERT INTO @TempTB			
810
				SELECT SUM(DT.TOTAL_AMT) TOTAL_AMT,PLDT.TRADE_ID,PLDT.PLAN_ID FROM dbo.TR_REQUEST_DOC_DT DT 
811
				LEFT JOIN dbo.PL_REQUEST_DOC_DT PLDT ON DT.PL_REQDT_ID=PLDT.REQDT_ID
812
				WHERE TRAN_TYPE_ID  IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK') AND DT.REQ_DOC_ID=@p_REQ_ID
813
				GROUP BY	PLDT.TRADE_ID,PLDT.PLAN_ID
814
				UPDATE dbo.PL_TRADEDETAIL SET AMT_EXE =AMT_EXE + (SELECT TOTAL_AMT FROM @TempTB WHERE [@TempTB].TRADE_ID=PL_TRADEDETAIL.TRADE_ID AND PL_TRADEDETAIL.PLAN_ID=[@TempTB].PLAN_ID) WHERE PL_TRADEDETAIL.TRADE_ID IN (SELECT TRADE_ID FROM @TempTB)
815

    
816
				IF(EXISTS(SELECT * FROM dbo.TR_REQUEST_DOC_DT WHERE REQ_DOC_ID=@p_REQ_ID AND  TRAN_TYPE_ID NOT IN (SELECT TRN_TYPE FROM dbo.CM_TRAN_TYPE WHERE NOTES='XK')))
817
					EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)
818
				
819

    
820
				------------BAODNQ 26/3/2022: Duyệt bb xét giá khi duyệt PYCMS hoàn tất------------
821
				DECLARE @p_TR_REQUEST_DOC_TOTAL_AMT DECIMAL(18,0),
822
						@p_RECORD_ID_100 VARCHAR(15), --bb xét giá dưới 100
823
						@p_RECORD_ID_100_500 VARCHAR(15), -- bb xét giá 100-500
824
						@p_RECORD_ID_500 VARCHAR(15) --bb xét giá trên 500
825
				
826
				SET @p_TR_REQUEST_DOC_TOTAL_AMT = (
827
					SELECT TOTAL_AMT FROM TR_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID
828
				)
829
				
830
				SET @p_RECORD_ID_100 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID)
831
				SET @p_RECORD_ID_100_500 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID)
832
				SET @p_RECORD_ID_500 = (SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID)
833

    
834

    
835
					----------TH BB XÉT GIÁ DƯỚI 100TR------
836
				--IF(@p_TR_REQUEST_DOC_TOTAL_AMT < 100000000)
837
				--BEGIN
838
				--	SET @p_RECORD_ID = (
839
				--		SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_DUOI_100M WHERE REQ_DOC_ID = @p_REQ_ID
840
				--	)
841

    
842
				--	IF(@p_RECORD_ID IS NULL OR @p_RECORD_ID = '')
843
				--	BEGIN
844
				--		ROLLBACK TRANSACTION
845
				--		SELECT '-1' as Result, N'Biên bản xét giá không tồn tại' ErrorDesc
846
				--		RETURN '-1'
847
				--	END
848
				--		-------DUYỆT BB XÉT GIÁ---------
849
				--	UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET
850
				--		AUTH_STATUS = 'A',
851
				--		CHECKER_ID = @p_TLNAME,
852
				--		APPROVE_DT = GETDATE()
853
				--	WHERE RECORD_ID = @p_RECORD_ID
854
				--	IF @@ERROR <> 0 GOTO ABORT
855
				--END
856
				IF(@p_RECORD_ID_100 IS NOT NULL AND @p_RECORD_ID_100 <> '')
857
				BEGIN
858
						-------DUYỆT BB XÉT GIÁ---------
859
					UPDATE TR_REQ_DOC_XETGIA_DUOI_100M SET
860
						AUTH_STATUS = 'A',
861
						CHECKER_ID = @p_TLNAME,
862
						APPROVE_DT = GETDATE()
863
					WHERE RECORD_ID = @p_RECORD_ID_100
864
					IF @@ERROR <> 0 GOTO ABORT
865
				END
866

    
867
					----------TH BB XÉT GIÁ TỪ 100TR - 500TR------
868
				--ELSE IF (@p_TR_REQUEST_DOC_TOTAL_AMT >= 100000000 AND @p_TR_REQUEST_DOC_TOTAL_AMT < 500000000)
869
				--BEGIN
870
				--	SET @p_RECORD_ID = (
871
				--		SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_100M_500M WHERE REQ_DOC_ID = @p_REQ_ID
872
				--	)
873

    
874
				--	IF(@p_RECORD_ID IS NULL OR @p_RECORD_ID = '')
875
				--	BEGIN
876
				--		ROLLBACK TRANSACTION
877
				--		SELECT '-1' as Result, N'Biên bản xét giá không tồn tại' ErrorDesc
878
				--		RETURN '-1'
879
				--	END
880
				--		-------DUYỆT BB XÉT GIÁ---------
881
				--	UPDATE TR_REQ_DOC_XETGIA_100M_500M SET
882
				--		AUTH_STATUS = 'A',
883
				--		CHECKER_ID = @p_TLNAME,
884
				--		APPROVE_DT = GETDATE()
885
				--	WHERE RECORD_ID = @p_RECORD_ID
886
				--	IF @@ERROR <> 0 GOTO ABORT
887
				--END
888
				ELSE IF (@p_RECORD_ID_100_500 IS NOT NULL AND @p_RECORD_ID_100_500 <> '')
889
				BEGIN
890
					-----DUYỆT BB XÉT GIÁ---------
891
					UPDATE TR_REQ_DOC_XETGIA_100M_500M SET
892
						AUTH_STATUS = 'A',
893
						CHECKER_ID = @p_TLNAME,
894
						APPROVE_DT = GETDATE()
895
					WHERE RECORD_ID = @p_RECORD_ID_100_500
896
					IF @@ERROR <> 0 GOTO ABORT
897
				END
898

    
899
					----------TH BB XÉT GIÁ TRÊN 500TR------
900
				--ELSE
901
				--BEGIN
902
				--	SET @p_RECORD_ID = (
903
				--		SELECT RECORD_ID FROM TR_REQ_DOC_XETGIA_TREN_500M WHERE REQ_DOC_ID = @p_REQ_ID
904
				--	)
905

    
906
				--	IF(@p_RECORD_ID IS NULL OR @p_RECORD_ID = '')
907
				--	BEGIN
908
				--		ROLLBACK TRANSACTION
909
				--		SELECT '-1' as Result, N'Biên bản xét giá không tồn tại' ErrorDesc
910
				--		RETURN '-1'
911
				--	END
912
				--		-------DUYỆT BB XÉT GIÁ---------
913
				--	UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET
914
				--		AUTH_STATUS = 'A',
915
				--		CHECKER_ID = @p_TLNAME,
916
				--		APPROVE_DT = GETDATE()
917
				--	WHERE RECORD_ID = @p_RECORD_ID
918
				--	IF @@ERROR <> 0 GOTO ABORT
919
				--END
920
				ELSE IF (@p_RECORD_ID_500 IS NOT NULL AND @p_RECORD_ID_500 <> '')
921
				BEGIN
922
					-------DUYỆT BB XÉT GIÁ---------
923
					UPDATE TR_REQ_DOC_XETGIA_TREN_500M SET
924
						AUTH_STATUS = 'A',
925
						CHECKER_ID = @p_TLNAME,
926
						APPROVE_DT = GETDATE()
927
					WHERE RECORD_ID = @p_RECORD_ID_500
928
					IF @@ERROR <> 0 GOTO ABORT
929
				END
930
				--------------END BAODNQ 26/3/2022----------------
931
			END
932
		END
933
				
934
		IF @@Error <> 0 GOTO ABORT
935
COMMIT TRANSACTION
936
SELECT 0 as Result, '' ErrorDesc
937
RETURN 0
938
ABORT:
939
BEGIN
940
		ROLLBACK TRANSACTION
941
		SELECT -1 as Result, '' ErrorDesc
942
		RETURN -1
943
END
944
--update 05042023_secretkey