Project

General

Profile

TR_REQ_PROCESS_CHILD_App.txt

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

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

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

    
415
				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)
416

    
417
				--IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
418
				--	SET @PROCESS_PARENT='DVCM'
419
				IF(NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'GDK_TC')
420
				AND EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DVCM'))
421
				BEGIN
422
					SET @PROCESS_PARENT='DVCM'
423
				END
424
				
425
				SET @IS_NEXT=(SELECT dbo.FN_CHECK_LIMIT_TR_REQ(@p_REQ_ID,'GDDV'))
426
				--SET @IS_NEXT=1
427
				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' ))) 
428
				BEGIN
429
				SET @DVDM_ID=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
430
				SET @ROLE_ID=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='PDPYC')
431
				SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID=@ROLE_ID)
432
				SET @DVDM_NAME= (SELECT DVDM_NAME FROM dbo.CM_DVDM WHERE DVDM_ID=@DVDM_ID)
433
				SET @NOTES = @NOTES + ' ' + @DVDM_NAME
434

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

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

    
485
					IF(EXISTS(SELECT * FROM @t_HANGHOA_TABLE WHERE HH_CODE IN ('HCQT-003-000007', 'SPMKT-001-000007')))
486
					BEGIN
487
						SET @p_LIMIT_PTGDK_HT = 300000000
488
						SET @p_LIMIT_TGD = 500000000
489
					END
490
					ELSE IF(EXISTS(SELECT * FROM @t_HANGHOA_TABLE WHERE HH_CODE IN ('THQHCC-001-000003')))
491
					BEGIN
492
						SET @p_LIMIT_PTGDK_HT = 50000000
493
						SET @p_LIMIT_TGD = 300000000
494
					END
495
					ELSE
496
					BEGIN
497
						SET @p_LIMIT_PTGDK_HT = 100000000
498
						SET @p_LIMIT_TGD = 300000000
499
					END
500
					----- 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)
501
					IF(EXISTS(SELECT * FROM TR_REQUEST_DOC_DT WHERE REQ_DOC_ID =@p_REQ_ID AND TRAN_TYPE_ID ='TRN0000000010'))
502
					BEGIN
503
						SET @p_LIMIT_TGD = 500000000000
504
					END
505
					---- END
506
					------------ PCYMS CÓ TỜ TRÌNH CĐT VƯỢT HẠN MỨC PTGDK HỖ TRỢ-------
507
					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
508
					BEGIN
509
						--SET @DVDM_ID = 'DM0000000000015' ---PHÒNG HỖ TRỢ
510
						--SET @ROLE_ID = 'PTGD' -- PHÓ TỔNG GIÁM ĐỐC KHỐI
511

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

    
588
						INSERT INTO dbo.PL_REQUEST_PROCESS
589
						(
590
							REQ_ID,
591
							PROCESS_ID,
592
							STATUS,
593
							ROLE_USER,
594
							BRANCH_ID,
595
							CHECKER_ID,
596
							APPROVE_DT,
597
							PARENT_PROCESS_ID,
598
							IS_LEAF,
599
							COST_ID,
600
							DVDM_ID,
601
							NOTES,
602
							IS_HAS_CHILD
603
						)
604
						VALUES
605
						(  @p_REQ_ID,        -- REQ_ID - varchar(15)
606
						   'GDK_CDT_TC',        -- PROCESS_ID - varchar(10)
607
							'U',        -- STATUS - varchar(5)
608
							@ROLE_ID,        -- ROLE_USER - varchar(50)
609
							'',        -- BRANCH_ID - varchar(15)
610
							'',        -- CHECKER_ID - varchar(15)
611
							NULL, -- APPROVE_DT - datetime
612
							@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
613
							'',        -- IS_LEAF - varchar(1)
614
							'',        -- COST_ID - varchar(15)
615
							@DVDM_ID,        -- DVDM_ID - varchar(15)
616
							N'Chờ Giám đốc khối Tài Chính phê duyệt',       -- NOTES - nvarchar(500)
617
							0       -- IS_HAS_CHILD - bit
618
						)
619
						SET @PROCESS_PARENT= 'GDK_CDT_TC'
620
					END
621
					---- 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Ợ
622
					DECLARE @p_PL_REQ_ID VARCHAR(15)
623
					SET @p_PL_REQ_ID =(SELECT PL_REQ_ID FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
624
					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 
625
					WHERE REQ_ID =@p_PL_REQ_ID AND TRADE_TYPE = 'CDT')))
626
					BEGIN
627
					-------------------PCYMS CÓ TỜ TRÌNH CĐT VƯỢT HẠN MỨC TGD-------
628
					IF(@p_TOTAL_AMT_REQ_DOC > @p_LIMIT_TGD)
629
					BEGIN
630
						----------------Qua thư ký TGĐ trc-----------------
631
						--SET @DVDM_ID = 'DM0000000000013'
632
						SET @DVDM_ID = NULL
633
						SET @ROLE_ID = 'TKTGD'
634
						INSERT INTO dbo.PL_REQUEST_PROCESS
635
						(
636
							REQ_ID,
637
							PROCESS_ID,
638
							STATUS,
639
							ROLE_USER,
640
							BRANCH_ID,
641
							CHECKER_ID,
642
							APPROVE_DT,
643
							PARENT_PROCESS_ID,
644
							IS_LEAF,
645
							COST_ID,
646
							DVDM_ID,
647
							NOTES,
648
							IS_HAS_CHILD
649
						)
650
						VALUES
