Project

General

Profile

FILE 01 12H00 08122020 PHE DUYET CHU TRUONG (PL REQUEST DOC APP).txt

Luc Tran Van, 12/08/2020 11:35 AM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_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_DES NVARCHAR(500)
10
AS
11

    
12
BEGIN TRANSACTION;
13
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
14
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='R' AND REQ_ID =@p_REQ_ID))
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
--SET @p_APPROVE_DT = @p_APPROVE_DT 
21

    
22
--Validation is here
23
DECLARE @ERRORSYS NVARCHAR(15) = '';
24
IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
25
    SET @ERRORSYS = 'REQ-00002';
26
IF @ERRORSYS <> ''
27
BEGIN
28
    ROLLBACK TRANSACTION;
29
    SELECT ErrorCode Result,
30
           ErrorDesc ErrorDesc
31
    FROM SYS_ERROR
32
    WHERE ErrorCode = @ERRORSYS;
33
    RETURN '0';
34
END;
35
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
36
SELECT @ERROR=ERROR,
37
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_CHECKER_ID,'APPNEW')
38
IF(@ERROR=1)
39
BEGIN
40
	 ROLLBACK TRANSACTION;
41
    SELECT '-1'  Result,
42
           @EROOR_DES ErrorDesc
43
   
44
    RETURN '0';
45
END
46
--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
47
--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
48
DECLARE @BRANCH_TYPE_LOGIN VARCHAR(15)
49
SET @BRANCH_TYPE_LOGIN = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_LOGIN)
50
DECLARE @Result VARCHAR(5),
51
        @TOTAL_TRANSFER DECIMAL(18, 0),
52
        @TOTAL_AMT DECIMAL(18, 0),
53
        @ROLE_USER_NOTIFI VARCHAR(50),
54
        @ROLE_ID VARCHAR(20),
55
        @ROLE_TF VARCHAR(20),
56
        @LIMIT_VALUE DECIMAL(18, 0),
57
        @STEP_CURR VARCHAR(20),
58
        @STEP_PARENT VARCHAR(20),
59
        @COST_ID VARCHAR(20),
60
        @FR_BRANCH_ID VARCHAR(20),
61
        @FR_DEP_ID VARCHAR(20),
62
        @DVDM_ID VARCHAR(20),
63
        @IS_NEXT BIT = 0,
64
		@IS_NEXT_CDT BIT = 0,
65
        @TOTAL_AMT_GD DECIMAL(12, 0),
66
        @STOP BIT,
67
        @NOTES NVARCHAR(100);
68
DECLARE @ROLE_CDT VARCHAR(20),
69
        @DVDM_CDT VARCHAR(20),
70
        @LIMIT_VALUE_CDT VARCHAR(20),
71
        @NOTES_CDT VARCHAR(20);
72
DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20)
73
DECLARE @BRANCH_PARENT VARCHAR(15)
74
DECLARE @DATA_DVDM TABLE
75
(
76
    DVDM_ID VARCHAR(20),
77
    TOTAL_AMT DECIMAL(12, 0),
78
	IS_PTGD BIT
79
);
80
--UPDATE dbo.PL_REQUEST_COSTCENTER 
81
--SET DVMD_ID=(SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE PL_COSTCENTER.COST_ID=PL_REQUEST_COSTCENTER.COST_ID),
82
--TOTAL_AMT_GD=(SELECT SUM(PM.TOTAL_AMT) AS AMT FROM
83
--(SELECT PLAN_ID,GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT  WHERE REQDT_TYPE='I' AND REQ_ID=@p_REQ_ID) PR
84
--LEFT JOIN dbo.PL_MASTER PM ON PR.PLAN_ID=PM.PLAN_ID
85
--WHERE PM.COST_ID=PL_REQUEST_COSTCENTER.COST_ID)
86
--WHERE REQ_ID=@p_REQ_ID
87
	INSERT INTO @DATA_DVDM
88
	SELECT KHOI_ID,
89
		   SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
90
	FROM dbo.PL_REQUEST_DOC_DT DT
91
	LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
92
	WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
93
	GROUP BY KHOI_ID,DM.IS_PTGD;
94
	
95
	SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
96
	
97

    
98

    
99

    
100

    
101
	DELETE FROM dbo.PL_REQUEST_PROCESS
102
	WHERE REQ_ID = @p_REQ_ID;
103
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
104
	@BRANCH_CREATE_TYPE VARCHAR(10)
105

    
106

    
107
	SELECT @BRANCH_ID =BRANCH_ID,@DEP_ID=DEP_ID,@BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
108

    
109
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
110
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
111

    
112
	
113
	--IF(@BRANCH_TYPE='PGD')
