Project

General

Profile

UPDATE TTCT 31-32.txt

Truong Nguyen Vu, 03/02/2021 02:03 PM

 
1
DELETE FROM dbo.PL_REQUEST_PROCESS WHERE ID=16094
2
DELETE FROM dbo.PL_REQUEST_PROCESS WHERE ID=16092
3

    
4
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C',PARENT_PROCESS_ID='PTGDK_TT' WHERE ID=15153
5
UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C',PARENT_PROCESS_ID='PTGDK_TT' WHERE ID=15148
6

    
7
UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='APPROVE' WHERE REQ_ID='PLRD00000201172'
8
UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='APPROVE' WHERE REQ_ID='PLRD00000201173'
9

    
10

    
11
¿
12
EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = 'PLRD00000201172' -- varchar(15)
13
¿
14

    
15
EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = 'PLRD00000201173' -- varchar(15)
16
¿
17
EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = 'PLRD00000201172' -- varchar(15)
18
¿
19
EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = 'PLRD00000201173' -- varchar(15)
20

    
21
¿
22

    
23

    
24

    
25
ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App]
26
@p_REQ_ID VARCHAR(20),
27
@p_PROCESS_ID VARCHAR(20),
28
@p_TLNAME VARCHAR(20),
29
@p_MAKER_ID VARCHAR(20),
30
@p_TYPE_JOB VARCHAR(20),
31
@p_PROCESS_DES NVARCHAR(MAX),
32
@p_REF_ID INT
33
AS
34
BEGIN TRANSACTION
35
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
36
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'))
37
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
38
BEGIN
39
	ROLLBACK TRANSACTION
40
	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
41
	RETURN -1