651
						(  @p_REQ_ID,        -- REQ_ID - varchar(15)
652
						   'TKTGD_CDT',        -- PROCESS_ID - varchar(10)
653
							'U',        -- STATUS - varchar(5)
654
							@ROLE_ID,        -- ROLE_USER - varchar(50)
655
							'',        -- BRANCH_ID - varchar(15)
656
							'',        -- CHECKER_ID - varchar(15)
657
							NULL, -- APPROVE_DT - datetime
658
							@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
659
							'',        -- IS_LEAF - varchar(1)
660
							'',        -- COST_ID - varchar(15)
661
							@DVDM_ID,        -- DVDM_ID - varchar(15)
662
							N'Chờ Thư ký Tổng Giám đốc phê duyệt',   -- NOTES - nvarchar(500)
663
							0       -- IS_HAS_CHILD - bit
664
						)
665
						SET @PROCESS_PARENT= 'TKTGD_CDT'
666

    
667
						---------------Qua TGĐ------------------
668
						--SET @DVDM_ID = 'DM0000000000013'
669
						SET @DVDM_ID = NULL
670
						SET @ROLE_ID = 'TGD'
671
						INSERT INTO dbo.PL_REQUEST_PROCESS
672
						(
673
							REQ_ID,
674
							PROCESS_ID,
675
							STATUS,
676
							ROLE_USER,
677
							BRANCH_ID,
678
							CHECKER_ID,
679
							APPROVE_DT,
680
							PARENT_PROCESS_ID,
681
							IS_LEAF,
682
							COST_ID,
683
							DVDM_ID,
684
							NOTES,
685
							IS_HAS_CHILD
686
						)
687
						VALUES
688
						(  @p_REQ_ID,        -- REQ_ID - varchar(15)
689
						   'TGD_CDT',        -- PROCESS_ID - varchar(10)
690
							'U',        -- STATUS - varchar(5)
691
							@ROLE_ID,        -- ROLE_USER - varchar(50)
692
							'',        -- BRANCH_ID - varchar(15)
693
							'',        -- CHECKER_ID - varchar(15)
694
							NULL, -- APPROVE_DT - datetime
695
							@PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
696
							'',        -- IS_LEAF - varchar(1)
697
							'',        -- COST_ID - varchar(15)
698
							@DVDM_ID,        -- DVDM_ID - varchar(15)
699
							N'Chờ Tổng Giám đốc phê duyệt',   -- NOTES - nvarchar(500)
700
							0       -- IS_HAS_CHILD - bit
701
						)
702
						SET @PROCESS_PARENT= 'TGD_CDT'
703
					END
704
				END
705
				----------------------------END BAODNQ 11/6/2022------------------
706
				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Ợ
707
				INSERT INTO dbo.PL_REQUEST_PROCESS
708
				(
709
				    REQ_ID,
710
				    PROCESS_ID,
711
				    STATUS,
712
				    ROLE_USER,
713
				    BRANCH_ID,
714
				    CHECKER_ID,
715
				    APPROVE_DT,
716
				    PARENT_PROCESS_ID,
717
				    IS_LEAF,
718
				    COST_ID,
719
				    DVDM_ID,
720
				    NOTES,
721
				    IS_HAS_CHILD
722
				)
723
				VALUES
724
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
725
				    'APPROVE',        -- PROCESS_ID - varchar(10)
726
				    'U',        -- STATUS - varchar(5)
727
				    '',        -- ROLE_USER - varchar(50)
728
				    '',        -- BRANCH_ID - varchar(15)
729
				    '',        -- CHECKER_ID - varchar(15)
730
				    NULL, -- APPROVE_DT - datetime
731
				    @PROCESS_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
732
				    'N',        -- IS_LEAF - varchar(1)
733
				    '',        -- COST_ID - varchar(15)
734
				    '',        -- DVDM_ID - varchar(15)
735
				    N'Hoàn tất',       -- NOTES - nvarchar(500)
736
				    NULL       -- IS_HAS_CHILD - bit
737
				    )
738
				DECLARE @PROCESS_NEXT_ID VARCHAR(10)
739
				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)
740

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

    
751
							SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
752
							SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
753
							SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
754
							-- LUCTV 07082020 KIEM TRA NEU ROLE KHAC ROLE GDDV THI PHAI CHUYEN ROLE THANH GDDV
755
							--IF(@ROLE_ID ='KTT')
756
							--BEGIN
757
							--	SET @ROLE_ID ='GDDV'
758
							--END
759
							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)
760
						
761

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

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

    
777
										----------------BAODNQ 6/7/2022-----------------
778
										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 = '')))
779
										BEGIN
780
											DECLARE @p_PROCESS_NOTES NVARCHAR(MAX)
781
											IF(@PROCESS_NEXT = 'GDK_TC')
782
											BEGIN
783
												SET @p_PROCESS_NOTES = N'Chờ Giám đốc khối Tài Chính phê duyệt'
784
											END
785
											ELSE IF(@PROCESS_NEXT = 'GDK_PYC')
786
											BEGIN
787
												SET @NOTES =(SELECT ROLE_DESC FROM dbo.TL_SYSROLE WHERE ROLE_ID='GDK')
788
												SET @p_PROCESS_NOTES = N'Chờ ' +@NOTES+N' phê duyệt'
789
											END
790

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

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

    
817
				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')))
818
					EXEC dbo.TR_REQ_DOC_Ins_To_PO @p_TR_REQ_ID = @p_REQ_ID -- varchar(15)
819
				
820

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

    
835

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

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

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

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

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

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