114
	--	SET @BRANCH_ID=(SELECT TOP 1 FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
115
		
116
	
117
	-- KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20 05 2020
118
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN'))
119
	BEGIN
120
		
121
		DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
122
		INSERT INTO dbo.PL_PROCESS
123
		(
124
			REQ_ID,
125
			PROCESS_ID,
126
			CHECKER_ID,
127
			APPROVE_DT,
128
			PROCESS_DESC,NOTES
129
		)
130
		VALUES
131
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
132
			'SIGN',        -- PROCESS_ID - varchar(10)
133
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
134
			@p_APPROVE_DT , -- APPROVE_DT - datetime
135
			N'Cấp phê duyệt trung gian xác nhận tờ trình chủ trương',
136
			N'Cấp phê duyệt trung gian'
137
		)
138
	--- DUA CAP PHE DUYET TRUONG DON VI
139
	    INSERT INTO dbo.PL_REQUEST_PROCESS
140
		(
141
		    REQ_ID,
142
		    PROCESS_ID,
143
		    STATUS,
144
		    ROLE_USER,
145
		    BRANCH_ID,
146
			DEP_ID,
147
		    CHECKER_ID,
148
		    APPROVE_DT,
149
		    PARENT_PROCESS_ID,
150
		    IS_LEAF,
151
		    COST_ID,
152
		    DVDM_ID,
153
		    NOTES,
154
		    IS_HAS_CHILD
155
		)
156
		VALUES
157
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
158
		    'APPNEW',        -- PROCESS_ID - varchar(10)
159
		    'C',        -- STATUS - varchar(5)
160
		    'GDDV',        -- ROLE_USER - varchar(50)
161
		    --@BRANCH_CREATE, 
162
			@BRANCH_ID,
163
			@DEP_ID,      -- BRANCH_ID - varchar(15)
164
		    '',        -- CHECKER_ID - varchar(15)
165
		    NULL,      -- APPROVE_DT - datetime
166
		    '',        -- PARENT_PROCESS_ID - varchar(10)
167
		    'N',        -- IS_LEAF - varchar(1)
168
		    '',        -- COST_ID - varchar(15)
169
		    '',        -- DVDM_ID - varchar(15)
170
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
171
		    NULL       -- IS_HAS_CHILD - bit
172
		 )
173
	--- UPDATE PROCESS_ID VE APP_NEW
174
		UPDATE PL_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID
175
	END
176
	ELSE
177
	BEGIN -- NGUOC LAI LA GIAM DOC DON VI PHE DUYET
178
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> ''))
179
		BEGIN
180
			IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID))
181
			BEGIN
182
				ROLLBACK TRANSACTION
183
				SELECT '-1' Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi cấp phê duyệt trung gian xác nhận. Vui lòng đợi nhân viên '+(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+' xác nhận phiếu!' ErrorDesc
184
				RETURN '-1'
185
			END
186
			IF(@p_CHECKER_ID = (SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
187
			BEGIN
188
				ROLLBACK TRANSACTION
189
				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' đang đợi trưởng đơn vị phê duyệt. Bạn không có thẩm quyền phê duyệt cấp trưởng đơn vị! Vui lòng xem lịch sử xử lý phiếu' ErrorDesc
190
				RETURN '-1'
191
			END
192
		END
193
		INSERT INTO dbo.PL_REQUEST_PROCESS
194
		(
195
			REQ_ID,
196
			PROCESS_ID,
197
			STATUS,
198
			ROLE_USER,
199
			BRANCH_ID,
200
			DEP_ID,
201
			CHECKER_ID,
202
			APPROVE_DT,
203
			PARENT_PROCESS_ID,
204
			IS_LEAF,
205
			NOTES
206
		)
207
		VALUES
208
		(   @p_REQ_ID,               -- REQ_ID - varchar(15)
209
			'APPNEW',                  -- PROCESS_ID - varchar(10)
210
			'P',                     -- STATUS - varchar(5)
211
			'GDDV',                      -- ROLE_USER - varchar(50)
212
			@BRANCH_ID  ,
213
			@DEP_ID,                      -- BRANCH_ID - varchar(15)
214
			@p_CHECKER_ID,           -- CHECKER_ID - varchar(15)
215
			GETDATE() , -- APPROVE_DT - datetime
216
			NULL, 'N', N'Trưởng đơn vị phê duyệt');
217
		SET @STEP_CURR = 'APPNEW';
218
		SET @STEP_PARENT = 'APPNEW';
219

    
220

    
221
		
222
		
223
		-- Nếu khổng phải tờ trình có chọn căn cứ
224
		IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PL_BASED_ID IS NOT NULL AND PL_BASED_ID <>''))
225
		BEGIN
226

    
227
		DECLARE @ROLE_KT VARCHAR(20), @DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(500)
228
		SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
229
				
230
		SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
