Project

General

Profile

PL_REQUEST_PROCESS_APP_2.txt

Truong Nguyen Vu, 09/03/2020 04:42 PM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_REQUEST_PROCESS_App]
3
    @p_REQ_ID VARCHAR(15) = NULL,
4
	@p_AUTH_STATUS VARCHAR(1) = NULL,
5
	@p_CHECKER_ID varchar(15)  = NULL,
6
	@p_APPROVE_DT DATETIME = NULL,
7
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
8
	@p_BRANCH_LOGIN VARCHAR(15),
9
	@p_PROCESS_DESC NVARCHAR(MAX)
10
	
11
AS
12

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

    
25
BEGIN TRANSACTION
26
		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'))
27
		OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
28
		BEGIN
29
			ROLLBACK TRANSACTION
30
			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
31
			RETURN '-1'
32
		END
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
	@IS_NEXT_CDT BIT,
48
	@TOTAL_AMT DECIMAL(18,2),
49
	@STEP_PARENT VARCHAR(20),
50
	@NOTES_CDT VARCHAR(20),
51
	@ROLE_CDT VARCHAR(20),
52
	@DVDM_CDT VARCHAR(20),
53
	@LIMIT_VALUE_CDT DECIMAL(18,2),
54
	@DVDM_ID_TT VARCHAR(20),
55
	@TOTAL_AMT_GD DECIMAL(18,2),
56
	@BRANCH_CREATE VARCHAR(15),
57
	@BRANCH_CREATE_TYPE VARCHAR(15),
58
	@DEP_CREATE VARCHAR(15),
59
	@BRANCH_PARENT VARCHAR(15)
60
	DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20),@ROLE_ID VARCHAR(20),@DVDM_ID_CDT VARCHAR(20)
61

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

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

    
67
	DECLARE @DATA_DVDM TABLE
68
(
69
    DVDM_ID VARCHAR(20),
70
    TOTAL_AMT DECIMAL(12, 0),
71
	IS_PTGD BIT
72
);
73
		
74
		SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
75
	DECLARE @DVDM_ID TABLE (
76
		DVDM_ID VARCHAR(15)
77
	)
78
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
79

    
80
IF(@PROCESS_CURR LIKE '%_DC')
81
BEGIN
82
	SELECT @ERROR=ERROR,
83
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
84
		IF(@ERROR=1)
85
		BEGIN
86
	 ROLLBACK TRANSACTION;
87
    SELECT '-1'  Result,
88
           @EROOR_DES ErrorDesc
89
   
90
    RETURN '0';
91
	END
92
END
93
SELECT @ERROR=ERROR,
94
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
95
		IF(@ERROR=1)
96
		BEGIN
97
	 ROLLBACK TRANSACTION;
98
    SELECT '-1'  Result,
99
           @EROOR_DES ErrorDesc
100
   
101
    RETURN '0';
102
END
103
	
104
	
105
		INSERT INTO @DATA_DVDM
106
	SELECT KHOI_ID,
107
		   SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
108
	FROM dbo.PL_REQUEST_DOC_DT DT
109
	LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
110
	WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
111
	GROUP BY KHOI_ID,DM.IS_PTGD;
112
	
113
	SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
114

    
115

    
116

    
117

    
118

    
119
	INSERT INTO @DVDM_ID
120
	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
121
	
122

    
123
	
124
			
125
	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 OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_LOGIN) )AND ( DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR DVDM_ID ='' OR DVDM_ID IS NULL)
126
	
127
	
128
	IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
129
	BEGIN
130
		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' OR @p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV' ) )
131
	END
132
	IF(@PROCESS_CURR LIKE '%_DC')
133
	BEGIN
134
		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' OR @p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV' ) )
135
	END
136
	
137
	INSERT INTO dbo.PL_PROCESS
138
			(
139
				REQ_ID,
140
				PROCESS_ID,
141
				CHECKER_ID,
142
				APPROVE_DT,
143
				PROCESS_DESC,NOTES
144
			)
145
			VALUES
146
			(   @p_REQ_ID,        -- REQ_ID - varchar(15)
147
				@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
148
				@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
149
				GETDATE(), -- APPROVE_DT - datetime
150
				@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
151
			)	
152
	
153
	
154
		
155

    
156

    
157
		SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
158

    
159
	
160
		SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
161

    
162

    
163
			
164
	SET @Result='1'
165
	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'))