42
END
43

    
44
IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS  WHERE REQ_ID=@p_REQ_ID AND IS_HAS_CHILD=1 AND STATUS='C' ))
45
BEGIN
46
	IF(EXISTS(
47
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
48
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
49
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' AND PRC.STATUS_JOB='C'))
50
	BEGIN
51
		ROLLBACK TRANSACTION  
52
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa được xử lý. Vui lòng đợi nhân viên xử lý phiếu và gửi phê duyệt!' ErrorDesc  
53
		RETURN -1
54
	END
55

    
56
	IF(NOT EXISTS(
57
	SELECT PRC.ID FROM dbo.PL_REQUEST_PROCESS PR 
58
	LEFT JOIN dbo.PL_REQUEST_PROCESS_CHILD PRC ON PRC.PROCESS_ID=PR.ID
59
	WHERE  PR.REQ_ID=@p_REQ_ID AND PRC.TYPE_JOB='XL' ))
60
	BEGIN
61

    
62
		ROLLBACK TRANSACTION  
63
		SELECT -1 Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' chưa điều phối xử lý. Vui lòng điều phối nhân viên xử lý phiếu!' ErrorDesc  
64
		RETURN -1 
65
	END
66

    
67
END
68

    
69

    
70

    
71

    
72
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
73

    
74
SELECT @ERROR=ERROR,
75
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
76
IF(@ERROR=1)
77
BEGIN
78
	 ROLLBACK TRANSACTION;
79
    SELECT -1  Result,
80
           @EROOR_DES ErrorDesc
81
   
82
    RETURN 0;
83
END
84

    
85

    
86

    
87
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20)
88
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
89
				@PROCESS_CURR VARCHAR(10),
90
				@STEP_CURR INT,
91
				@STEP_NEXT VARCHAR(20),
92
				@PROCESS_NEXT VARCHAR(10),
93
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
94

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

    
97

    
98
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
99

    
100

    
101
		DECLARE
102
		@COST_ID_TABLE TABLE (
103
			COST_ID VARCHAR(15)
104
		)
105

    
106
		DECLARE @DVDM_ID_TABLE TABLE (
107
			DVDM_ID VARCHAR(15)
108
		)
109

    
110
		DECLARE @AUTHOR_DVDM TABLE
111
		(
112
		ROLE_ID VARCHAR(100),
113
		BRANCH_ID VARCHAR(20),
114
		DEP_ID VARCHAR(20),
115
		DVDM_ID VARCHAR(20)
116
		)
117

    
118

    
119
	INSERT INTO @AUTHOR_DVDM
120
	(
121
	    ROLE_ID,
122
	    BRANCH_ID,
123
	    DEP_ID,
124
	    DVDM_ID
125
	)
126
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
127
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
128
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
129
	WHERE TU.TLNANME=@p_MAKER_ID
130
	UNION ALL
131
	SELECT TM.ROLE_NEW RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
132
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
133
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
134
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.RoleName AND( TM.TLNAME IS NULL OR TM.TLNAME='')
135
	WHERE TU.TLNANME=@p_MAKER_ID
136
	UNION ALL
137
	SELECT TU.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
138
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
139
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
140
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
141
	UNION ALL
142
	SELECT TM.ROLE_NEW RoleName,TU.BRANCH_ID TLSUBBRID,TU.DEP_ID SECUR_CODE,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
143
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
144
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
145
	LEFT JOIN dbo.TL_SYS_ROLE_MAPPING TM ON TM.ROLE_OLD=TU.ROLE_NEW AND( TM.TLNAME IS NULL OR TM.TLNAME='')
146
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(TU.EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
147

    
148
	
149

    
150

    
151

    
152
		INSERT INTO @COST_ID_TABLE
153
		SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
154

    
155
		INSERT INTO @DVDM_ID_TABLE
156
		SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
157

    
158
		
159
			
160
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
161
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
162
		--AND TLNAME=@p_TLNAME
163
		AND TYPE_JOB=@p_TYPE_JOB
164

    
165

    
166
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)
167
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
168
			
169
		INSERT INTO dbo.PL_PROCESS
170
				(
171
					REQ_ID,
172
					PROCESS_ID,
173
					CHECKER_ID,
174
					APPROVE_DT,
175
					PROCESS_DESC,NOTES
176
				)
177
				VALUES
178
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
179
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
180
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
181
					GETDATE() , -- APPROVE_DT - datetime
182
					@p_PROCESS_DES ,
183
					@TYPE_JOB_NAME+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
184
				)
185

    
186
		
187

    
188

    
189
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
190
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
191
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID 
192
		--AND TLNAME=@p_TLNAME 
193
		AND TYPE_JOB=@p_TYPE_JOB
194
		ORDER BY LEVEL_JOB DESC),0)                  
195

    
196
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
197
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
198
		
199
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
200
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
201
		BEGIN
202

    
203

    
204
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
205
				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)
206
				
207
				
208
				IF(@PROCESS_CURR='TC')
209
				BEGIN
210
						SELECT @ERROR=ERROR,
211
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
212
					IF(@ERROR=1)
213
					BEGIN
214
						 ROLLBACK TRANSACTION;
215
						SELECT '-1'  Result,
216
							   @EROOR_DES ErrorDesc
217
   
218
						RETURN '0';
219
					END
220
					---Duyệt TTCT
221

    
222
					DECLARE @LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20)
223
					,@KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT
224
					
225
					DECLARE @DATA_KHOI TABLE (
226
					KHOI_ID VARCHAR(20),
227
					TOTAL_AMT DECIMAL(18,2),
228
					IS_NEXT BIT,
229
					IS_GDK BIT,
230
					IS_PTGD BIT
231
					)
232

    
233
					INSERT INTO @DATA_KHOI
234
					(
235
					    KHOI_ID,
236
						TOTAL_AMT,
237
					    IS_NEXT,
238
						IS_GDK,
239
						IS_PTGD
240
					)
241
					SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT
242
					LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID
243
					
244
					WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID <>'' AND FR_KHOI_ID IS NOT NULL GROUP BY FR_KHOI_ID,CD.IS_GDK,CD.IS_PTGD