231
		SET @NOTES_KT = (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='KT' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') 
232
		-- Kế toán
233
		IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND ROLE_USER=@ROLE_KT AND ( DVDM_ID=@DVDM_KT OR @DVDM_KT IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
234
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
235
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
236
				BEGIN
237
					INSERT INTO dbo.PL_REQUEST_PROCESS
238
					(
239
						REQ_ID,
240
						PROCESS_ID,
241
						STATUS,
242
						ROLE_USER,
243
						BRANCH_ID,
244
						CHECKER_ID,
245
						APPROVE_DT,
246
						PARENT_PROCESS_ID,
247
						IS_LEAF,
248
						COST_ID,
249
						DVDM_ID,
250
						NOTES,
251
						IS_HAS_CHILD
252
					)
253
					VALUES
254
					(   @p_REQ_ID,    -- REQ_ID - varchar(15)
255
						'KT',       -- PROCESS_ID - varchar(10)
256
						'U',          -- STATUS - varchar(5)
257
						@ROLE_KT,       -- ROLE_USER - varchar(50)
258
						'',           -- BRANCH_ID - varchar(15)
259
						'',           -- CHECKER_ID - varchar(15)
260
						NULL,         -- APPROVE_DT - datetime
261
						@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
262
						'N',          -- IS_LEAF - varchar(1)
263
						'',           -- COST_ID - varchar(15)
264
						@DVDM_KT, N'Chờ phòng kế toán xác nhận', 1
265
						-- DVDM_ID - varchar(15)
266
						);
267

    
268
					SET @STEP_PARENT='KT'
269
				END
270
		-- Có DVCM
271
		IF (EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID))
272
		BEGIN
273
			DECLARE lstCostCenter CURSOR FOR
274
			SELECT COST_ID
275
			FROM dbo.PL_REQUEST_COSTCENTER
276
			WHERE REQ_ID = @p_REQ_ID AND COST_ID IS NOT NULL AND COST_ID <>'';
277
			OPEN lstCostCenter;
278
			FETCH NEXT FROM lstCostCenter
279
			INTO @COST_ID;
280
			WHILE @@FETCH_STATUS = 0
281
			BEGIN
282
				IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND (ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )AND ( DVDM_ID=@COST_ID OR @COST_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
283
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
284
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
285
				BEGIN
286
				INSERT INTO dbo.PL_REQUEST_PROCESS
287
				(
288
					REQ_ID,
289
					PROCESS_ID,
290
					STATUS,
291
					ROLE_USER,
292
					BRANCH_ID,
293
					CHECKER_ID,
294
					APPROVE_DT,
295
					PARENT_PROCESS_ID,
296
					IS_LEAF,
297
					COST_ID,
298
					DVDM_ID,
299
					NOTES,
300
					IS_HAS_CHILD
301
				)
302
				VALUES
303
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
304
					'DVCM',       -- PROCESS_ID - varchar(10)
305
					'U',          -- STATUS - varchar(5)
306
					'GDDV',       -- ROLE_USER - varchar(50)
307
					'',           -- BRANCH_ID - varchar(15)
308
					'',           -- CHECKER_ID - varchar(15)
309
					NULL,         -- APPROVE_DT - datetime
310
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
311
					'N',          -- IS_LEAF - varchar(1)
312
					'',           -- COST_ID - varchar(15)
313
					@COST_ID, N'Chờ đơn vị chuyên môn xác nhận', 1
314
					-- DVDM_ID - varchar(15)
315
					);
316
				END
317
				ELSE
318
				BEGIN
319

    
320
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
321
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
322
				END
323

    
324
				FETCH NEXT FROM lstCostCenter
325
				INTO @COST_ID;
326
			END;
327
			CLOSE lstCostCenter;
328
			DEALLOCATE lstCostCenter;
329
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
330
				SET @STEP_PARENT = 'DVCM';
331
		END;
332

    
333

    
334
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
335
		--Có điều chuyển NS
336
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
337
		BEGIN
338
				
339
			IF (EXISTS(SELECT FR_BRN_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)
340
					AND NOT EXISTS(SELECT * FROM dbo.PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='TRADE_USER_ALL' AND BRANCH_ID=FR_BRN_ID AND DEP_ID=FR_DEP_ID)))	
341
			BEGIN
342

    
343
			DECLARE lstTransfer CURSOR FOR
344
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
345
					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
346
					AND NOT EXISTS(SELECT * FROM dbo.PL_ROLE_DATA_CONFIG WHERE ROLE_TYPE='TRADE_USER_ALL' AND BRANCH_ID=FR_BRN_ID AND DEP_ID=FR_DEP_ID)
347
					AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER='GDDV' OR ROLE_USER=@ROLE_KT) AND DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
348
												LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
349
												WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
350

    
351
			GROUP BY FR_BRN_ID,