166
	BEGIN	
167

    
168
			IF(@PROCESS_CURR LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE 'TC')
169
			BEGIN
170
				
171

    
172
				SET @ROLE_USER=(SELECT TOP 1 ROLE_USER FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR)
173
				IF(@ROLE_USER <> 'TGD')
174
				BEGIN
175
					
176
					
177
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
178
							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)
179
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
180

    
181
							IF(@TOTAL_TRANSFER>@LIMIT_APP)
182
							BEGIN
183
							DECLARE @LEVEL INT
184
								SELECT @LEVEL=BRANCH_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND ROLE_ID =@ROLE_USER
185
								SET @LEVEL=@LEVEL+1
186
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
187
								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))
188
								BEGIN
189
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
190
							
191
								END
192
								SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_ID_NEXT LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
193
								
194
								INSERT INTO dbo.PL_REQUEST_PROCESS
195
								(
196
								    REQ_ID,
197
								    PROCESS_ID,
198
								    STATUS,
199
								    ROLE_USER,
200
								    BRANCH_ID,
201
								    CHECKER_ID,
202
								    APPROVE_DT,
203
								    PARENT_PROCESS_ID,
204
								    IS_LEAF,
205
								    COST_ID,
206
								    DVDM_ID,
207
								    NOTES,
208
								    IS_HAS_CHILD,
209
								    DEP_ID
210
								)
211
								VALUES
212
								(   @p_REQ_ID,        -- REQ_ID - varchar(15)
213
								    @PROCESS_ID_NEXT,        -- PROCESS_ID - varchar(10)
214
								    'U',        -- STATUS - varchar(5)
215
								    @ROLE_NEXT,        -- ROLE_USER - varchar(50)
216
								    '',        -- BRANCH_ID - varchar(15)
217
								    '',        -- CHECKER_ID - varchar(15)
218
								    NULL, -- APPROVE_DT - datetime
219
								    @PROCESS_CURR,        -- PARENT_PROCESS_ID - varchar(10)
220
								    'N',        -- IS_LEAF - varchar(1)
221
								    '',        -- COST_ID - varchar(15)
222
								    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
223
								    N'Chờ '+@NOTES+' phê duyệt',       -- NOTES - nvarchar(500)
224
								    0,      -- IS_HAS_CHILD - bit
225
								    ''         -- DEP_ID - varchar(20)
226
								)
227
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@PROCESS_ID_NEXT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
228
							SET @PROCESS_NEXT=@PROCESS_ID_NEXT
229
							END
230
							ELSE
231
							BEGIN
232
							SET @STEP_PARENT=@PROCESS_CURR
233
							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
234
						   -- INSERT PL_TRADE_DETAIL
235
						   
236
						
237
						   ---
238
							BEGIN
239
									IF(@BRANCH_CREATE_TYPE='PGD')
240
									BEGIN
241
	
242
										SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
243
										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='')))
244
										BEGIN
245
											INSERT INTO dbo.PL_REQUEST_PROCESS
246
											(
247
											REQ_ID,
248
											PROCESS_ID,
249
											STATUS,
250
											ROLE_USER,
251
											BRANCH_ID,
252
											DEP_ID,
253
											CHECKER_ID,
254
											APPROVE_DT,
255
											PARENT_PROCESS_ID,
256
											IS_LEAF,
257
											NOTES
258
											)
259
											VALUES
260
											(   
261
											@p_REQ_ID,               -- REQ_ID - varchar(15)
262
											'DVC',                  -- PROCESS_ID - varchar(10)
263
											'U',                     -- STATUS - varchar(5)
264
											'GDDV',                      -- ROLE_USER - varchar(50)
265
											@BRANCH_PARENT,
266
											NULL,                      -- BRANCH_ID - varchar(15)
267
											NULL,           -- CHECKER_ID - varchar(15)
268
											NULL , -- APPROVE_DT - datetime
269
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
270

    
271
											--SET @STEP_CURR = 'DVC';
272
											SET @STEP_PARENT = 'DVC';
273
										END
274
	
275
									END
276
									ELSE 
277
									IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
278
									AND ((
279
										BRANCH_ID=@BRANCH_CREATE 
280
										AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
281
										AND (DEP_ID IS NULL OR DEP_ID='')))
282
										)
283
											OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
284
											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)
285
											)
286
									))
287
									BEGIN
288
									INSERT INTO dbo.PL_REQUEST_PROCESS
