Project

General

Profile

PL_CHILD_APP.txt

Truong Nguyen Vu, 11/30/2020 10:48 AM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App]
3
@p_REQ_ID VARCHAR(20),
4
@p_PROCESS_ID VARCHAR(20),
5
@p_TLNAME VARCHAR(20),
6
@p_MAKER_ID VARCHAR(20),
7
@p_TYPE_JOB VARCHAR(20),
8
@p_PROCESS_DES NVARCHAR(20),
9
@p_REF_ID INT
10
AS
11
BEGIN TRANSACTION
12
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
13
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'))
14
OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
15
BEGIN
16
	ROLLBACK TRANSACTION
17
	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
18
	RETURN -1
19
END
20
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
21

    
22
SELECT @ERROR=ERROR,
23
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
24
IF(@ERROR=1)
25
BEGIN
26
	 ROLLBACK TRANSACTION;
27
    SELECT -1  Result,
28
           @EROOR_DES ErrorDesc
29
   
30
    RETURN 0;
31
END
32

    
33

    
34

    
35
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20),@STEP_PARENT VARCHAR(20)
36
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
37
				@PROCESS_CURR VARCHAR(10),
38
				@STEP_CURR INT,
39
				@STEP_NEXT VARCHAR(20),
40
				@PROCESS_NEXT VARCHAR(10),
41
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
42

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

    
45

    
46
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
47

    
48

    
49
		DECLARE
50
		@COST_ID_TABLE TABLE (
51
			COST_ID VARCHAR(15)
52
		)
53

    
54
		DECLARE @DVDM_ID_TABLE TABLE (
55
			DVDM_ID VARCHAR(15)
56
		)
57

    
58
		DECLARE @AUTHOR_DVDM TABLE
59
		(
60
		ROLE_ID VARCHAR(20),
61
		BRANCH_ID VARCHAR(20),
62
		DEP_ID VARCHAR(20),
63
		DVDM_ID VARCHAR(20)
64
		)
65

    
66

    
67
	INSERT INTO @AUTHOR_DVDM
68
	(
69
	    ROLE_ID,
70
	    BRANCH_ID,
71
	    DEP_ID,
72
	    DVDM_ID
73
	)
74
	SELECT TU.RoleName,TU.TLSUBBRID,TU.SECUR_CODE,PC.DVDM_ID FROM dbo.TL_USER TU 
75
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.TLSUBBRID AND DT.DEP_ID=TU.SECUR_CODE
76
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
77
	WHERE TU.TLNANME=@p_MAKER_ID
78

    
79
	INSERT INTO @AUTHOR_DVDM
80
	(
81
	    ROLE_ID,
82
	    BRANCH_ID,
83
	    DEP_ID,
84
	    DVDM_ID
85
	)
86
	SELECT TU.ROLE_NEW,TU.BRANCH_ID,TU.DEP_ID,PC.DVDM_ID FROM dbo.TL_SYS_ROLE_MAPPING TU 
87
	LEFT JOIN dbo.PL_COSTCENTER_DT DT ON DT.BRANCH_ID=TU.BRANCH_ID AND DT.DEP_ID=TU.DEP_ID
88
	LEFT JOIN dbo.PL_COSTCENTER PC ON PC.COST_ID=DT.COST_ID
89
	WHERE TU.TLNAME=@p_MAKER_ID AND CAST(EXP_DATE AS DATE) >= CAST(GETDATE() AS DATE)
90

    
91
	
92

    
93

    
94

    
95
		INSERT INTO @COST_ID_TABLE
96
		SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
97

    
98
		INSERT INTO @DVDM_ID_TABLE
99
		SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
100

    
101
		
102
			
103
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
104
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
105

    
106

    
107
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)
108
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
109
			
110
		INSERT INTO dbo.PL_PROCESS
111
				(
112
					REQ_ID,
113
					PROCESS_ID,
114
					CHECKER_ID,
115
					APPROVE_DT,
116
					PROCESS_DESC,NOTES
117
				)
118
				VALUES
119
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
120
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
121
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
122
					GETDATE() , -- APPROVE_DT - datetime
123
					@p_PROCESS_DES ,
124
					@TYPE_JOB_NAME+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