352
						FR_DEP_ID;
353
			OPEN lstTransfer;
354
			FETCH NEXT FROM lstTransfer
355
			INTO @FR_BRANCH_ID,
356
					@FR_DEP_ID;
357
			WHILE @@FETCH_STATUS = 0
358
			BEGIN
359
				INSERT INTO dbo.PL_REQUEST_PROCESS
360
				(
361
					REQ_ID,
362
					PROCESS_ID,
363
					STATUS,
364
					ROLE_USER,
365
					BRANCH_ID,
366
					CHECKER_ID,
367
					APPROVE_DT,
368
					PARENT_PROCESS_ID,
369
					IS_LEAF,
370
					COST_ID,
371
					DVDM_ID,
372
					NOTES,
373
					IS_HAS_CHILD,
374
					DEP_ID
375
				)
376
				VALUES
377
				(   @p_REQ_ID,     -- REQ_ID - varchar(15)
378
					'DVDC',        -- PROCESS_ID - varchar(10)
379
					'U',           -- STATUS - varchar(5)
380
					'GDDV',        -- ROLE_USER - varchar(50)
381
					@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
382
					'',            -- CHECKER_ID - varchar(15)
383
					NULL,          -- APPROVE_DT - datetime
384
					@STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
385
					'N',           -- IS_LEAF - varchar(1)
386
					'',            -- COST_ID - varchar(15)
387
					'',            -- DVDM_ID - varchar(15)
388
					N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID);
389
				FETCH NEXT FROM lstTransfer
390
				INTO @FR_BRANCH_ID,
391
						@FR_DEP_ID;
392
			END;
393
			CLOSE lstTransfer;
394
			DEALLOCATE lstTransfer;
395
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDC'))
396
				SET @STEP_PARENT = 'DVDC';
397
		END;
398

    
399
		-- Đầu mối nhận
400
		DECLARE @LIMIT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2),@TOTAL_TRANFER DECIMAL(18,2)
401

    
402
		SET @LIMIT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='DCNS')
403
		SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDDV' AND BRANCH_ID=@BRANCH_CREATE)
