Project

General

Profile

PL_REQUEST_PROCESS_APPP.txt

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

 
1
USE [gAMSPro_VietcapitalBank_v2_TEST]
2
GO
3
/****** Object:  StoredProcedure [dbo].[PL_REQUEST_PROCESS_App]    Script Date: 03-Sep-20 16:18:31 ******/
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
		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'))
33
		OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
34
		BEGIN
35
			ROLLBACK TRANSACTION
36
			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
37
			RETURN '-1'
38
		END
39
	--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
40
	--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
41

    
42
	 DECLARE
43
	@Result VARCHAR(5),
44
	@PROCESS_CURR VARCHAR(10),
45
	@STEP_CURR INT,
46
	@STEP_NEXT INT,
47
	@PROCESS_NEXT VARCHAR(10),
48
	@ROLE_USER_NOTIFI VARCHAR(50),
49
	@DEP_ID VARCHAR(15),
50
	@IS_LEAF VARCHAR(1),
51
	@NOTES NVARCHAR(500),
52
	@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),
53
	@IS_NEXT_CDT BIT,
54
	@TOTAL_AMT DECIMAL(18,2),
55
	@STEP_PARENT VARCHAR(20),
56
	@NOTES_CDT VARCHAR(20),
57
	@ROLE_CDT VARCHAR(20),
58
	@DVDM_CDT VARCHAR(20),
59
	@LIMIT_VALUE_CDT DECIMAL(18,2),
60
	@DVDM_ID_TT VARCHAR(20),
61
	@TOTAL_AMT_GD DECIMAL(18,2),
62
	@BRANCH_CREATE VARCHAR(15),
63
	@BRANCH_CREATE_TYPE VARCHAR(15),
64
	@DEP_CREATE VARCHAR(15),
65
	@BRANCH_PARENT VARCHAR(15)
66
	DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20),@ROLE_ID VARCHAR(20),@DVDM_ID_CDT VARCHAR(20)
67

    
68
	SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
69

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

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

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

    
121

    
122

    
123

    
124

    
125
	INSERT INTO @DVDM_ID
126
	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
127
	
128

    
129
	
130
			
131
	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)
132
	
133
	
134
	IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
135
	BEGIN
136
		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' ) )
137
	END
138
	IF(@PROCESS_CURR LIKE '%_DC')
139
	BEGIN
140
		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' ) )
141
	END
142
	
143
	INSERT INTO dbo.PL_PROCESS
144
			(
145
				REQ_ID,
146
				PROCESS_ID,
147
				CHECKER_ID,
148
				APPROVE_DT,
149
				PROCESS_DESC,NOTES
150
			)
151
			VALUES
152
			(   @p_REQ_ID,        -- REQ_ID - varchar(15)
153
				@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
154
				@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
155
				GETDATE(), -- APPROVE_DT - datetime
156
				@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
157
			)	
158
	
159
	
160
		
161

    
162

    
163
		SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
164

    
165
	
166
		SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
167

    
168

    
169
			
170
	SET @Result='1'
171
	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'))
172
	BEGIN	
173

    
174
			IF(@PROCESS_CURR LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE 'TC')
175
			BEGIN
176
				
177

    
178
				SET @ROLE_USER=(SELECT TOP 1 ROLE_USER FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR)
179
				IF(@ROLE_USER <> 'TGD')
180
				BEGIN
181
					
182
					
183
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
184
							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)
185
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
186

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

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

    
320
									--SET @STEP_CURR = 'DVC';
321
									SET @STEP_PARENT = 'DVC';
322
									END
323

    
324

    
325

    
326

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

    
415

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

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

    
554
				INSERT INTO dbo.PL_REQUEST_PROCESS
555
            (
556
                REQ_ID,
557
                PROCESS_ID,
558
                STATUS,
559
                ROLE_USER,
560
                BRANCH_ID,
561
                CHECKER_ID,
562
                APPROVE_DT,
563
                PARENT_PROCESS_ID,
564
                IS_LEAF,
565
                COST_ID,
566
                DVDM_ID,
567
                NOTES,
568
                IS_HAS_CHILD
569
            )
570
            VALUES
571
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
572
                'HDQT',                               -- PROCESS_ID - varchar(10)
573
                'U',                                 -- STATUS - varchar(5)
574
                'HDQT',                               -- ROLE_USER - varchar(50)
575
                '',                                  -- BRANCH_ID - varchar(15)
576
                '',                                  -- CHECKER_ID - varchar(15)
577
                NULL,                                -- APPROVE_DT - datetime
578
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
579
                'N',                                 -- IS_LEAF - varchar(1)
580
                '',                                  -- COST_ID - varchar(15)
581
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
582
                );
583
            SET @STEP_PARENT = 'HDQT';
584
			END
585
								END
586
				
587
						--ELSE
588
						--BEGIN
589
					
590
						--END
591
				END
592
								END
593
								END
594
								END
595
								
596

    
597

    
598
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
599
							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)
600
							END
601
				END
602
				ELSE
603
				BEGIN
604
							
605
							
606
							--- BO SUNG VAO BANG PL_TRADE_DETAIL
607
				SET @STEP_PARENT='TGD'	
608
				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'))
609
				BEGIN
610
				
611

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

    
656
						
657
				END
658

    
659
			END
660
			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
661
			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
662
				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)
663
			
664
			
665
			IF(@IS_LEAF='Y')
666
			BEGIN
667
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
668
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
669

    
670
				SET @Result='0'
671
			END
672
	END
673

    
674

    
675
	IF @@Error <> 0 GOTO ABORT
676
			
677
COMMIT TRANSACTION
678
SELECT @Result as Result , @ROLE_USER_NOTIFI AS  ROLE_NOTIFI, '' ErrorDesc
679
RETURN '0'
680
ABORT:
681
BEGIN
682
	
683
		ROLLBACK TRANSACTION
684
		SELECT '-1' as Result, '' ROLE_NOTIFI , ERROR_MESSAGE() ErrorDesc
685
		RETURN '-1'
686
End
687

    
688

    
689

    
690

    
691

    
692