125
				)
126

    
127
		
128

    
129

    
130
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
131
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
132
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
133
		ORDER BY LEVEL_JOB DESC),0)                  
134

    
135
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
136
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
137
		
138
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
139
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
140
		BEGIN
141

    
142

    
143
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
144
				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)
145
				
146
				
147
				IF(@PROCESS_CURR='TC')
148
				BEGIN
149
						SELECT @ERROR=ERROR,
150
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
151
					IF(@ERROR=1)
152
					BEGIN
153
						 ROLLBACK TRANSACTION;
154
						SELECT '-1'  Result,
155
							   @EROOR_DES ErrorDesc
156
   
157
						RETURN '0';
158
					END
159
					---Duyệt TTCT
160

    
161
					DECLARE @LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20)
162
					,@KHOI_ID_TO VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@IS_GDK BIT,@IS_PTGD BIT
163
					
164
					DECLARE @DATA_KHOI TABLE (
165
					KHOI_ID VARCHAR(20),
166
					TOTAL_AMT DECIMAL(18,2),
167
					IS_NEXT BIT,
168
					IS_GDK BIT,
169
					IS_PTGD BIT
170
					)
171

    
172
					INSERT INTO @DATA_KHOI
173
					(
174
					    KHOI_ID,
175
						TOTAL_AMT,
176
					    IS_NEXT,
177
						IS_GDK,
178
						IS_PTGD
179
					)
180
					SELECT FR_KHOI_ID,SUM(TOTAL_AMT),0,CD.IS_GDK,CD.IS_PTGD FROM dbo.PL_REQUEST_TRANSFER PT
181
					LEFT JOIN dbo.CM_DVDM CD ON CD.DVDM_ID=PT.FR_KHOI_ID
182
					
183
					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
184
					SET @STEP_PARENT='TC'
185
					
186
					SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
187

    
188
					DECLARE lstDATA CURSOR FOR
189
					SELECT KHOI_ID,TOTAL_AMT FROM @DATA_KHOI
190

    
191
					OPEN lstDATA
192
					FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD
193
					WHILE @@FETCH_STATUS=0
194
					BEGIN
195
						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)
196

    
197
						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)
198
						BEGIN
199
							INSERT INTO dbo.PL_REQUEST_PROCESS
200
							(
201
								REQ_ID,
202
								PROCESS_ID,
203
								STATUS,
204
								ROLE_USER,
205
								BRANCH_ID,
206
								CHECKER_ID,
207
								APPROVE_DT,
208
								PARENT_PROCESS_ID,
209
								IS_LEAF,
210
								COST_ID,
211
								DVDM_ID,
212
								NOTES,IS_HAS_CHILD
213
							)
214
							VALUES
215
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
216
								'GDK_TT',        -- PROCESS_ID - varchar(10)
217
								'U',        -- STATUS - varchar(5)
218
								'GDK',        -- ROLE_USER - varchar(50)
219
								'',        -- BRANCH_ID - varchar(15)
220
								'',        -- CHECKER_ID - varchar(15)
221
								NULL, -- APPROVE_DT - datetime
222
								@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
223
								'N',        -- IS_LEAF - varchar(1)
224
								'',        -- COST_ID - varchar(15)
225
								@KHOI_ID_TF ,
226
								N'Chờ giám đốc khối xác nhận',
227
								0        -- DVDM_ID - varchar(15)
228
								)
229
						END
230

    
231
						IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
232
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
233
						IF(@IS_GDK=0)
234
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
235
						FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD 
236
					END
237
					CLOSE lstDATA
238
					DEALLOCATE lstDATA
239
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
240
						SET @STEP_PARENT='GDK_TT'
241
					IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) 
242
							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))
243
						BEGIN
244
							DECLARE lstDATA CURSOR FOR
245
							SELECT KHOI_ID,TOTAL_AMT FROM @DATA_KHOI WHERE IS_NEXT=1
246

    
247
							OPEN lstDATA
248
							FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD
249
							WHILE @@FETCH_STATUS=0
250
							BEGIN
251
							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)
252

    
253
							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)
254
							BEGIN
255
							INSERT INTO dbo.PL_REQUEST_PROCESS