404
		SET @TOTAL_TRANFER=(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
405

    
406
		IF(@TOTAL_TRANSFER > @LIMIT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
407
		BEGIN
408

    
409
		DECLARE lstTransfer CURSOR FOR
410
		SELECT TO_DVDM_ID
411
		FROM dbo.PL_REQUEST_TRANSFER
412
		WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>''
413
		GROUP BY TO_DVDM_ID;
414
		OPEN lstTransfer;
415
		FETCH NEXT FROM lstTransfer
416
		INTO @DVDM_ID;
417
		WHILE @@FETCH_STATUS = 0
418
		BEGIN
419
			IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND (ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') ) AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
420
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
421
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
422
		
423
			BEGIN
424
			INSERT INTO dbo.PL_REQUEST_PROCESS
425
			(
426
				REQ_ID,
427
				PROCESS_ID,
428
				STATUS,
429
				ROLE_USER,
430
				BRANCH_ID,
431
				CHECKER_ID,
432
				APPROVE_DT,
433
				PARENT_PROCESS_ID,
434
				IS_LEAF,
435
				COST_ID,
436
				DVDM_ID,
437
				NOTES,
438
				IS_HAS_CHILD
439
			)
440
			VALUES
441
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
442
				'DVDM_DC',    -- PROCESS_ID - varchar(10)
443
				'U',          -- STATUS - varchar(5)
444
				'GDDV',       -- ROLE_USER - varchar(50)
445
				'',           -- BRANCH_ID - varchar(15)
446
				'',           -- CHECKER_ID - varchar(15)
447
				NULL,         -- APPROVE_DT - datetime
448
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
449
				'N',          -- IS_LEAF - varchar(1)
450
				'',           -- COST_ID - varchar(15)
451
				@DVDM_ID,     -- DVDM_ID - varchar(15)
452
				N'Chờ đơn vị đầu mối xác nhận', 0);
453
			END
454
			FETCH NEXT FROM lstTransfer
455
			INTO @DVDM_ID;
456
		END;
457
		CLOSE lstTransfer;
458
		DEALLOCATE lstTransfer;
459

    
460

    
461
		IF (EXISTS
462
		(
463
			SELECT FR_BRN_ID
464
			FROM dbo.PL_REQUEST_TRANSFER
465
			WHERE REQ_DOC_ID = @p_REQ_ID
466
					AND FR_BRN_ID = @BRANCH_CREATE
467
					AND FR_DEP_ID = @DEP_CREATE
468
		)
469
			)
470
		BEGIN
471
			-- Đầu mối cho
472
			DECLARE lstTransfer CURSOR FOR
473
			SELECT FR_DVDM_ID
474
			FROM dbo.PL_REQUEST_TRANSFER
475
			WHERE REQ_DOC_ID = @p_REQ_ID
476
					AND FR_BRN_ID = @BRANCH_CREATE
477
					AND FR_DEP_ID = @DEP_CREATE
478
					AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
479
					AND NOT EXISTS
480
			(
481
				SELECT *
482
				FROM dbo.PL_REQUEST_PROCESS
483
				WHERE REQ_ID = @p_REQ_ID
484
						AND PROCESS_ID = 'DVDM_DC'
485
						AND DVDM_ID = FR_DVDM_ID
486
			)
487
			GROUP BY FR_DVDM_ID;
488
			OPEN lstTransfer;
489
			FETCH NEXT FROM lstTransfer
490
			INTO @DVDM_ID;
491
			WHILE @@FETCH_STATUS = 0
492
			BEGIN
493
			IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND 
494
			(ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') ) 
495
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
496
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
497
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
498
			BEGIN
499
				INSERT INTO dbo.PL_REQUEST_PROCESS
500
				(
501
					REQ_ID,
502
					PROCESS_ID,
503
					STATUS,
504
					ROLE_USER,
505
					BRANCH_ID,
506
					CHECKER_ID,
507
					APPROVE_DT,
508
					PARENT_PROCESS_ID,
509
					IS_LEAF,
510
					COST_ID,
511
					DVDM_ID,
512
					NOTES,
513
					IS_HAS_CHILD
514
				)
515
				VALUES
516
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
517
					'DVDM_DC',    -- PROCESS_ID - varchar(10)
518
					'U',          -- STATUS - varchar(5)
519
					'GDDV',       -- ROLE_USER - varchar(50)
520
					'',           -- BRANCH_ID - varchar(15)
521
					'',           -- CHECKER_ID - varchar(15)
522
					NULL,         -- APPROVE_DT - datetime
523
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
524
					'N',          -- IS_LEAF - varchar(1)
525
					'',           -- COST_ID - varchar(15)
526
					@DVDM_ID,     -- DVDM_ID - varchar(15)
527
					N'Chờ đơn vị đầu mối xác nhận', 0);
528
			END
529
				FETCH NEXT FROM lstTransfer
530
				INTO @DVDM_ID;
531
			END;
532
			CLOSE lstTransfer;
533
			DEALLOCATE lstTransfer;
534

    
535

    
536

    
537

    
538
			IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
539
				SET @STEP_PARENT='DVDM_DC'
540

    
541

    
542
		END;
543

    
544

    
545

    
546
		INSERT INTO dbo.PL_REQUEST_PROCESS
547
		(
548
			REQ_ID,
549
			PROCESS_ID,
550
			STATUS,
551
			ROLE_USER,
552
			BRANCH_ID,
553
			CHECKER_ID,
554
			APPROVE_DT,
555
			PARENT_PROCESS_ID,
556
			IS_LEAF,
557
			COST_ID,
558
			DVDM_ID,
559
			NOTES,IS_HAS_CHILD
560
		)
561
		VALUES
562
		(   @p_REQ_ID,    -- REQ_ID - varchar(15)
563
			'TC',         -- PROCESS_ID - varchar(10)
564
			'U',          -- STATUS - varchar(5)
565
			'TC',         -- ROLE_USER - varchar(50)
566
			'',           -- BRANCH_ID - varchar(15)
567
			'',           -- CHECKER_ID - varchar(15)
568
			NULL,         -- APPROVE_DT - datetime
569
			@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
570
			'N',          -- IS_LEAF - varchar(1)
571
			'',           -- COST_ID - varchar(15)
572
			'',           -- DVDM_ID - varchar(15)
573
			N'Chờ đơn vị Tài chính xác nhận',1);
574
		SET @STEP_PARENT = 'TC';
575
		END
576

    
577
	END;
578
	
579
		
580
		 
581
		IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
582
		AND ((
583
			BRANCH_ID=@BRANCH_CREATE 
584
			AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
585
			AND (DEP_ID IS NULL OR DEP_ID='')))
586
			)
587
			OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
588
			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)
589
			)
590
		))
591
		BEGIN
592
		INSERT INTO dbo.PL_REQUEST_PROCESS
593
				(
594
				REQ_ID,
595
				PROCESS_ID,
596
				STATUS,
597
				ROLE_USER,
598
				BRANCH_ID,
599
				DEP_ID,
600
				CHECKER_ID,
601
				APPROVE_DT,
602
				PARENT_PROCESS_ID,
603
				IS_LEAF,
604
				NOTES
605
				)
606
				VALUES