245
					SET @STEP_PARENT='TC'
246
					
247
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
248

    
249
					DECLARE lstDATA CURSOR FOR
250
					SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI
251

    
252
					OPEN lstDATA
253
					FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD
254
					WHILE @@FETCH_STATUS=0
255
					BEGIN
256
						SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)
257

    
258
						IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@KHOI_ID_TF) AND @IS_GDK=1)
259
						BEGIN
260
							INSERT INTO dbo.PL_REQUEST_PROCESS
261
							(
262
								REQ_ID,
263
								PROCESS_ID,
264
								STATUS,
265
								ROLE_USER,
266
								BRANCH_ID,
267
								CHECKER_ID,
268
								APPROVE_DT,
269
								PARENT_PROCESS_ID,
270
								IS_LEAF,
271
								COST_ID,
272
								DVDM_ID,
273
								NOTES,IS_HAS_CHILD
274
							)
275
							VALUES
276
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
277
								'GDK_TT',        -- PROCESS_ID - varchar(10)
278
								'U',        -- STATUS - varchar(5)
279
								'GDK',        -- ROLE_USER - varchar(50)
280
								'',        -- BRANCH_ID - varchar(15)
281
								'',        -- CHECKER_ID - varchar(15)
282
								NULL, -- APPROVE_DT - datetime
283
								@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
284
								'N',        -- IS_LEAF - varchar(1)
285
								'',        -- COST_ID - varchar(15)
286
								@KHOI_ID_TF ,
287
								N'Chờ giám đốc khối xác nhận',
288
								0        -- DVDM_ID - varchar(15)
289
								)
290
						END
291

    
292
						IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
293
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
294
						IF(@IS_GDK=0)
295
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
296
						FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD 
297
					END
298
					CLOSE lstDATA
299
					DEALLOCATE lstDATA
300
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
301
						SET @STEP_PARENT='GDK_TT'
302
					IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) 
303
							OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID))
304
						BEGIN
305
							DECLARE lstDATA CURSOR FOR
306
							SELECT KHOI_ID,TOTAL_AMT,IS_GDK,IS_PTGD FROM @DATA_KHOI WHERE IS_NEXT=1
307

    
308
							OPEN lstDATA
309
							FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD
310
							WHILE @@FETCH_STATUS=0
311
							BEGIN
312
							SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='PTGD' AND DVDM_ID=@KHOI_ID_TF)
313

    
314
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF) AND @IS_PTGD=1)
315
							BEGIN
316
							INSERT INTO dbo.PL_REQUEST_PROCESS
317
							(
318
								REQ_ID,
319
								PROCESS_ID,
320
								STATUS,
321
								ROLE_USER,
322
								BRANCH_ID,
323
								CHECKER_ID,
324
								APPROVE_DT,
325
								PARENT_PROCESS_ID,
326
								IS_LEAF,
327
								COST_ID,
328
								DVDM_ID,
329
								NOTES,IS_HAS_CHILD
330
							)
331
							VALUES
332
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
333
								'PTGDK_TT',        -- PROCESS_ID - varchar(10)
334
								'U',        -- STATUS - varchar(5)
335
								'PTGD',        -- ROLE_USER - varchar(50)
336
								'',        -- BRANCH_ID - varchar(15)
337
								'',        -- CHECKER_ID - varchar(15)
338
								NULL, -- APPROVE_DT - datetime
339
								@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
340
								'N',        -- IS_LEAF - varchar(1)
341
								'',        -- COST_ID - varchar(15)
342
								@KHOI_ID_TF ,
343
								N'Chờ Phó tổng giám đốc khối xác nhận',
344
								0        -- DVDM_ID - varchar(15)
345
								)
346
							END
347
						UPDATE @DATA_KHOI SET IS_NEXT=0
348
						IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
349
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
350
						IF(@IS_PTGD=0)