256
							(
257
								REQ_ID,
258
								PROCESS_ID,
259
								STATUS,
260
								ROLE_USER,
261
								BRANCH_ID,
262
								CHECKER_ID,
263
								APPROVE_DT,
264
								PARENT_PROCESS_ID,
265
								IS_LEAF,
266
								COST_ID,
267
								DVDM_ID,
268
								NOTES,IS_HAS_CHILD
269
							)
270
							VALUES
271
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
272
								'PTGDK_TT',        -- PROCESS_ID - varchar(10)
273
								'U',        -- STATUS - varchar(5)
274
								'PTGD',        -- ROLE_USER - varchar(50)
275
								'',        -- BRANCH_ID - varchar(15)
276
								'',        -- CHECKER_ID - varchar(15)
277
								NULL, -- APPROVE_DT - datetime
278
								@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
279
								'N',        -- IS_LEAF - varchar(1)
280
								'',        -- COST_ID - varchar(15)
281
								@KHOI_ID_TF ,
282
								N'Chờ Phó tổng giám đốc khối xác nhận',
283
								0        -- DVDM_ID - varchar(15)
284
								)
285
							END
286
						UPDATE @DATA_KHOI SET IS_NEXT=0
287
						IF(@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
288
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
289
						IF(@IS_PTGD=0)
290
							UPDATE @DATA_KHOI SET IS_NEXT=1 WHERE KHOI_ID=@KHOI_ID_TF
291
						FETCH NEXT FROM lstDATA INTO @KHOI_ID_TF,@TOTAL_TRANSFER,@IS_GDK,@IS_PTGD 
292
					END
293
							CLOSE lstDATA
294
							DEALLOCATE lstDATA
295
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
296
						SET @STEP_PARENT='PTGDK_TT'
297
					IF(EXISTS(SELECT * FROM @DATA_KHOI WHERE IS_NEXT=1) 
298
							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))
299
						BEGIN
300
							IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
301
							BEGIN
302
							INSERT INTO dbo.PL_REQUEST_PROCESS
303
							(
304
							REQ_ID,
305
							PROCESS_ID,
306
							STATUS,
307
							ROLE_USER,
308
							BRANCH_ID,
309
							CHECKER_ID,
310
							APPROVE_DT,
311
							PARENT_PROCESS_ID,
312
							IS_LEAF,
313
							COST_ID,
314
							DVDM_ID,
315
							NOTES,
316
							IS_HAS_CHILD
317
							)
318
							VALUES
319
							(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
320
							'TGD',                               -- PROCESS_ID - varchar(10)
321
							'U',                                 -- STATUS - varchar(5)
322
							'TGD',                               -- ROLE_USER - varchar(50)
323
							'',                                  -- BRANCH_ID - varchar(15)
324
							'',                                  -- CHECKER_ID - varchar(15)
325
							NULL,                                -- APPROVE_DT - datetime
326
							@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
327
							'N',                                 -- IS_LEAF - varchar(1)
328
							'',                                  -- COST_ID - varchar(15)
329
							'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
330
							);
331
							END
332

    
333
						END
334
					
335

    
336
					END
337

    
338

    
339
				DECLARE @LAST_PROCESS VARCHAR(20)	
340
					
341
					
342
				SET @LAST_PROCESS=(
343
				SELECT TOP 1 PL.PROCESS_ID FROM dbo.PL_REQUEST_PROCESS PL 
344
				LEFT JOIN dbo.PL_CONFIG_PROCESS CP ON CP.PROCESS_ID=PL.PROCESS_ID
345
				WHERE REQ_ID=@p_REQ_ID
346
				GROUP BY PL.PROCESS_ID,CP.LEVEL_PROCESS 
347
				ORDER BY CP.LEVEL_PROCESS DESC)
348
					
349
			
350
					
351
					UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@LAST_PROCESS WHERE PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
352

    
353

    
354

    
355
					SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
356
					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 
357
					EXISTS(SELECT ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=ROLE_USER) 
358
					AND PROCESS_ID=@PROCESS_CURR
359

    
360
					UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
361
					UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
362
				END
363
				ELSE IF(@PROCESS_CURR='KT')
364
				BEGIN