607
				(   
608
				@p_REQ_ID,               -- REQ_ID - varchar(15)
609
				'DVC',                  -- PROCESS_ID - varchar(10)
610
				'U',                     -- STATUS - varchar(5)
611
				'GDDV',                      -- ROLE_USER - varchar(50)
612
				@BRANCH_CREATE,
613
				@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
614
				NULL,           -- CHECKER_ID - varchar(15)
615
				NULL , -- APPROVE_DT - datetime
616
				@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
617

    
618
		SET @STEP_CURR = 'DVC';
619
		SET @STEP_PARENT = 'DVC';
620
		END
621

    
622
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
623
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
624
		BEGIN
625
		SET @IS_NEXT =
626
		(
627
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
628
		);
629

    
630

    
631

    
632
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
633
		BEGIN
634

    
635
			DECLARE lstCostCenter CURSOR FOR
636
			SELECT DVDM_ID,
637
				   TOTAL_AMT
638
			FROM @DATA_DVDM;
639
			OPEN lstCostCenter;
640
			FETCH NEXT FROM lstCostCenter
641
			INTO @DVDM_ID,
642
				 @TOTAL_AMT_GD;
643
			WHILE @@FETCH_STATUS = 0
644
			BEGIN
645
				INSERT INTO dbo.PL_REQUEST_PROCESS
646
				(
647
					REQ_ID,
648
					PROCESS_ID,
649
					STATUS,
650
					ROLE_USER,
651
					BRANCH_ID,
652
					CHECKER_ID,
653
					APPROVE_DT,
654
					PARENT_PROCESS_ID,
655
					IS_LEAF,
656
					COST_ID,
657
					DVDM_ID,
658
					NOTES,
659
					IS_HAS_CHILD
660
				)
661
				VALUES
662
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
663
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
664
					'U',                                       -- STATUS - varchar(5)
665
					'GDK',                                     -- ROLE_USER - varchar(50)
666
					'',                                        -- BRANCH_ID - varchar(15)
667
					'',                                        -- CHECKER_ID - varchar(15)
668
					NULL,                                      -- APPROVE_DT - datetime
669
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
670
					'N',                                       -- IS_LEAF - varchar(1)
671
					'',                                        -- COST_ID - varchar(15)
672
					@DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
673
					);
674
				FETCH NEXT FROM lstCostCenter
675
				INTO @DVDM_ID,
676
					 @TOTAL_AMT_GD;
677
			END;
678
			CLOSE lstCostCenter;
679
			DEALLOCATE lstCostCenter;
680

    
681
			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))
682
			BEGIN
683
				INSERT INTO dbo.PL_REQUEST_PROCESS
684
				(
685
					REQ_ID,
686
					PROCESS_ID,
687
					STATUS,
688
					ROLE_USER,
689
					BRANCH_ID,
690
					CHECKER_ID,
691
					APPROVE_DT,
692
					PARENT_PROCESS_ID,
693
					IS_LEAF,
694
					COST_ID,
695
					DVDM_ID,
696
					NOTES,IS_HAS_CHILD
697
				)
698
				VALUES
699
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
700
					'GDK_TT',        -- PROCESS_ID - varchar(10)
701
					'U',        -- STATUS - varchar(5)
702
					'GDK',        -- ROLE_USER - varchar(50)
703
					'',        -- BRANCH_ID - varchar(15)
704
					'',        -- CHECKER_ID - varchar(15)
705
					NULL, -- APPROVE_DT - datetime
706
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
707
					'N',        -- IS_LEAF - varchar(1)
708
					'',        -- COST_ID - varchar(15)
709
					@DVDM_CDT ,
710
					N'Chờ giám đốc khối xác nhận',
711
					0        -- DVDM_ID - varchar(15)
712
					)
713
									
714
			END
715

    
716
			SET @IS_NEXT =
717
			(
718
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
719
			);
720

    
721
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
722

    
723
			
724
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
725
			BEGIN
726
				SET @STEP_PARENT='GDK_TT'	
727
			END
728

    
729
				
730
			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)
731

    
732
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
733
			BEGIN
734

    
735
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
736
				BEGIN
737
				DECLARE lstCostCenter CURSOR FOR
738
				SELECT DVDM_ID,
739
					   TOTAL_AMT
740
				FROM @DATA_DVDM WHERE IS_PTGD=1 AND NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND PL_REQUEST_PROCESS.DVDM_ID=[@DATA_DVDM].DVDM_ID) ;
741
				OPEN lstCostCenter;
742
				FETCH NEXT FROM lstCostCenter
743
				INTO @DVDM_ID,
744
					 @TOTAL_AMT_GD;
745
				WHILE @@FETCH_STATUS = 0
746
				BEGIN
747
					INSERT INTO dbo.PL_REQUEST_PROCESS
