Project

General

Profile

PL_REQUEST_DOC_APP.txt

Truong Nguyen Vu, 02/04/2021 04:42 PM

 
1
USE [gAMSPro_VietcapitalBank_v2]
2
GO
3
/****** Object:  StoredProcedure [dbo].[PL_REQUEST_DOC_App]    Script Date: 04-Feb-21 4:40:00 PM ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_App]
9
    @p_REQ_ID VARCHAR(15) = NULL,
10
    @p_AUTH_STATUS VARCHAR(1) = NULL,
11
    @p_CHECKER_ID VARCHAR(15) = NULL,
12
    @p_APPROVE_DT DATETIME = NULL,
13
    @p_ROLE_LOGIN VARCHAR(50) = NULL,
14
    @p_BRANCH_LOGIN VARCHAR(15),
15
    @p_PROCESS_DES NVARCHAR(500)
16
AS
17

    
18
BEGIN TRANSACTION;
19
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
20
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='R' AND REQ_ID =@p_REQ_ID))
21
BEGIN
22
	ROLLBACK TRANSACTION
23
	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
24
	RETURN '-1'
25
END
26
--SET @p_APPROVE_DT = @p_APPROVE_DT 
27

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

    
104

    
105

    
106

    
107
	DELETE FROM dbo.PL_REQUEST_PROCESS
108
	WHERE REQ_ID = @p_REQ_ID;
109
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
110
	@BRANCH_CREATE_TYPE VARCHAR(10)
111

    
112

    
113
	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
114

    
115
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
116
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
117

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

    
226

    
227
		
228
		
229
		-- Nếu khổng phải tờ trình có chọn căn cứ
230
		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 <>''))
231
		BEGIN
232

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

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

    
326
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
327
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
328
				END
329

    
330
				FETCH NEXT FROM lstCostCenter
331
				INTO @COST_ID;
332
			END;
333
			CLOSE lstCostCenter;
334
			DEALLOCATE lstCostCenter;
335
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
336
				SET @STEP_PARENT = 'DVCM';
337
		END;
338

    
339

    
340
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
341
		--Có điều chuyển NS
342
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
343
		BEGIN
344
				
345
			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)
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
			BEGIN
348

    
349
			DECLARE lstTransfer CURSOR FOR
350
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
351
					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
352
					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)
353
					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
354
												LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
355
												WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
356

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

    
405
		-- Đầu mối nhận
406
		DECLARE @LIMIT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2)
407

    
408
		SET @LIMIT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='DCNS')
409
		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)
410
		SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
411

    
412
	
413
		IF(@TOTAL_TRANSFER > @LIMIT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
414
		BEGIN
415

    
416
		DECLARE lstTransfer CURSOR FOR
417
		SELECT TO_DVDM_ID
418
		FROM dbo.PL_REQUEST_TRANSFER
419
		WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>''
420
		GROUP BY TO_DVDM_ID;
421
		OPEN lstTransfer;
422
		FETCH NEXT FROM lstTransfer
423
		INTO @DVDM_ID;
424
		WHILE @@FETCH_STATUS = 0
425
		BEGIN
426
			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
427
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
428
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
429
		
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,
445
				IS_HAS_CHILD
446
			)
447
			VALUES
448
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
449
				'DVDM_DC',    -- PROCESS_ID - varchar(10)
450
				'U',          -- STATUS - varchar(5)
451
				'GDDV',       -- ROLE_USER - varchar(50)
452
				'',           -- BRANCH_ID - varchar(15)
453
				'',           -- CHECKER_ID - varchar(15)
454
				NULL,         -- APPROVE_DT - datetime
455
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
456
				'N',          -- IS_LEAF - varchar(1)
457
				'',           -- COST_ID - varchar(15)
458
				@DVDM_ID,     -- DVDM_ID - varchar(15)
459
				N'Chờ đơn vị đầu mối xác nhận', 0);
460
			END
461
			FETCH NEXT FROM lstTransfer
462
			INTO @DVDM_ID;
463
		END;
464
		CLOSE lstTransfer;
465
		DEALLOCATE lstTransfer;
466

    
467

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

    
542

    
543

    
544

    
545
			IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
546
				SET @STEP_PARENT='DVDM_DC'
547

    
548

    
549
		END;
550

    
551

    
552

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

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

    
625
		--SET @STEP_CURR = 'DVC';
626
		--SET @STEP_PARENT = 'DVC';
627
		--END
628

    
629
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
630
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
631
		BEGIN
632
		SET @IS_NEXT =
633
		(
634
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
635
		);
636

    
637

    
638

    
639
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
640
		BEGIN
641

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

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

    
723
			SET @IS_NEXT =
724
			(
725
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
726
			);
727

    
728
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
729

    
730
			
731
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
732
			BEGIN
733
				SET @STEP_PARENT='GDK_TT'	
734
			END
735

    
736
				
737
			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)
738

    
739
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
740
			BEGIN
741

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

    
791
				SET @IS_NEXT =
792
				(
793
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
794
				);
795

    
796
				
797
				END
798

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

    
840
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
841
				BEGIN
842
				SET @STEP_PARENT='PTGDK_TT'	
843
				END
844

    
845

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

    
883

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

    
919

    
920

    
921
	
922
			--ELSE
923
			--BEGIN
924

    
925
			--END
926
		
927
			END;
928

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

    
957

    
958

    
959
		IF @@Error <> 0
960
			GOTO ABORT;
961

    
962

    
963

    
964
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
965
		SET @PROCESS_ID_CURR =
966
		(
967
			SELECT TOP 1
968
				   PROCESS_ID
969
			FROM dbo.PL_REQUEST_PROCESS
970
			WHERE REQ_ID = @p_REQ_ID
971
				  AND PARENT_PROCESS_ID = 'APPNEW'
972
		);
973

    
974
		UPDATE dbo.PL_REQUEST_PROCESS
975
		SET STATUS = 'C'
976
		WHERE PARENT_PROCESS_ID = 'APPNEW'
977
			  AND REQ_ID = @p_REQ_ID;
978
		UPDATE dbo.PL_REQUEST_DOC
979
		SET AUTH_STATUS = @p_AUTH_STATUS,
980
			APPROVE_DT = @p_APPROVE_DT,
981
			CHECKER_ID = @p_CHECKER_ID,
982
			PROCESS_ID = @PROCESS_ID_CURR
983
		WHERE REQ_ID = @p_REQ_ID;
984

    
985
		UPDATE dbo.PL_REQUEST_DOC_DT
986
		SET CHECKER_ID=@p_CHECKER_ID,
987
		APPROVE_DT=@p_APPROVE_DT
988
		WHERE REQ_ID = @p_REQ_ID;
989

    
990
		INSERT INTO dbo.PL_PROCESS
991
		(
992
			REQ_ID,
993
			PROCESS_ID,
994
			CHECKER_ID,
995
			APPROVE_DT,
996
			PROCESS_DESC,
997
			NOTES
998
		)
999
		VALUES
1000
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1001
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1002
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1003
			@p_APPROVE_DT,                                        -- APPROVE_DT - datetime
1004
			@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)
1005
			);
1006
		IF (EXISTS
1007
		(
1008
			SELECT REQ_ID
1009
			FROM dbo.PL_REQUEST_DOC
1010
			WHERE REQ_ID = @p_REQ_ID
1011
				  AND PROCESS_ID = 'APPROVE'
1012
		)
1013
		   )
1014
		BEGIN
1015
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1016
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1017
			SET @Result = '0';
1018
		END;
1019
		SET @Result = '1';
1020
END
1021
COMMIT TRANSACTION;
1022
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1023
BEGIN
1024
	SELECT @Result AS Result,
1025
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1026
       '' ErrorDesc;
1027
		RETURN '0';
1028
END
1029
ELSE
1030
BEGIN
1031
	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
1032
	RETURN '4'
1033
END
1034
ABORT:
1035
BEGIN
1036

    
1037
    ROLLBACK TRANSACTION;
1038
    SELECT '-1' AS Result,
1039
           '' ROLE_NOTIFI,
1040
           '' ErrorDesc;
1041
    RETURN '-1';
1042
END;
1043

    
1044

    
1045

    
1046

    
1047

    
1048