289
											(
290
											REQ_ID,
291
											PROCESS_ID,
292
											STATUS,
293
											ROLE_USER,
294
											BRANCH_ID,
295
											DEP_ID,
296
											CHECKER_ID,
297
											APPROVE_DT,
298
											PARENT_PROCESS_ID,
299
											IS_LEAF,
300
											NOTES
301
											)
302
											VALUES
303
											(   
304
											@p_REQ_ID,               -- REQ_ID - varchar(15)
305
											'DVC',                  -- PROCESS_ID - varchar(10)
306
											'U',                     -- STATUS - varchar(5)
307
											'GDDV',                      -- ROLE_USER - varchar(50)
308
											@BRANCH_CREATE,
309
											@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
310
											NULL,           -- CHECKER_ID - varchar(15)
311
											NULL , -- APPROVE_DT - datetime
312
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
313

    
314
									--SET @STEP_CURR = 'DVC';
315
									SET @STEP_PARENT = 'DVC';
316
									END
317

    
318

    
319

    
320

    
321
								
322
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))
323
								SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
324
								SET @TOTAL_AMT = (SELECT TOTAL_AMT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
325
								IF((@IS_NEXT=1 OR @IS_NEXT_CDT=1 )AND NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
326
								BEGIN
327
								IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>'') OR @IS_NEXT_CDT=1)
328
								BEGIN
329
								DECLARE lstCostCenter CURSOR FOR
330
								SELECT DVDM_ID  FROM @DATA_DVDM WHERE   NOT EXISTS(
331
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PL_REQUEST_PROCESS.DVDM_ID=[@DATA_DVDM].DVDM_ID AND ROLE_USER='GDK'
332
								)
333
								GROUP BY DVDM_ID
334
										 OPEN lstCostCenter
335
		 						FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
336
								WHILE @@FETCH_STATUS = 0 
337
								BEGIN 
338
									INSERT INTO dbo.PL_REQUEST_PROCESS
339
									(
340
										REQ_ID,
341
										PROCESS_ID,
342
										STATUS,
343
										ROLE_USER,
344
										BRANCH_ID,
345
										CHECKER_ID,
346
										APPROVE_DT,
347
										PARENT_PROCESS_ID,
348
										IS_LEAF,
349
										COST_ID,
350
										DVDM_ID,
351
										NOTES,IS_HAS_CHILD
352
									)
353
									VALUES
354
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
355
										'GDK_TT',        -- PROCESS_ID - varchar(10)
356
										'U',        -- STATUS - varchar(5)
357
										'GDK',        -- ROLE_USER - varchar(50)
358
										'',        -- BRANCH_ID - varchar(15)
359
										'',        -- CHECKER_ID - varchar(15)
360
										NULL, -- APPROVE_DT - datetime
361
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
362
										'N',        -- IS_LEAF - varchar(1)
363
										'',        -- COST_ID - varchar(15)
364
										@DVDM_ID_TT ,
365
										N'Chờ giám đốc khối xác nhận',
366
										0        -- DVDM_ID - varchar(15)
367
									  )
368
									  SET @STEP_PARENT='GDK_TT'	
369
								FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
370
								END
371
								CLOSE lstCostCenter
372
								DEALLOCATE lstCostCenter
373
		
374
								IF(@IS_NEXT_CDT=1 AND NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@DVDM_CDT))
375
								BEGIN
376
									INSERT INTO dbo.PL_REQUEST_PROCESS
377
									(
378
										REQ_ID,
379
										PROCESS_ID,
380
										STATUS,
381
										ROLE_USER,
382
										BRANCH_ID,
383
										CHECKER_ID,
384
										APPROVE_DT,
385
										PARENT_PROCESS_ID,
386
										IS_LEAF,
387
										COST_ID,
388
										DVDM_ID,
389
										NOTES,IS_HAS_CHILD
390
									)
391
									VALUES
392
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
393
										'GDK_TT',        -- PROCESS_ID - varchar(10)
394
										'U',        -- STATUS - varchar(5)
395
										'GDK',        -- ROLE_USER - varchar(50)
396
										'',        -- BRANCH_ID - varchar(15)
397
										'',        -- CHECKER_ID - varchar(15)
398
										NULL, -- APPROVE_DT - datetime
399
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
400
										'N',        -- IS_LEAF - varchar(1)
401
										'',        -- COST_ID - varchar(15)
