Project

General

Profile

9.4 HIEU CHINH CHU TRUONG 0002 2021 TTr-06921044.txt

Luc Tran Van, 04/06/2021 02:54 PM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App]
3
@p_REQ_ID VARCHAR(20),
4
@p_PROCESS_ID VARCHAR(20),
5
@p_TLNAME VARCHAR(20),
6
@p_MAKER_ID VARCHAR(20),
7
@p_TYPE_JOB VARCHAR(20),
8
@p_PROCESS_DES NVARCHAR(MAX),
9
@p_REF_ID INT
10
AS
11
BEGIN TRANSACTION
12
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
13
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'))
14
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
15
BEGIN
16
	ROLLBACK TRANSACTION
17
	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
18
	RETURN -1
19
END
20

    
21
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS  WHERE REQ_ID=@p_REQ_ID AND IS_HAS_CHILD=1 AND STATUS='C' ))
22
BEGIN
23
	IF(EXISTS(
24
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
25
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
26
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C'))
27
	BEGIN
28
		ROLLBACK TRANSACTION  
29
		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  
30
		RETURN -1
31
	END
32

    
33
	IF(NOT EXISTS(
34
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
35
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
36
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL'))
37
	BEGIN
38

    
39
		ROLLBACK TRANSACTION  
40
		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  
41
		RETURN -1 
42
	END
43

    
44
END
45
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
46
SELECT @ERROR=ERROR,
47
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
48
IF(@ERROR=1)
49
BEGIN
50
	 ROLLBACK TRANSACTION;
51
    SELECT -1  Result,
52
           @EROOR_DES ErrorDesc
53
   
54
    RETURN 0;
55
END
56

    
57

    
58

    
59
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20)
60
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
61
				@PROCESS_CURR VARCHAR(10),
62
				@STEP_CURR INT,
63
				@STEP_NEXT VARCHAR(20),
64
				@PROCESS_NEXT VARCHAR(10),
65
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
66

    
67
SELECT @BRANCH_ID=  TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID
68

    
69

    
70
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
71

    
72

    
73
		DECLARE
74
		@COST_ID_TABLE TABLE (
75
			COST_ID VARCHAR(15)
76
		)
77

    
78
		DECLARE @DVDM_ID_TABLE TABLE (
79
			DVDM_ID VARCHAR(15)
80
		)
81

    
82
		DECLARE @AUTHOR_DVDM TABLE
83
		(
84
		ROLE_ID VARCHAR(100),
85
		BRANCH_ID VARCHAR(20),
86
		DEP_ID VARCHAR(20),
87
		DVDM_ID VARCHAR(20)
88
		)
89

    
90

    
91
	INSERT INTO @AUTHOR_DVDM
92
	(
93
	    ROLE_ID,
94
	    BRANCH_ID,
95
	    DEP_ID,
96
	    DVDM_ID
97
	)
98
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
99
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
100
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
101
	WHERE TU.TLNANME=@p_MAKER_ID
102
	UNION ALL
103
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
104
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
105
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
106
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
107
	WHERE TU.TLNANME=@p_MAKER_ID
108
	UNION ALL
109
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
110
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
111
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
112
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
113
	UNION ALL
114
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
115
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
116
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
117
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
118
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
119

    
120
	
121

    
122

    
123

    
124
		INSERT INTO @COST_ID_TABLE
125
		SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
126

    
127
		INSERT INTO @DVDM_ID_TABLE
128
		SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
129

    
130
		
131
		DECLARE @TYPE_JOB_CR VARCHAR(20)
132

    
133

    
134
		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')
135

    
136
			
137
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
138
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
139
		--AND TLNAME=@p_TLNAME
140
		AND TYPE_JOB=@TYPE_JOB_CR
141

    
142

    
143
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@TYPE_JOB_CR)
144
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
145
			
146
		INSERT INTO dbo.PL_PROCESS
147
				(
148
					REQ_ID,
149
					PROCESS_ID,
150
					CHECKER_ID,
151
					APPROVE_DT,
152
					PROCESS_DESC,NOTES
153
				)
154
				VALUES
155
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
156
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
157
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
158
					GETDATE() , -- APPROVE_DT - datetime
159
					@p_PROCESS_DES ,
160
					@TYPE_JOB_NAME+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
161
				)
162

    
163
		
164

    
165

    
166
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
167
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
168
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
169
		--AND TLNAME=@p_TLNAME 
170
		AND TYPE_JOB=@TYPE_JOB_CR
171
		ORDER BY LEVEL_JOB DESC),0)                  
