Project

General

Profile

UPDATE APP REQ 3.txt

Truong Nguyen Vu, 05/15/2020 11:49 AM

 
1
USE [gAMSPro_VietcapitalBank_v2]
2
GO
3
/****** Object:  StoredProcedure [dbo].[PL_REQUEST_PROCESS_App]    Script Date: 15-May-20 11:47:44 ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[PL_REQUEST_PROCESS_App]
9
    @p_REQ_ID VARCHAR(15) = NULL,
10
	@p_AUTH_STATUS VARCHAR(1) = NULL,
11
	@p_CHECKER_ID varchar(15)  = NULL,
12
	@p_APPROVE_DT DATETIME = NULL,
13
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
14
	@p_BRANCH_LOGIN VARCHAR(15),
15
	@p_PROCESS_DESC NVARCHAR(MAX)
16
	
17
AS
18

    
19
--SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE)
20
	--Validation is here
21
DECLARE @ERRORSYS NVARCHAR(15) = '' 
22
  IF ( NOT EXISTS ( SELECT * FROM PL_REQUEST_DOC WHERE  REQ_ID = @p_REQ_ID))
23
	SET @ERRORSYS = 'REQ-00002'
24
IF @ERRORSYS <> '' 
25
BEGIN
26
   ROLLBACK TRANSACTION
27
	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
28
	RETURN '0'
29
END 
30

    
31
BEGIN TRANSACTION
32

    
33
	--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
34
	--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
35

    
36
	 DECLARE
37
	@Result VARCHAR(5),
38
	@PROCESS_CURR VARCHAR(10),
39
	@STEP_CURR INT,
40
	@STEP_NEXT INT,
41
	@PROCESS_NEXT VARCHAR(10),
42
	@ROLE_USER_NOTIFI VARCHAR(50),
43
	@DEP_ID VARCHAR(15),
44
	@IS_LEAF VARCHAR(1),
45
	@NOTES NVARCHAR(500),
46
	@IS_NEXT BIT,@ROLE_USER VARCHAR(20),@ROLE_NEXT VARCHAR(20),@LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@PROCESS_ID_NEXT VARCHAR(20),
47
	@TOTAL_AMT DECIMAL(18,2),
48
	@STEP_PARENT VARCHAR(20),
49
	@NOTES_CDT VARCHAR(20),
50
	@ROLE_CDT VARCHAR(20),
51
	@DVDM_CDT VARCHAR(20),
52
	@LIMIT_VALUE_CDT DECIMAL(18,2),
53
	@DVDM_ID_TT VARCHAR(20),
54
	@TOTAL_AMT_GD DECIMAL(18,2),
55
	@BRANCH_CREATE VARCHAR(15),
56
	@BRANCH_CREATE_TYPE VARCHAR(15),
57
	@DEP_CREATE VARCHAR(15),
58
	@BRANCH_PARENT VARCHAR(15)
59

    
60

    
61
	SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
62

    
63
	SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
64
	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)
65

    
66
	
67
		
68
		SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
69
	DECLARE @DVDM_ID TABLE (
70
		DVDM_ID VARCHAR(15)
71
	)
72
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
73

    
74
IF(@PROCESS_CURR LIKE '%_DC')
75
BEGIN
76
	SELECT @ERROR=ERROR,
77
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
78
		IF(@ERROR=1)
79
		BEGIN
80
	 ROLLBACK TRANSACTION;
81
    SELECT '-1'  Result,
82
           @EROOR_DES ErrorDesc
83
   
84
    RETURN '0';
85
	END
86
END
87
SELECT @ERROR=ERROR,
88
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
89
		IF(@ERROR=1)
90
		BEGIN
91
	 ROLLBACK TRANSACTION;
92
    SELECT '-1'  Result,
93
           @EROOR_DES ErrorDesc
94
   
95
    RETURN '0';
96
END
97
	
98
	
99

    
100
	INSERT INTO @DVDM_ID
101
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN) GROUP BY DVDM_ID
102
	
103

    
104
	
105
			
106
	UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P',NOTES=@NOTES+N' đã phê duyệt',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND ROLE_USER=@p_ROLE_LOGIN AND ( DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR DVDM_ID ='' OR DVDM_ID IS NULL)
107
	
108
	
109
	IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
110
	BEGIN
111
		UPDATE dbo.PL_REQUEST_DOC_DT SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_ID=@p_REQ_ID AND  ( KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT' OR @p_ROLE_LOGIN='GDDV' )
112
	END
113
	IF(@PROCESS_CURR LIKE '%_DC')
114
	BEGIN
115
		UPDATE dbo.PL_REQUEST_TRANSFER SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_DOC_ID=@p_REQ_ID AND  ( FR_KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT')
116
	END
117
	
118
	INSERT INTO dbo.PL_PROCESS
119
			(
120
				REQ_ID,
121
				PROCESS_ID,
122
				CHECKER_ID,
123
				APPROVE_DT,
124
				PROCESS_DESC,NOTES
125
			)
126
			VALUES
127
			(   @p_REQ_ID,        -- REQ_ID - varchar(15)
128
				@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
129
				@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
130
				GETDATE(), -- APPROVE_DT - datetime
131
				@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
132
			)	
133
	
134
	
135
		
136

    
137

    
138
		SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
139

    
140
	
141
		SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
142

    
143

    
144
			
145
	SET @Result='1'
146
	IF(NOT EXISTS(SELECT PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR AND [STATUS] <> 'P'))
147
	BEGIN	
148

    
149
			IF(@PROCESS_CURR LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE 'TC')
150
			BEGIN
151
				
152

    
153
				SET @ROLE_USER=(SELECT TOP 1 ROLE_USER FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR)
154
				IF(@ROLE_USER <> 'TGD')
155
				BEGIN
156
					
157
					
158
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
159
							SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF)
160
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
161

    
162
							IF(@TOTAL_TRANSFER>@LIMIT_APP)
163
							BEGIN
164
							DECLARE @LEVEL INT
165
								SELECT @LEVEL=BRANCH_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND ROLE_ID =@ROLE_USER
166
								SET @LEVEL=@LEVEL+1
167
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
168
								IF(@ROLE_NEXT='PTGD' AND EXISTS(SELECT * FROM dbo.CM_DVDM WHERE IS_KHOI=1 AND DVDM_ID=@KHOI_ID_TF AND IS_PTGD=0))
169
								BEGIN
170
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
171
							
172
								END
173
								SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_ID_NEXT LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
174
								
175
								INSERT INTO dbo.PL_REQUEST_PROCESS
176
								(
177
								    REQ_ID,
178
								    PROCESS_ID,
179
								    STATUS,
180
								    ROLE_USER,
181
								    BRANCH_ID,
182
								    CHECKER_ID,
183
								    APPROVE_DT,
184
								    PARENT_PROCESS_ID,
185
								    IS_LEAF,
186
								    COST_ID,
187
								    DVDM_ID,
188
								    NOTES,
189
								    IS_HAS_CHILD,
190
								    DEP_ID
191
								)
192
								VALUES
193
								(   @p_REQ_ID,        -- REQ_ID - varchar(15)
194
								    @PROCESS_ID_NEXT,        -- PROCESS_ID - varchar(10)
195
								    'U',        -- STATUS - varchar(5)
196
								    @ROLE_NEXT,        -- ROLE_USER - varchar(50)
197
								    '',        -- BRANCH_ID - varchar(15)
198
								    '',        -- CHECKER_ID - varchar(15)
199
								    NULL, -- APPROVE_DT - datetime
200
								    @PROCESS_CURR,        -- PARENT_PROCESS_ID - varchar(10)
201
								    'N',        -- IS_LEAF - varchar(1)
202
								    '',        -- COST_ID - varchar(15)
203
								    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
204
								    N'Chờ '+@NOTES+' phê duyệt',       -- NOTES - nvarchar(500)
205
								    0,      -- IS_HAS_CHILD - bit
206
								    ''         -- DEP_ID - varchar(20)
207
								)
208
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@PROCESS_ID_NEXT WHERE PROCESS_ID=@PROCESS_NEXT
209
							SET @PROCESS_NEXT=@PROCESS_ID_NEXT
210
							END
211
							ELSE
212
							BEGIN
213
							SET @STEP_PARENT=@PROCESS_CURR
214
							UPDATE dbo.LIMIT_ACCUMULATE SET TOTAL_APP_AMT = ISNULL(TOTAL_APP_AMT,0) + @TOTAL_TRANSFER WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF
215
						
216
							BEGIN
217
							
218
									
219
									IF(@BRANCH_CREATE_TYPE='PGD')
220
									BEGIN
221
	
222
										SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
223
										IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND BRANCH_ID=@BRANCH_PARENT AND (DEP_ID IS NULL OR DEP_ID='')))
224
										BEGIN
225
											INSERT INTO dbo.PL_REQUEST_PROCESS
226
											(
227
											REQ_ID,
228
											PROCESS_ID,
229
											STATUS,
230
											ROLE_USER,
231
											BRANCH_ID,
232
											DEP_ID,
233
											CHECKER_ID,
234
											APPROVE_DT,
235
											PARENT_PROCESS_ID,
236
											IS_LEAF,
237
											NOTES
238
											)
239
											VALUES
240
											(   
241
											@p_REQ_ID,               -- REQ_ID - varchar(15)
242
											'DVC',                  -- PROCESS_ID - varchar(10)
243
											'U',                     -- STATUS - varchar(5)
244
											'GDDV',                      -- ROLE_USER - varchar(50)
245
											@BRANCH_PARENT,
246
											NULL,                      -- BRANCH_ID - varchar(15)
247
											NULL,           -- CHECKER_ID - varchar(15)
248
											NULL , -- APPROVE_DT - datetime
249
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
250

    
251
											--SET @STEP_CURR = 'DVC';
252
											SET @STEP_PARENT = 'DVC';
253
										END
254
	
255
									END
256
									ELSE 
257
									IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
258
									AND ((
259
										BRANCH_ID=@BRANCH_CREATE 
260
										AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
261
										AND (DEP_ID IS NULL OR DEP_ID='')))
262
										)
263
											OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
264
											LEFT JOIN dbo.PL_COSTCENTER_DT PCDT ON PCDT.COST_ID = PC.COST_ID WHERE PL_REQUEST_PROCESS.DVDM_ID=PC.DVDM_ID AND DEP_ID=@DEP_CREATE AND BRANCH_ID=@BRANCH_CREATE)
265
											)
266
									))
267
									BEGIN
268
									INSERT INTO dbo.PL_REQUEST_PROCESS
269
											(
270
											REQ_ID,
271
											PROCESS_ID,
272
											STATUS,
273
											ROLE_USER,
274
											BRANCH_ID,
275
											DEP_ID,
276
											CHECKER_ID,
277
											APPROVE_DT,
278
											PARENT_PROCESS_ID,
279
											IS_LEAF,
280
											NOTES
281
											)
282
											VALUES
283
											(   
284
											@p_REQ_ID,               -- REQ_ID - varchar(15)
285
											'DVC',                  -- PROCESS_ID - varchar(10)
286
											'U',                     -- STATUS - varchar(5)
287
											'GDDV',                      -- ROLE_USER - varchar(50)
288
											@BRANCH_CREATE,
289
											@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
290
											NULL,           -- CHECKER_ID - varchar(15)
291
											NULL , -- APPROVE_DT - datetime
292
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
293

    
294
									--SET @STEP_CURR = 'DVC';
295
									SET @STEP_PARENT = 'DVC';
296
									END
297

    
298

    
299

    
300

    
301
								
302
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))
303

    
304
								SET @TOTAL_AMT = (SELECT TOTAL_AMT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
305
								IF(@IS_NEXT=1 AND NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
306
								BEGIN
307

    
308
								DECLARE lstCostCenter CURSOR FOR
309
								SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND NOT EXISTS(
310
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='GDK'
311
								)
312
								GROUP BY KHOI_ID
313
										 OPEN lstCostCenter
314
		 						FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
315
								WHILE @@FETCH_STATUS = 0 
316
								BEGIN 
317
									INSERT INTO dbo.PL_REQUEST_PROCESS
318
									(
319
										REQ_ID,
320
										PROCESS_ID,
321
										STATUS,
322
										ROLE_USER,
323
										BRANCH_ID,
324
										CHECKER_ID,
325
										APPROVE_DT,
326
										PARENT_PROCESS_ID,
327
										IS_LEAF,
328
										COST_ID,
329
										DVDM_ID,
330
										NOTES,IS_HAS_CHILD
331
									)
332
									VALUES
333
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
334
										'GDK_TT',        -- PROCESS_ID - varchar(10)
335
										'U',        -- STATUS - varchar(5)
336
										'GDK',        -- ROLE_USER - varchar(50)
337
										'',        -- BRANCH_ID - varchar(15)
338
										'',        -- CHECKER_ID - varchar(15)
339
										NULL, -- APPROVE_DT - datetime
340
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
341
										'N',        -- IS_LEAF - varchar(1)
342
										'',        -- COST_ID - varchar(15)
343
										@DVDM_ID_TT ,
344
										N'Chờ giám đốc khối xác nhận',
345
										0        -- DVDM_ID - varchar(15)
346
									  )
347
									  SET @STEP_PARENT='GDK_TT'	
348
								FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
349
								END
350
								CLOSE lstCostCenter
351
								DEALLOCATE lstCostCenter
352
		
353
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))
354

    
355
								
356
								IF(@IS_NEXT=1)
357
								BEGIN
358
								IF(EXISTS(SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT DT
359
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=1 AND NOT EXISTS(
360
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'
361
								) ))
362
									BEGIN
363
									DECLARE lstCostCenter CURSOR FOR
364
									SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT DT
365
									LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=1 AND NOT EXISTS(
366
										SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'
367
									)
368
									GROUP BY KHOI_ID
369
									OPEN lstCostCenter
370
		 							FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
371
									WHILE @@FETCH_STATUS = 0 
372
									BEGIN 
373
										INSERT INTO dbo.PL_REQUEST_PROCESS
374
										(
375
											REQ_ID,
376
											PROCESS_ID,
377
											STATUS,
378
											ROLE_USER,
379
											BRANCH_ID,
380
											CHECKER_ID,
381
											APPROVE_DT,
382
											PARENT_PROCESS_ID,
383
											IS_LEAF,
384
											COST_ID,
385
											DVDM_ID,
386
											NOTES,IS_HAS_CHILD
387
										)
388
										VALUES
389
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
390
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
391
											'U',        -- STATUS - varchar(5)
392
											'PTGD',        -- ROLE_USER - varchar(50)
393
											'',        -- BRANCH_ID - varchar(15)
394
											'',        -- CHECKER_ID - varchar(15)
395
											NULL, -- APPROVE_DT - datetime
396
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
397
											'N',        -- IS_LEAF - varchar(1)
398
											'',        -- COST_ID - varchar(15)
399
											@DVDM_ID_TT ,
400
											N'Chờ phó tổng giám đốc khối xác nhận',
401
											0        -- DVDM_ID - varchar(15)
402
										  )	
403
									  
404
									SET @STEP_PARENT='PTGDK_TT'
405
									FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
406
									END
407
									CLOSE lstCostCenter
408
									DEALLOCATE lstCostCenter
409
								
410
									SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))
411
									END
412
								IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_DOC_DT DT
413
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=0 ))
414
								BEGIN
415
								SET @IS_NEXT=1
416
								END
417
								
418

    
419
								IF(@IS_NEXT=1)
420
								BEGIN
421
									 INSERT INTO dbo.PL_REQUEST_PROCESS
422
									(
423
										REQ_ID,
424
										PROCESS_ID,
425
										STATUS,
426
										ROLE_USER,
427
										BRANCH_ID,
428
										CHECKER_ID,
429
										APPROVE_DT,
430
										PARENT_PROCESS_ID,
431
										IS_LEAF,
432
										COST_ID,
433
										DVDM_ID,
434
										NOTES,IS_HAS_CHILD
435
									)
436
									VALUES
437
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
438
										'TGD',        -- PROCESS_ID - varchar(10)
439
										'U',        -- STATUS - varchar(5)
440
										'TGD',        -- ROLE_USER - varchar(50)
441
										'',        -- BRANCH_ID - varchar(15)
442
										'',        -- CHECKER_ID - varchar(15)
443
										NULL, -- APPROVE_DT - datetime
444
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
445
										'N',        -- IS_LEAF - varchar(1)
446
										'',        -- COST_ID - varchar(15)
447
										'' ,
448
										N'Chờ tổng giám đốc xác nhận',
449
										0        -- DVDM_ID - varchar(15)
450
									  )
451
									  SET @STEP_PARENT='TGD'	
452
									  IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
453
			BEGIN
454
				
455

    
456
				INSERT INTO dbo.PL_REQUEST_PROCESS
457
            (
458
                REQ_ID,
459
                PROCESS_ID,
460
                STATUS,
461
                ROLE_USER,
462
                BRANCH_ID,
463
                CHECKER_ID,
464
                APPROVE_DT,
465
                PARENT_PROCESS_ID,
466
                IS_LEAF,
467
                COST_ID,
468
                DVDM_ID,
469
                NOTES,
470
                IS_HAS_CHILD
471
            )
472
            VALUES
473
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
474
                'HDQT',                               -- PROCESS_ID - varchar(10)
475
                'U',                                 -- STATUS - varchar(5)
476
                'HDQT',                               -- ROLE_USER - varchar(50)
477
                '',                                  -- BRANCH_ID - varchar(15)
478
                '',                                  -- CHECKER_ID - varchar(15)
479
                NULL,                                -- APPROVE_DT - datetime
480
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
481
                'N',                                 -- IS_LEAF - varchar(1)
482
                '',                                  -- COST_ID - varchar(15)
483
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
484
                );
485
            SET @STEP_PARENT = 'HDQT';
486
			END
487
								END
488
				
489
						--ELSE
490
						--BEGIN
491
					
492
						--END
493
				END
494
								END
495
								END
496

    
497
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT
498
							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)
499
							END
500
				END
501
				ELSE
502
				BEGIN
503
							
504
							
505
							
506
							SET @STEP_PARENT='TGD'	
507
							IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
508
							BEGIN
509
				
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
                'HDQT',                               -- PROCESS_ID - varchar(10)
530
                'U',                                 -- STATUS - varchar(5)
531
                'HDQT',                               -- ROLE_USER - varchar(50)
532
                '',                                  -- BRANCH_ID - varchar(15)
533
                '',                                  -- CHECKER_ID - varchar(15)
534
                NULL,                                -- APPROVE_DT - datetime
535
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
536
                'N',                                 -- IS_LEAF - varchar(1)
537
                '',                                  -- COST_ID - varchar(15)
538
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
539
                );
540
							SET @STEP_PARENT = 'HDQT';
541
							
542
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT
543
								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)
544
							END
545
								
546
				
547
						--ELSE
548
						--BEGIN
549
					
550
						--END
551
							
552
								
553
								
554

    
555
						
556
				END
557

    
558
			END
559

    
560

    
561

    
562

    
563
			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
564
			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
565
				SET @IS_LEAF=(SELECT TOP 1 IS_LEAF FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
566
			
567
			
568
			IF(@IS_LEAF='Y')
569
			BEGIN
570
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
571
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
572

    
573

    
574

    
575
				SET @Result='0'
576
			END
577
	END
578

    
579

    
580
	IF @@Error <> 0 GOTO ABORT
581
			
582
COMMIT TRANSACTION
583
SELECT @Result as Result , @ROLE_USER_NOTIFI AS  ROLE_NOTIFI, '' ErrorDesc
584
RETURN '0'
585
ABORT:
586
BEGIN
587
	
588
		ROLLBACK TRANSACTION
589
		SELECT '-1' as Result, '' ROLE_NOTIFI ,'' ErrorDesc
590
		RETURN '-1'
591
End
592

    
593

    
594

    
595

    
596

    
597