402
										@DVDM_CDT ,
403
										N'Chờ giám đốc khối xác nhận',
404
										0        -- DVDM_ID - varchar(15)
405
									  )
406
									  SET @STEP_PARENT='GDK_TT'	
407
								END
408

    
409

    
410
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))
411
								SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
412
								
413
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
414
								BEGIN
415
								IF(EXISTS(SELECT DVDM_ID  FROM @DATA_DVDM WHERE  IS_PTGD=1 AND NOT EXISTS(
416
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PL_REQUEST_PROCESS.DVDM_ID=[@DATA_DVDM].DVDM_ID AND ROLE_USER='PTGD'
417
								) ) OR @IS_NEXT_CDT=1)
418
									BEGIN
419
									DECLARE lstCostCenter CURSOR FOR
420
									SELECT DVDM_ID  FROM @DATA_DVDM DT
421
									 WHERE IS_PTGD=1 AND NOT EXISTS(
422
										SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PL_REQUEST_PROCESS.DVDM_ID=DT.DVDM_ID AND ROLE_USER='PTGD'
423
									)
424
									GROUP BY DVDM_ID
425
									OPEN lstCostCenter
426
		 							FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
427
									WHILE @@FETCH_STATUS = 0 
428
									BEGIN 
429
										INSERT INTO dbo.PL_REQUEST_PROCESS
430
										(
431
											REQ_ID,
432
											PROCESS_ID,
433
											STATUS,
434
											ROLE_USER,
435
											BRANCH_ID,
436
											CHECKER_ID,
437
											APPROVE_DT,
438
											PARENT_PROCESS_ID,
439
											IS_LEAF,
440
											COST_ID,
441
											DVDM_ID,
442
											NOTES,IS_HAS_CHILD
443
										)
444
										VALUES
445
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
446
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
447
											'U',        -- STATUS - varchar(5)
448
											'PTGD',        -- ROLE_USER - varchar(50)
449
											'',        -- BRANCH_ID - varchar(15)
450
											'',        -- CHECKER_ID - varchar(15)
451
											NULL, -- APPROVE_DT - datetime
452
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
453
											'N',        -- IS_LEAF - varchar(1)
454
											'',        -- COST_ID - varchar(15)
455
											@DVDM_ID_TT ,
456
											N'Chờ phó tổng giám đốc khối xác nhận',
457
											0        -- DVDM_ID - varchar(15)
458
										  )	
459
									  
460
									SET @STEP_PARENT='PTGDK_TT'
461
									FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
462
									END
463
									CLOSE lstCostCenter
464
									DEALLOCATE lstCostCenter
465
									
466
									IF(@IS_NEXT_CDT=1 AND NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@DVDM_CDT))
467
									BEGIN
468
												INSERT INTO dbo.PL_REQUEST_PROCESS
469
										(
470
											REQ_ID,
471
											PROCESS_ID,
472
											STATUS,
473
											ROLE_USER,
474
											BRANCH_ID,
475
											CHECKER_ID,
476
											APPROVE_DT,
477
											PARENT_PROCESS_ID,
478
											IS_LEAF,
479
											COST_ID,
480
											DVDM_ID,
481
											NOTES,IS_HAS_CHILD
482
										)
483
										VALUES
484
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
485
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
486
											'U',        -- STATUS - varchar(5)
487
											'PTGD',        -- ROLE_USER - varchar(50)
488
											'',        -- BRANCH_ID - varchar(15)
489
											'',        -- CHECKER_ID - varchar(15)
490
											NULL, -- APPROVE_DT - datetime
491
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
492
											'N',        -- IS_LEAF - varchar(1)
493
											'',        -- COST_ID - varchar(15)
494
											@DVDM_CDT ,
495
											N'Chờ phó tổng giám đốc khối xác nhận',
496
											0        -- DVDM_ID - varchar(15)
497
										  )	
498
									  
499
									SET @STEP_PARENT='PTGDK_TT'	
500
									END
501
									SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))
502
									SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
503
								END
504
								IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_DOC_DT DT
505
								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 ) AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))=1 )
506
								BEGIN
507
								SET @IS_NEXT=1
508
								END
509
								
510

    
511
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
512
								BEGIN
513
									 INSERT INTO dbo.PL_REQUEST_PROCESS