172

    
173
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
174
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
175
		
176
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
177
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
178
		BEGIN
179

    
180

    
181
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
182
				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)
183
				
184
				
185
				IF(@PROCESS_CURR='TC')
186
				BEGIN
187
						SELECT @ERROR=ERROR,
188
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
189
					IF(@ERROR=1)
190
					BEGIN
191
						 ROLLBACK TRANSACTION;
192
						SELECT '-1'  Result,
193
							   @EROOR_DES ErrorDesc
194
   
195
						RETURN '0';
196
					END
197
					---Duyệt TTCT
198

    
199
					DECLARE @LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20)
200
					,@KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT
201
					
202
					DECLARE @DATA_KHOI TABLE (
203
					KHOI_ID VARCHAR(20),
204
					TOTAL_AMT DECIMAL(18,2),
205
					IS_NEXT BIT,
206
					IS_GDK BIT,
207
					IS_PTGD BIT
208
					)
209

    
210
					INSERT INTO @DATA_KHOI
211
					(
212
					    KHOI_ID,
213
						TOTAL_AMT,
214
					    IS_NEXT,
215
						IS_GDK,
216
						IS_PTGD
217
					)
218
					SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT
219
					LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID
220
					
221
					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
222
					SET @STEP_PARENT='TC'
223
					
224
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
225

    
226
					DECLARE lstDATA CURSOR FOR
227
					SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI
228

    
229
					OPEN lstDATA
230
					FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD
231
					WHILE @@FETCH_STATUS=0
232
					BEGIN
233
						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)
234

    
235
						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)
236
						BEGIN
237
							INSERT INTO dbo.PL_REQUEST_PROCESS
238
							(
239
								REQ_ID,
240
								PROCESS_ID,
241
								STATUS,
242
								ROLE_USER,
243
								BRANCH_ID,
244
								CHECKER_ID,
245
								APPROVE_DT,
246
								PARENT_PROCESS_ID,
247
								IS_LEAF,
248
								COST_ID,
249
								DVDM_ID,
250
								NOTES,IS_HAS_CHILD
251
							)
252
							VALUES
253
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
254
								'GDK_TT',        -- PROCESS_ID - varchar(10)
255
								'U',        -- STATUS - varchar(5)
256
								'GDK',        -- ROLE_USER - varchar(50)
257
								'',        -- BRANCH_ID - varchar(15)
258
								'',        -- CHECKER_ID - varchar(15)
259
								NULL, -- APPROVE_DT - datetime
260
								@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
261
								'N',        -- IS_LEAF - varchar(1)
262
								'',        -- COST_ID - varchar(15)
263
								@KHOI_ID_TF ,
264
								N'Chờ giám đốc khối xác nhận',
265
								0        -- DVDM_ID - varchar(15)
266
								)
267
						END
268

    
269
						IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
270
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
271
						IF(@IS_GDK=0)
272
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
273
						FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD 
274
					END
275
					CLOSE lstDATA
276
					DEALLOCATE lstDATA
277
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
278
						SET @STEP_PARENT='GDK_TT'
279
					IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) 
280
							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))
281
						BEGIN
282
							DECLARE lstDATA CURSOR FOR
283
							SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI WHERE IS_NEXT=1
284

    
285
							OPEN lstDATA
286
							FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD
