Project

General

Profile

FILE 2.txt

Truong Nguyen Vu, 09/21/2020 10:10 AM

 
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) OR EXISTS (SELECT DVDM_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF)))
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 + 1)
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

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

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

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

    
593

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

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

    
652
						
653
				END
654

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

    
666
				SET @Result='0'
667
			END
668
	END
669

    
670

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

    
684

    
685

    
686

    
687

    
688