748
					(
749
						REQ_ID,
750
						PROCESS_ID,
751
						STATUS,
752
						ROLE_USER,
753
						BRANCH_ID,
754
						CHECKER_ID,
755
						APPROVE_DT,
756
						PARENT_PROCESS_ID,
757
						IS_LEAF,
758
						COST_ID,
759
						DVDM_ID,
760
						NOTES,
761
						IS_HAS_CHILD
762
					)
763
					VALUES
764
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
765
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
766
						'U',                                                -- STATUS - varchar(5)
767
						'PTGD',                                             -- ROLE_USER - varchar(50)
768
						'',                                                 -- BRANCH_ID - varchar(15)
769
						'',                                                 -- CHECKER_ID - varchar(15)
770
						NULL,                                               -- APPROVE_DT - datetime
771
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
772
						'N',                                                -- IS_LEAF - varchar(1)
773
						'',                                                 -- COST_ID - varchar(15)
774
						@DVDM_ID, N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
775
						);
776
					
777
					FETCH NEXT FROM lstCostCenter
778
					INTO @DVDM_ID,
779
						 @TOTAL_AMT_GD;
780
				END;
781
				CLOSE lstCostCenter;
782
				DEALLOCATE lstCostCenter;
783

    
784
				SET @IS_NEXT =
785
				(
786
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
787
				);
788

    
789
				
790
				END
791

    
792
				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))
793
								BEGIN
794
									INSERT INTO dbo.PL_REQUEST_PROCESS
795
									(
796
										REQ_ID,
797
										PROCESS_ID,
798
										STATUS,
799
										ROLE_USER,
800
										BRANCH_ID,
801
										CHECKER_ID,
802
										APPROVE_DT,
803
										PARENT_PROCESS_ID,
804
										IS_LEAF,
805
										COST_ID,
806
										DVDM_ID,
807
										NOTES,IS_HAS_CHILD
808
									)
809
									VALUES
810
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
811
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
812
										'U',        -- STATUS - varchar(5)
813
										'PTGD',        -- ROLE_USER - varchar(50)
814
										'',        -- BRANCH_ID - varchar(15)
815
										'',        -- CHECKER_ID - varchar(15)
816
										NULL, -- APPROVE_DT - datetime
817
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
818
										'N',        -- IS_LEAF - varchar(1)
819
										'',        -- COST_ID - varchar(15)
820
										@DVDM_CDT ,
821
										N'Chờ giám đốc khối xác nhận',
822
										0        -- DVDM_ID - varchar(15)
823
									  )
824
									
825
								END
826
	
827
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
828
				IF(EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=0)  AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))=1)
829
				BEGIN
830
				SET @IS_NEXT=1
831
				END
832

    
833
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
834
				BEGIN
835
				SET @STEP_PARENT='PTGDK_TT'	
836
				END
837

    
838

    
839
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
840
				BEGIN
841
					INSERT INTO dbo.PL_REQUEST_PROCESS
842
					(
843
						REQ_ID,
844
						PROCESS_ID,
845
						STATUS,
846
						ROLE_USER,
847
						BRANCH_ID,
848
						CHECKER_ID,
849
						APPROVE_DT,
850
						PARENT_PROCESS_ID,
851
						IS_LEAF,
852
						COST_ID,
853
						DVDM_ID,
854
						NOTES,
855
						IS_HAS_CHILD
856
					)
857
					VALUES
858
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
859
						'TGD',                               -- PROCESS_ID - varchar(10)
860
						'U',                                 -- STATUS - varchar(5)
861
						'TGD',                               -- ROLE_USER - varchar(50)
862
						'',                                  -- BRANCH_ID - varchar(15)
863
						'',                                  -- CHECKER_ID - varchar(15)
864
						NULL,                                -- APPROVE_DT - datetime
865
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
866
						'N',                                 -- IS_LEAF - varchar(1)
867
						'',                                  -- COST_ID - varchar(15)
868
						'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
869
						);
870
					SET @STEP_PARENT = 'TGD';
871
					SET @IS_NEXT =
872
				(
873
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')
874
				);
875

    
876

    
877
					IF(@IS_NEXT=1)
878
					BEGIN
879
						INSERT INTO dbo.PL_REQUEST_PROCESS
880
					(
881
						REQ_ID,
882
						PROCESS_ID,
883
						STATUS,
884
						ROLE_USER,
885
						BRANCH_ID,
886
						CHECKER_ID,
887
						APPROVE_DT,
888
						PARENT_PROCESS_ID,
889
						IS_LEAF,
890
						COST_ID,
891
						DVDM_ID,
892
						NOTES,
893
						IS_HAS_CHILD
894
					)
895
					VALUES
896
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
897
						'HDQT',                               -- PROCESS_ID - varchar(10)
898
						'U',                                 -- STATUS - varchar(5)
899
						'HDQT',                               -- ROLE_USER - varchar(50)
900
						'',                                  -- BRANCH_ID - varchar(15)