365
					--	SELECT @ERROR=ERROR,
366
					--	   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
367
					--IF(@ERROR=1)
368
					--BEGIN
369
					--	 ROLLBACK TRANSACTION;
370
					--	SELECT '-1'  Result,
371
					--		   @EROOR_DES ErrorDesc
372
   
373
					--	RETURN '0';
374
					--END
375

    
376
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
377
						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 
378
						AND EXISTS(SELECT ROLE_ID FROM @AUTHOR_DVDM AUTH WHERE AUTH.ROLE_ID=ROLE_USER)  
379
						AND PROCESS_ID=@PROCESS_CURR
380
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
381
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
382
				END
383
				ELSE
384
				BEGIN
385
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
386

    
387

    
388
				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)
389
				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)
390
							
391

    
392

    
393
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
394
				BEGIN
395
						
396
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
397
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
398
						
399
				END
400

    
401
				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='')
402
				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='')
403

    
404
				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)))
405
					BEGIN
406
					IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
407
					BEGIN
408
							IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
409
							BEGIN
410

    
411
							
412
									DECLARE 	@LIMIT_VALUE DECIMAL(18,0),
413
									@IS_NEXT BIT=0,@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
414
									DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
415
						
416

    
417
									SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID)
418
						
419
									SET @NOTE=   (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
420
							
421

    
422
									DECLARE lstTransfer CURSOR FOR
423
									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)
424
									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	)
425
									GROUP BY FR_DVDM_ID
426
									OPEN lstTransfer
427
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
428
									WHILE @@FETCH_STATUS = 0 
429
									BEGIN 
430
									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
431
									LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
432
									WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
433
									BEGIN
434
										INSERT INTO dbo.PL_REQUEST_PROCESS
435
										(
436
											REQ_ID,
437
											PROCESS_ID,
438
											STATUS,
439
											ROLE_USER,
440
											BRANCH_ID,
441
											CHECKER_ID,
442
											APPROVE_DT,
443
											PARENT_PROCESS_ID,
444
											IS_LEAF,
445
											COST_ID,
446
											DVDM_ID,
447
											NOTES,IS_HAS_CHILD
448
										)
449
										VALUES
450
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
451
											'DVDM_DC',        -- PROCESS_ID - varchar(10)
452
											'U',        -- STATUS - varchar(5)
453
											'GDDV',        -- ROLE_USER - varchar(50)
454
											'',        -- BRANCH_ID - varchar(15)
455
											'',        -- CHECKER_ID - varchar(15)
456
											NULL, -- APPROVE_DT - datetime
457
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
458
											'N',        -- IS_LEAF - varchar(1)
459
											'',        -- COST_ID - varchar(15)
460
											@DVDM_ID ,        -- DVDM_ID - varchar(15)
461
											N'Chờ '+@NOTE+N' xác nhận'
462
											,0)
463
									END
464

    
465
									FETCH NEXT FROM lstTransfer INTO @DVDM_ID
466
									END
467
									CLOSE lstTransfer
468
									DEALLOCATE lstTransfer
469

    
470

    
471

    
472
								SET @STEP_NEXT='TC'
473
								IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
474
								BEGIN
475
										SET @STEP_PARENT='DVDM_DC'
476
										SET @STEP_NEXT	='DVDM_DC'
477
								END
478

    
479
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
480
								SET @STEP_PARENT='TC'
481
	
482
								UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@STEP_NEXT AND REQ_ID=@p_REQ_ID
483
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
484
								UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@STEP_NEXT WHERE REQ_ID=@p_REQ_ID
485

    
486
						END	
487
					END
488
				END
489

    
490
			
491
	
492
				END
493

    
494
			IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE'))
495
			BEGIN
496
				
497
					
498
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
499
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
500
			END
501
		END
502
				
503
		IF @@Error <> 0 GOTO ABORT
504
COMMIT TRANSACTION
505
SELECT 0 as Result, '' ErrorDesc
506
RETURN 0
507
ABORT:
508
BEGIN
509
		ROLLBACK TRANSACTION
510
		SELECT -1 as Result, '' ErrorDesc
511
		RETURN -1
512
End
513

    
514

    
515

    
516

    
517

    
518