Project

General

Profile

PL_APP.txt

Truong Nguyen Vu, 11/30/2020 10:48 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
		END
187
		INSERT INTO dbo.PL_REQUEST_PROCESS
188
		(
189
			REQ_ID,
190
			PROCESS_ID,
191
			STATUS,
192
			ROLE_USER,
193
			BRANCH_ID,
194
			DEP_ID,
195
			CHECKER_ID,
196
			APPROVE_DT,
197
			PARENT_PROCESS_ID,
198
			IS_LEAF,
199
			NOTES
200
		)
201
		VALUES
202
		(   @p_REQ_ID,               -- REQ_ID - varchar(15)
203
			'APPNEW',                  -- PROCESS_ID - varchar(10)
204
			'P',                     -- STATUS - varchar(5)
205
			'GDDV',                      -- ROLE_USER - varchar(50)
206
			@BRANCH_ID  ,
207
			@DEP_ID,                      -- BRANCH_ID - varchar(15)
208
			@p_CHECKER_ID,           -- CHECKER_ID - varchar(15)
209
			GETDATE() , -- APPROVE_DT - datetime
210
			NULL, 'N', N'Trưởng đơn vị phê duyệt');
211
		SET @STEP_CURR = 'APPNEW';
212
		SET @STEP_PARENT = 'APPNEW';
213

    
214

    
215
		
216
		
217
		-- Nếu khổng phải tờ trình có chọn căn cứ
218
		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 <>''))
219
		BEGIN
220

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

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

    
314
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
315
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
316
				END
317

    
318
				FETCH NEXT FROM lstCostCenter
319
				INTO @COST_ID;
320
			END;
321
			CLOSE lstCostCenter;
322
			DEALLOCATE lstCostCenter;
323
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
324
				SET @STEP_PARENT = 'DVCM';
325
		END;
326

    
327

    
328
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
329
		--Có điều chuyển NS
330
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
331
		BEGIN
332
				
333
			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)
334
					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)))	
335
			BEGIN
336

    
337
			DECLARE lstTransfer CURSOR FOR
338
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
339
					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
					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
342
												LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
343
												WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
344

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

    
393
		-- Đầu mối nhận
394
		DECLARE @LIMIT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2),@TOTAL_TRANFER DECIMAL(18,2)
395

    
396
		SET @LIMIT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='DCNS')
397
		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)
398
		SET @TOTAL_TRANFER=(SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
399

    
400
		IF(@TOTAL_TRANSFER > @LIMIT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
401
		BEGIN
402

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

    
454

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

    
529

    
530

    
531

    
532
			IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
533
				SET @STEP_PARENT='DVDM_DC'
534

    
535

    
536
		END;
537

    
538

    
539

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

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

    
612
		SET @STEP_CURR = 'DVC';
613
		SET @STEP_PARENT = 'DVC';
614
		END
615

    
616
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
617
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
618
		BEGIN
619
		SET @IS_NEXT =
620
		(
621
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
622
		);
623

    
624

    
625

    
626
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
627
		BEGIN
628

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

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

    
710
			SET @IS_NEXT =
711
			(
712
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
713
			);
714

    
715
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
716

    
717
			
718
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
719
			BEGIN
720
				SET @STEP_PARENT='GDK_TT'	
721
			END
722

    
723
				
724
			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)
725

    
726
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
727
			BEGIN
728

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

    
778
				SET @IS_NEXT =
779
				(
780
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
781
				);
782

    
783
				
784
				END
785

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

    
827
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
828
				BEGIN
829
				SET @STEP_PARENT='PTGDK_TT'	
830
				END
831

    
832

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

    
870

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

    
906

    
907

    
908
	
909
			--ELSE
910
			--BEGIN
911

    
912
			--END
913
		
914
			END;
915

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

    
944

    
945

    
946
		IF @@Error <> 0
947
			GOTO ABORT;
948

    
949

    
950

    
951
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
952
		SET @PROCESS_ID_CURR =
953
		(
954
			SELECT TOP 1
955
				   PROCESS_ID
956
			FROM dbo.PL_REQUEST_PROCESS
957
			WHERE REQ_ID = @p_REQ_ID
958
				  AND PARENT_PROCESS_ID = 'APPNEW'
959
		);
960

    
961
		UPDATE dbo.PL_REQUEST_PROCESS
962
		SET STATUS = 'C'
963
		WHERE PARENT_PROCESS_ID = 'APPNEW'
964
			  AND REQ_ID = @p_REQ_ID;
965
		UPDATE dbo.PL_REQUEST_DOC
966
		SET AUTH_STATUS = @p_AUTH_STATUS,
967
			APPROVE_DT = @p_APPROVE_DT,
968
			CHECKER_ID = @p_CHECKER_ID,
969
			PROCESS_ID = @PROCESS_ID_CURR
970
		WHERE REQ_ID = @p_REQ_ID;
971

    
972
		UPDATE dbo.PL_REQUEST_DOC_DT
973
		SET CHECKER_ID=@p_CHECKER_ID,
974
		APPROVE_DT=@p_APPROVE_DT
975
		WHERE REQ_ID = @p_REQ_ID;
976

    
977
		INSERT INTO dbo.PL_PROCESS
978
		(
979
			REQ_ID,
980
			PROCESS_ID,
981
			CHECKER_ID,
982
			APPROVE_DT,
983
			PROCESS_DESC,
984
			NOTES
985
		)
986
		VALUES
987
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
988
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
989
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
990
			@p_APPROVE_DT,                                        -- APPROVE_DT - datetime
991
			@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)
992
			);
993
		IF (EXISTS
994
		(
995
			SELECT REQ_ID
996
			FROM dbo.PL_REQUEST_DOC
997
			WHERE REQ_ID = @p_REQ_ID
998
				  AND PROCESS_ID = 'APPROVE'
999
		)
1000
		   )
1001
		BEGIN
1002
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1003
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1004
			SET @Result = '0';
1005
		END;
1006
		SET @Result = '1';
1007
END
1008
COMMIT TRANSACTION;
1009
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1010
BEGIN
1011
	SELECT @Result AS Result,
1012
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1013
       '' ErrorDesc;
1014
		RETURN '0';
1015
END
1016
ELSE
1017
BEGIN
1018
	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
1019
	RETURN '4'
1020
END
1021
ABORT:
1022
BEGIN
1023

    
1024
    ROLLBACK TRANSACTION;
1025
    SELECT '-1' AS Result,
1026
           '' ROLE_NOTIFI,
1027
           '' ErrorDesc;
1028
    RETURN '-1';
1029
END;
1030

    
1031

    
1032

    
1033

    
1034

    
1035