351
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
352
						FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD 
353
					END
354
							CLOSE lstDATA
355
							DEALLOCATE lstDATA
356
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
357
						SET @STEP_PARENT='PTGDK_TT'
358
					IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) 
359
							OR EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND FR_KHOI_ID<>TO_KHOI_ID))
360
						BEGIN
361
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
362
							BEGIN
363
							INSERT INTO dbo.PL_REQUEST_PROCESS
364
							(
365
							REQ_ID,
366
							PROCESS_ID,
367
							STATUS,
368
							ROLE_USER,
369
							BRANCH_ID,
370
							CHECKER_ID,
371
							APPROVE_DT,
372
							PARENT_PROCESS_ID,
373
							IS_LEAF,
374
							COST_ID,
375
							DVDM_ID,
376
							NOTES,
377
							IS_HAS_CHILD
378
							)
379
							VALUES
380
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
381
							'TGD',                               -- PROCESS_ID - varchar(10)
382
							'U',                                 -- STATUS - varchar(5)
383
							'TGD',                               -- ROLE_USER - varchar(50)
384
							'',                                  -- BRANCH_ID - varchar(15)
385
							'',                                  -- CHECKER_ID - varchar(15)
386
							NULL,                                -- APPROVE_DT - datetime
387
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
388
							'N',                                 -- IS_LEAF - varchar(1)
389
							'',                                  -- COST_ID - varchar(15)
390
							'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
391
							);
392
							END
393

    
394
						END
395
					
396

    
397
					END
398

    
399

    
400
				DECLARE @LAST_PROCESS VARCHAR(20)	
401
					
402
					
403
				SET @LAST_PROCESS=(
404
				SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL 
405
				LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID
406
				WHERE REQ_ID=@p_REQ_ID
407
				GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS 
408
				ORDER BY CP.LEVEL_PROCESS DESC)
409
					
410
			
411
					
412
					UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
413

    
414

    
415

    
416
					SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
417
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND 
418
					(ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) 
419
					AND PROCESS_ID=@PROCESS_CURR
420

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

    
423
					SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
424
					UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
425
				END
426
				ELSE IF(@PROCESS_CURR='KT')
427
				BEGIN
428
					--	SELECT @ERROR=ERROR,
429
					--	   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
430
					--IF(@ERROR=1)
431
					--BEGIN
432
					--	 ROLLBACK TRANSACTION;
433
					--	SELECT '-1'  Result,
434
					--		   @EROOR_DES ErrorDesc
435
   
436
					--	RETURN '0';
437
					--END
438

    
439
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
440
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND PROCESS_ID=@PROCESS_CURR
441
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
442
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
443
				END
444
				ELSE
445
				BEGIN
446
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
447

    
448

    
449
				UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE)
450
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE)
451
							
452

    
453

    
454
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
455
				BEGIN
456
						
457
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
458
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
459
						
460
				END
461

    
462
				UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='')
463
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER=@ROLE_ID OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@ROLE_ID)) AND BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IS NULL OR DEP_ID='')
464

    
465
				IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)))
466
					BEGIN
467
					IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
468
					BEGIN
469
							IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
470
							BEGIN
471

    
472
							
473
									DECLARE 	@LIMIT_VALUE DECIMAL(18,0),
474
									@IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
475
									DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
476
						
477

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

    
527
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
528
									END
529
									CLOSE lstTransfer
530
									DEALLOCATE lstTransfer
531

    
532

    
533

    
534
								SET @STEP_NEXT='TC'
535
								IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
536
								BEGIN
537
										SET @STEP_PARENT='DVDM_DC'
538
										SET @STEP_NEXT	='DVDM_DC'
539
								END
540

    
541
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
542
								SET @STEP_PARENT='TC'
543
	
544
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID
545
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
546
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID
547
								END
548

    
549
						END	
550
					END
551
				END
552

    
553
			
554
	
555
				END
556

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