901
						'',                                  -- CHECKER_ID - varchar(15)
902
						NULL,                                -- APPROVE_DT - datetime
903
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
904
						'N',                                 -- IS_LEAF - varchar(1)
905
						'',                                  -- COST_ID - varchar(15)
906
						'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
907
						);
908
					SET @STEP_PARENT = 'HDQT';
909
					END
910
				END;
911

    
912

    
913

    
914
	
915
			--ELSE
916
			--BEGIN
917

    
918
			--END
919
		
920
			END;
921

    
922
		END;
923
		END
924
				
925
		END
926
		
927
		INSERT INTO dbo.PL_REQUEST_PROCESS
928
		(
929
			REQ_ID,
930
			PROCESS_ID,
931
			STATUS,
932
			ROLE_USER,
933
			BRANCH_ID,
934
			CHECKER_ID,
935
			APPROVE_DT,
936
			PARENT_PROCESS_ID,
937
			IS_LEAF,
938
			NOTES
939
		)
940
		VALUES
941
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
942
			'APPROVE', -- PROCESS_ID - varchar(10)
943
			'U',       -- STATUS - varchar(5)
944
			'',        -- ROLE_USER - varchar(50)
945
			'',        -- BRANCH_ID - varchar(15)
946
			'',        -- CHECKER_ID - varchar(15)
947
			NULL,      -- APPROVE_DT - datetime
948
			@STEP_PARENT, 'Y', N'Hoàn tất');
949

    
950

    
951

    
952
		IF @@Error <> 0
953
			GOTO ABORT;
954

    
955

    
956

    
957
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
958
		SET @PROCESS_ID_CURR =
959
		(
960
			SELECT TOP 1
961
				   PROCESS_ID
962
			FROM dbo.PL_REQUEST_PROCESS
963
			WHERE REQ_ID = @p_REQ_ID
964
				  AND PARENT_PROCESS_ID = 'APPNEW'
965
		);
966

    
967
		UPDATE dbo.PL_REQUEST_PROCESS
968
		SET STATUS = 'C'
969
		WHERE PARENT_PROCESS_ID = 'APPNEW'
970
			  AND REQ_ID = @p_REQ_ID;
971
		UPDATE dbo.PL_REQUEST_DOC
972
		SET AUTH_STATUS = @p_AUTH_STATUS,
973
			APPROVE_DT = @p_APPROVE_DT,
974
			CHECKER_ID = @p_CHECKER_ID,
975
			PROCESS_ID = @PROCESS_ID_CURR
976
		WHERE REQ_ID = @p_REQ_ID;
977

    
978
		UPDATE dbo.PL_REQUEST_DOC_DT
979
		SET CHECKER_ID=@p_CHECKER_ID,
980
		APPROVE_DT=@p_APPROVE_DT
981
		WHERE REQ_ID = @p_REQ_ID;
982

    
983
		INSERT INTO dbo.PL_PROCESS
984
		(
985
			REQ_ID,
986
			PROCESS_ID,
987
			CHECKER_ID,
988
			APPROVE_DT,
989
			PROCESS_DESC,
990
			NOTES
991
		)
992
		VALUES
993
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
994
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
995
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
996
			@p_APPROVE_DT,                                        -- APPROVE_DT - datetime
997
			@p_PROCESS_DES, CASE WHEN @BRANCH_TYPE_LOGIN ='PGD' THEN N'Trưởng phòng giao dịch xác nhận phiếu' ELSE N'Trưởng đơn vị phê duyệt' END -- PROCESS_DESC - nvarchar(1000)
998
			);
999
		IF (EXISTS
1000
		(
1001
			SELECT REQ_ID
1002
			FROM dbo.PL_REQUEST_DOC
1003
			WHERE REQ_ID = @p_REQ_ID
1004
				  AND PROCESS_ID = 'APPROVE'
1005
		)
1006
		   )
1007
		BEGIN
1008
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1009
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1010
			SET @Result = '0';
1011
		END;
1012
		SET @Result = '1';
1013
END
1014
COMMIT TRANSACTION;
1015
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1016
BEGIN
1017
	SELECT @Result AS Result,
1018
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1019
       '' ErrorDesc;
1020
		RETURN '0';
1021
END
1022
ELSE
1023
BEGIN
1024
	SELECT '4' as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đã được cấp phê duyệt trung gian xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt' ErrorDesc
1025
	RETURN '4'
1026
END
1027
ABORT:
1028
BEGIN
1029

    
1030
    ROLLBACK TRANSACTION;
1031
    SELECT '-1' AS Result,
1032
           '' ROLE_NOTIFI,
1033
           '' ErrorDesc;
1034
    RETURN '-1';
1035
END;
1036

    
1037

    
1038

    
1039

    
1040

    
1041