514
									(
515
										REQ_ID,
516
										PROCESS_ID,
517
										STATUS,
518
										ROLE_USER,
519
										BRANCH_ID,
520
										CHECKER_ID,
521
										APPROVE_DT,
522
										PARENT_PROCESS_ID,
523
										IS_LEAF,
524
										COST_ID,
525
										DVDM_ID,
526
										NOTES,IS_HAS_CHILD
527
									)
528
									VALUES
529
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
530
										'TGD',        -- PROCESS_ID - varchar(10)
531
										'U',        -- STATUS - varchar(5)
532
										'TGD',        -- ROLE_USER - varchar(50)
533
										'',        -- BRANCH_ID - varchar(15)
534
										'',        -- CHECKER_ID - varchar(15)
535
										NULL, -- APPROVE_DT - datetime
536
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
537
										'N',        -- IS_LEAF - varchar(1)
538
										'',        -- COST_ID - varchar(15)
539
										'' ,
540
										N'Chờ tổng giám đốc xác nhận',
541
										0        -- DVDM_ID - varchar(15)
542
									  )
543
									  SET @STEP_PARENT='TGD'	
544
									  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'))
545
			BEGIN
546
				
547

    
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
                'HDQT',                               -- PROCESS_ID - varchar(10)
567
                'U',                                 -- STATUS - varchar(5)
568
                'HDQT',                               -- ROLE_USER - varchar(50)
569
                '',                                  -- BRANCH_ID - varchar(15)
570
                '',                                  -- CHECKER_ID - varchar(15)
571
                NULL,                                -- APPROVE_DT - datetime
572
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
573
                'N',                                 -- IS_LEAF - varchar(1)
574
                '',                                  -- COST_ID - varchar(15)
575
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
576
                );
577
            SET @STEP_PARENT = 'HDQT';
578
			END
579
								END
580
				
581
						--ELSE
582
						--BEGIN
583
					
584
						--END
585
				END
586
								END
587
								END
588
								END
589
								
590

    
591

    
592
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
593
							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)
594
							END
595
				END
596
				ELSE
597
				BEGIN
598
							
599
							
600
							--- BO SUNG VAO BANG PL_TRADE_DETAIL
601
				SET @STEP_PARENT='TGD'	
602
				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'))
603
				BEGIN
604
				
605

    
606
				INSERT INTO dbo.PL_REQUEST_PROCESS
607
            (
608
                REQ_ID,
609
                PROCESS_ID,
610
                STATUS,
611
                ROLE_USER,
612
                BRANCH_ID,
613
                CHECKER_ID,
614
                APPROVE_DT,
615
                PARENT_PROCESS_ID,
616
                IS_LEAF,
617
                COST_ID,
618
                DVDM_ID,
619
                NOTES,
620
                IS_HAS_CHILD
621
            )
622
            VALUES
623
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
624
                'HDQT',                               -- PROCESS_ID - varchar(10)
625
                'U',                                 -- STATUS - varchar(5)
626
                'HDQT',                               -- ROLE_USER - varchar(50)
627
                '',                                  -- BRANCH_ID - varchar(15)
628
                '',                                  -- CHECKER_ID - varchar(15)
629
                NULL,                                -- APPROVE_DT - datetime
630
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
631
                'N',                                 -- IS_LEAF - varchar(1)
632
                '',                                  -- COST_ID - varchar(15)
633
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
634
                );
635
							SET @STEP_PARENT = 'HDQT';
636
							
637
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
638
								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)
639
							END
640
								
641
				
642
						--ELSE
643
						--BEGIN
644
					
645
						--END
646
							
647
								
648
								
649

    
650
						
651
				END
652

    
653
			END
654
			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
655
			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
656
				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)
657
			
658
			
659
			IF(@IS_LEAF='Y')
660
			BEGIN
661
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
662
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
663

    
664
				SET @Result='0'
665
			END
666
	END
667

    
668

    
669
	IF @@Error <> 0 GOTO ABORT
670
			
671
COMMIT TRANSACTION
672
SELECT @Result as Result , @ROLE_USER_NOTIFI AS  ROLE_NOTIFI, '' ErrorDesc
673
RETURN '0'
674
ABORT:
675
BEGIN
676
	
677
		ROLLBACK TRANSACTION
678
		SELECT '-1' as Result, '' ROLE_NOTIFI , ERROR_MESSAGE() ErrorDesc
679
		RETURN '-1'
680
End
681

    
682

    
683

    
684

    
685

    
686