287
							WHILE @@FETCH_STATUS=0
288
							BEGIN
289
							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)
290

    
291
							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)
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,IS_HAS_CHILD
307
							)
308
							VALUES
309
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
310
								'PTGDK_TT',        -- PROCESS_ID - varchar(10)
311
								'U',        -- STATUS - varchar(5)
312
								'PTGD',        -- ROLE_USER - varchar(50)
313
								'',        -- BRANCH_ID - varchar(15)
314
								'',        -- CHECKER_ID - varchar(15)
315
								NULL, -- APPROVE_DT - datetime
316
								@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
317
								'N',        -- IS_LEAF - varchar(1)
318
								'',        -- COST_ID - varchar(15)
319
								@KHOI_ID_TF ,
320
								N'Chờ Phó tổng giám đốc khối xác nhận',
321
								0        -- DVDM_ID - varchar(15)
322
								)
323
							END
324
						UPDATE @DATA_KHOI SET IS_NEXT=0
325
						IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
326
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
327
						IF(@IS_PTGD=0)
328
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
329
						FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD 
330
					END
331
							CLOSE lstDATA
332
							DEALLOCATE lstDATA
333
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
334
						SET @STEP_PARENT='PTGDK_TT'
335
					IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) 
336
							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))
337
						BEGIN
338
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
339
							BEGIN
340
							INSERT INTO dbo.PL_REQUEST_PROCESS
341
							(
342
							REQ_ID,
343
							PROCESS_ID,
344
							STATUS,
345
							ROLE_USER,
346
							BRANCH_ID,
347
							CHECKER_ID,
348
							APPROVE_DT,
349
							PARENT_PROCESS_ID,
350
							IS_LEAF,
351
							COST_ID,
352
							DVDM_ID,
353
							NOTES,
354
							IS_HAS_CHILD
355
							)
356
							VALUES
357
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
358
							'TGD',                               -- PROCESS_ID - varchar(10)
359
							'U',                                 -- STATUS - varchar(5)
360
							'TGD',                               -- ROLE_USER - varchar(50)
361
							'',                                  -- BRANCH_ID - varchar(15)
362
							'',                                  -- CHECKER_ID - varchar(15)
363
							NULL,                                -- APPROVE_DT - datetime
364
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
365
							'N',                                 -- IS_LEAF - varchar(1)
366
							'',                                  -- COST_ID - varchar(15)
367
							'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
368
							);
369
							END
370

    
371
						END
372
					
373

    
374
					END
375

    
376

    
377
				DECLARE @LAST_PROCESS VARCHAR(20)	
378
					
379
					
380
				SET @LAST_PROCESS=(
381
				SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL 
382
				LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID
383
				WHERE REQ_ID=@p_REQ_ID
384
				GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS 
385
				ORDER BY CP.LEVEL_PROCESS DESC)
386
					
387
			
388
					
389
					UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
390

    
391

    
392

    
393
					SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
394
					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 
395
					(ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) 
396
					AND PROCESS_ID=@PROCESS_CURR
397

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

    
400
					SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
401
					UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
402
				END
403
				ELSE IF(@PROCESS_CURR='KT')
404
				BEGIN
405
					--	SELECT @ERROR=ERROR,
406
					--	   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
407
					--IF(@ERROR=1)
408
					--BEGIN
409
					--	 ROLLBACK TRANSACTION;
410
					--	SELECT '-1'  Result,
411
					--		   @EROOR_DES ErrorDesc
412
   
413
					--	RETURN '0';
414
					--END
415

    
416
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
417
						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
418
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
419
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
420
				END
421
				ELSE IF(@PROCESS_CURR='DVCM')
422
				BEGIN
423
					SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
424

    
425

    
426
					UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID 
427
					AND (COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM))
428
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() 
429
					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))
430
					AND (DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE) OR  COST_ID IN (SELECT DVDM_ID FROM @AUTHOR_DVDM))
431
							
432

    
433

    
434
					IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
435
					BEGIN
436
						
437
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
438
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
439
						
440
					END
441
				END
442

    
443
				ELSE
444
				BEGIN
445

    
446
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
447

    
448

    
449
				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 FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='')
450
				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 
451
				
452
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
453
				BEGIN
454
						
455
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
456
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
457
						
458
				END
459

    
460

    
461
				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)))
462
					BEGIN
463
					IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
464
					BEGIN
465
							IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
466
							BEGIN
467

    
468
							
469
									DECLARE 	@LIMIT_VALUE DECIMAL(18,0),
470
									@IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
471
									DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
472
						
473

    
474
									SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID)
475
						
476
									SET @NOTE=   (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
477
									IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='TC'))
478
									BEGIN
479
									DECLARE lstTransfer CURSOR FOR
480
									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)
481
									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	)
482
									AND FR_DVDM_ID <>'DM0000000000048'
483
									GROUP BY FR_DVDM_ID
484
									OPEN lstTransfer
485
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
486
									WHILE @@FETCH_STATUS = 0 
487
									BEGIN 
488
									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
489
									LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
490
									WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
491
									BEGIN
492
										INSERT INTO dbo.PL_REQUEST_PROCESS
493
										(
494
											REQ_ID,
495
											PROCESS_ID,
496
											STATUS,
497
											ROLE_USER,
498
											BRANCH_ID,
499
											CHECKER_ID,
500
											APPROVE_DT,
501
											PARENT_PROCESS_ID,
502
											IS_LEAF,
503
											COST_ID,
504
											DVDM_ID,
505
											NOTES,IS_HAS_CHILD
506
										)
507
										VALUES
508
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
509
											'DVDM_DC',        -- PROCESS_ID - varchar(10)
510
											'U',        -- STATUS - varchar(5)
511
											'GDDV',        -- ROLE_USER - varchar(50)
512
											'',        -- BRANCH_ID - varchar(15)
513
											'',        -- CHECKER_ID - varchar(15)
514
											NULL, -- APPROVE_DT - datetime
515
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
516
											'N',        -- IS_LEAF - varchar(1)
517
											'',        -- COST_ID - varchar(15)
518
											@DVDM_ID ,        -- DVDM_ID - varchar(15)
519
											N'Chờ '+@NOTE+N' xác nhận'
520
											,0)
521
									END
522

    
523
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
524
									END
525
									CLOSE lstTransfer
526
									DEALLOCATE lstTransfer
527

    
528

    
529

    
530
								SET @STEP_NEXT='TC'
531
								IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
532
								BEGIN
533
										SET @STEP_PARENT='DVDM_DC'
534
										SET @STEP_NEXT	='DVDM_DC'
535
								END
536

    
537
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
538
								SET @STEP_PARENT='TC'
539
	
540
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID
541
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
542
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID
543
								END
544

    
545
						END	
546
					END
547
				END
548

    
549
				
550
				
551
				END
552

    
553
			IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE'))
554
			BEGIN
555
				
556
					
557
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
558
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
559
			END
560
		END
561
				
562
		IF @@Error <> 0 GOTO ABORT
563
COMMIT TRANSACTION
564
SELECT 0 as Result, '' ErrorDesc
565
RETURN 0
566
ABORT:
567
BEGIN
568
		ROLLBACK TRANSACTION
569
		SELECT -1 as Result, '' ErrorDesc
570
		RETURN -1
571
End
572
¿
573
UPDATE PL_REQUEST_DOC SET PROCESS_ID ='DVCM' WHERE REQ_ID ='PLRD00000201456'
574
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE ID ='36741'
575

    
576
UPDATE PL_REQUEST_DOC SET PROCESS_ID ='DVCM' WHERE REQ_ID ='PLRD00000201430'
577
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID ='PLRD00000201430' AND TLNAME ='sontv1' AND LEVEL_JOB ='TP'