Project

General

Profile

FILE 4.txt

Truong Nguyen Vu, 09/14/2020 09:40 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
		DELETE FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@p_REQ_ID
215
INSERT	 dbo.PL_TRADEDETAIL_HIST
216
(
217
    TRADE_ID,PLAN_ID,GOODS_ID,GOODS_CODE,GOODS_NAME,GOODS_TYPE,UNIT_ID,M1,M2,M3,M4,M5,M6,M7,M8,AMT_ETM,AMT_EXE,AMT_APP,QUANTITY_ETM,QUANTITY,QUANTITY_EXE,PRICE,START_DT_AMORT,MONTH_AMORT,END_DT_AMORT,RATE_AMORT, NOTES,RECORD_STATUS,MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,M9, M10, M11,M12,AMT_TF,AMT_RECEIVE_TF, REQ_ID
218
)
219
SELECT TRADE_ID,PLAN_ID,GOODS_ID,GOODS_CODE,GOODS_NAME,GOODS_TYPE,UNIT_ID,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,QUANTITY,QUANTITY_EXE,PRICE,START_DT_AMORT,MONTH_AMORT,END_DT_AMORT,RATE_AMORT,NOTES,RECORD_STATUS,MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,QUANTITY_ETM,
220
AMT_APP,AMT_EXE,AMT_ETM,AMT_TF,AMT_RECEIVE_TF,@p_REQ_ID	FROM dbo.PL_TRADEDETAIL WHERE (TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
221

    
222
		
223
		
224

    
225
		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 <>''))
226
		BEGIN
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

    
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

    
271
		IF (EXISTS
272
		(
273
			SELECT REQ_COST_ID
274
			FROM dbo.PL_REQUEST_COSTCENTER
275
			WHERE REQ_ID = @p_REQ_ID
276
		)
277
		   )
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

    
329

    
330
			
331
				END
332

    
333
				FETCH NEXT FROM lstCostCenter
334
				INTO @COST_ID;
335
			END;
336
			CLOSE lstCostCenter;
337
			DEALLOCATE lstCostCenter;
338
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
339
				SET @STEP_PARENT = 'DVCM';
340
		END;
341
		SET @TOTAL_AMT =
342
		(
343
			SELECT SUM(TOTAL_AMT) AS TOTAL_AMT
344
			FROM dbo.PL_REQUEST_DOC_DT
345
			WHERE REQ_ID = @p_REQ_ID
346
		);
347
			IF (EXISTS
348
			(
349
				SELECT REQ_TRANSFER_ID
350
				FROM dbo.PL_REQUEST_TRANSFER
351
				WHERE REQ_DOC_ID = @p_REQ_ID
352
			)
353
			   )
354
			BEGIN
355

    
356

    
357
			IF (EXISTS
358
			(
359
				SELECT FR_BRN_ID
360
				FROM dbo.PL_REQUEST_TRANSFER
361
				WHERE REQ_DOC_ID = @p_REQ_ID
362
					  AND
363
					  (
364
						  FR_BRN_ID <> @BRANCH_CREATE
365
						  OR FR_DEP_ID <> @DEP_CREATE
366
					  )
367
			)
368
			   )
369
			BEGIN
370
				DECLARE lstTransfer CURSOR FOR
371
				SELECT FR_BRN_ID,
372
					   FR_DEP_ID
373
				FROM dbo.PL_REQUEST_TRANSFER
374
				WHERE REQ_DOC_ID = @p_REQ_ID
375
					  AND
376
					  (
377
						  FR_BRN_ID <> @BRANCH_CREATE
378
						  OR FR_DEP_ID <> @DEP_CREATE
379
					  )
380
				GROUP BY FR_BRN_ID,
381
						 FR_DEP_ID;
382
				OPEN lstTransfer;
383
				FETCH NEXT FROM lstTransfer
384
				INTO @FR_BRANCH_ID,
385
					 @FR_DEP_ID;
386
				WHILE @@FETCH_STATUS = 0
387
				BEGIN
388
					INSERT INTO dbo.PL_REQUEST_PROCESS
389
					(
390
						REQ_ID,
391
						PROCESS_ID,
392
						STATUS,
393
						ROLE_USER,
394
						BRANCH_ID,
395
						CHECKER_ID,
396
						APPROVE_DT,
397
						PARENT_PROCESS_ID,
398
						IS_LEAF,
399
						COST_ID,
400
						DVDM_ID,
401
						NOTES,
402
						IS_HAS_CHILD,
403
						DEP_ID
404
					)
405
					VALUES
406
					(   @p_REQ_ID,     -- REQ_ID - varchar(15)
407
						'DVDC',        -- PROCESS_ID - varchar(10)
408
						'U',           -- STATUS - varchar(5)
409
						'GDDV',        -- ROLE_USER - varchar(50)
410
						@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
411
						'',            -- CHECKER_ID - varchar(15)
412
						NULL,          -- APPROVE_DT - datetime
413
						@STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
414
						'N',           -- IS_LEAF - varchar(1)
415
						'',            -- COST_ID - varchar(15)
416
						'',            -- DVDM_ID - varchar(15)
417
						N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID);
418
					FETCH NEXT FROM lstTransfer
419
					INTO @FR_BRANCH_ID,
420
						 @FR_DEP_ID;
421
				END;
422
				CLOSE lstTransfer;
423
				DEALLOCATE lstTransfer;
424
				SET @STEP_PARENT = 'DVDC';
425
			END;
426

    
427
			-- Đầu mối nhận
428
			DECLARE lstTransfer CURSOR FOR
429
			SELECT TO_DVDM_ID
430
			FROM dbo.PL_REQUEST_TRANSFER
431
			WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>''
432
			GROUP BY TO_DVDM_ID;
433
			OPEN lstTransfer;
434
			FETCH NEXT FROM lstTransfer
435
			INTO @DVDM_ID;
436
			WHILE @@FETCH_STATUS = 0
437
			BEGIN
438
				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
439
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
440
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
441
		
442
				BEGIN
443
				INSERT INTO dbo.PL_REQUEST_PROCESS
444
				(
445
					REQ_ID,
446
					PROCESS_ID,
447
					STATUS,
448
					ROLE_USER,
449
					BRANCH_ID,
450
					CHECKER_ID,
451
					APPROVE_DT,
452
					PARENT_PROCESS_ID,
453
					IS_LEAF,
454
					COST_ID,
455
					DVDM_ID,
456
					NOTES,
457
					IS_HAS_CHILD
458
				)
459
				VALUES
460
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
461
					'DVDM_DC',    -- PROCESS_ID - varchar(10)
462
					'U',          -- STATUS - varchar(5)
463
					'GDDV',       -- ROLE_USER - varchar(50)
464
					'',           -- BRANCH_ID - varchar(15)
465
					'',           -- CHECKER_ID - varchar(15)
466
					NULL,         -- APPROVE_DT - datetime
467
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
468
					'N',          -- IS_LEAF - varchar(1)
469
					'',           -- COST_ID - varchar(15)
470
					@DVDM_ID,     -- DVDM_ID - varchar(15)
471
					N'Chờ đơn vị đầu mối xác nhận', 0);
472
				END
473
				FETCH NEXT FROM lstTransfer
474
				INTO @DVDM_ID;
475
			END;
476
			CLOSE lstTransfer;
477
			DEALLOCATE lstTransfer;
478

    
479

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

    
552

    
553

    
554

    
555
			   IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
556
					SET @STEP_PARENT='DVDM_DC'
557

    
558

    
559
			END;
560

    
561

    
562

    
563
			INSERT INTO dbo.PL_REQUEST_PROCESS
564
			(
565
				REQ_ID,
566
				PROCESS_ID,
567
				STATUS,
568
				ROLE_USER,
569
				BRANCH_ID,
570
				CHECKER_ID,
571
				APPROVE_DT,
572
				PARENT_PROCESS_ID,
573
				IS_LEAF,
574
				COST_ID,
575
				DVDM_ID,
576
				NOTES,IS_HAS_CHILD
577
			)
578
			VALUES
579
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
580
				'TC',         -- PROCESS_ID - varchar(10)
581
				'U',          -- STATUS - varchar(5)
582
				'TC',         -- ROLE_USER - varchar(50)
583
				'',           -- BRANCH_ID - varchar(15)
584
				'',           -- CHECKER_ID - varchar(15)
585
				NULL,         -- APPROVE_DT - datetime
586
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
587
				'N',          -- IS_LEAF - varchar(1)
588
				'',           -- COST_ID - varchar(15)
589
				'',           -- DVDM_ID - varchar(15)
590
				N'Chờ đơn vị Tài chính xác nhận',1);
591
			SET @STEP_PARENT = 'TC';
592

    
593

    
594
			IF (NOT EXISTS
595
			(
596
				SELECT REQ_TRANSFER_ID
597
				FROM dbo.PL_REQUEST_TRANSFER
598
				WHERE REQ_DOC_ID = @p_REQ_ID
599
					  AND
600
					  (
601
						  FR_BRN_ID <> @BRANCH_CREATE
602
						  OR FR_DEP_ID <> @DEP_CREATE
603
					  )
604
			)
605
			   )
606
			BEGIN
607
				---Duyệt DC
608
				IF (
609
				   (
610
					   SELECT COUNT(T.FR_KHOI_ID) AS COUNT_ROW
611
					   FROM
612
					   (
613
						   SELECT FR_KHOI_ID
614
						   FROM dbo.PL_REQUEST_TRANSFER
615
						   WHERE REQ_DOC_ID = @p_REQ_ID
616
						   GROUP BY FR_KHOI_ID
617
					   ) T
618
				   ) > 1
619
				   )
620
				BEGIN
621
					INSERT INTO dbo.PL_REQUEST_PROCESS
622
					(
623
						REQ_ID,
624
						PROCESS_ID,
625
						STATUS,
626
						ROLE_USER,
627
						BRANCH_ID,
628
						CHECKER_ID,
629
						APPROVE_DT,
630
						PARENT_PROCESS_ID,
631
						IS_LEAF,
632
						COST_ID,
633
						DVDM_ID,
634
						NOTES,
635
						IS_HAS_CHILD
636
					)
637
					VALUES
638
					(   @p_REQ_ID,                      -- REQ_ID - varchar(15)
639
						'TGD_DC',                       -- PROCESS_ID - varchar(10)
640
						'U',                            -- STATUS - varchar(5)
641
						'TGD',                          -- ROLE_USER - varchar(50)
642
						'',                             -- BRANCH_ID - varchar(15)
643
						'',                             -- CHECKER_ID - varchar(15)
644
						NULL,                           -- APPROVE_DT - datetime
645
						@STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
646
						'',                             -- IS_LEAF - varchar(1)
647
						'',                             -- COST_ID - varchar(15)
648
						'',                             -- DVDM_ID - varchar(15)
649
						N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
650
						NULL                            -- IS_HAS_CHILD - bit
651
						);
652
					SET @STEP_PARENT = 'TGD_DC';
653
				END;
654
				ELSE
655
				BEGIN
656
					DECLARE @LIMTT_MAX DECIMAL(18, 2),
657
							@LIMIT_APP DECIMAL(18, 2),
658
							@KHOI_ID_TF VARCHAR(20);
659
					SET @KHOI_ID_TF =
660
					(
661
						SELECT TOP 1
662
							   FR_KHOI_ID
663
						FROM dbo.PL_REQUEST_TRANSFER
664
						WHERE REQ_DOC_ID = @p_REQ_ID
665
					);
666

    
667
					IF(@KHOI_ID_TF IS NOT NULL AND @KHOI_ID_TF<>'')
668
					BEGIN
669
					SET @LIMIT_APP =
670
					(
671
						SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP
672
						FROM dbo.LIMIT_ACCUMULATE
673
						WHERE ROLE_ID = 'GDK'
674
							  AND DVDM_ID = @KHOI_ID_TF
675
					);
676
					SET @TOTAL_TRANSFER =
677
					(
678
						SELECT SUM(TOTAL_AMT) AS TOTAL
679
						FROM dbo.PL_REQUEST_TRANSFER
680
						WHERE REQ_DOC_ID = @p_REQ_ID
681
					);
682
					SET @LIMTT_MAX =
683
					(
684
						SELECT LIMIT_VALUE
685
						FROM dbo.TL_SYSROLE_LIMIT
686
						WHERE ROLE_ID = 'GDK'
687
							  AND LIMIT_TYPE = 'DCNS'
688
					);
689

    
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,
704
						IS_HAS_CHILD
705
					)
706
					VALUES
707
					(   @p_REQ_ID,                     -- REQ_ID - varchar(15)
708
						'GDK_DC',                      -- PROCESS_ID - varchar(10)
709
						'U',                           -- STATUS - varchar(5)
710
						'GDK',                         -- ROLE_USER - varchar(50)
711
						'',                            -- BRANCH_ID - varchar(15)
712
						'',                            -- CHECKER_ID - varchar(15)
713
						GETDATE(),                     -- APPROVE_DT - datetime
714
						@STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
715
						'N',                           -- IS_LEAF - varchar(1)
716
						'',                            -- COST_ID - varchar(15)
717
						@KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
718
						N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
719
						NULL                           -- IS_HAS_CHILD - bit
720
						);
721
					SET @STEP_PARENT = 'GDK_DC';
722

    
723
					UPDATE dbo.PL_REQUEST_PROCESS SET ROLE_USER='PTGD' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_DC' 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)
724

    
725

    
726
					IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
727
					BEGIN
728
					IF(EXISTS(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=1))
729
					BEGIN
730
						IF(NOT EXISTS (SELECT DVDM_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF))
731
						BEGIN
732
						INSERT INTO dbo.PL_REQUEST_PROCESS
733
						(
734
							REQ_ID,
735
							PROCESS_ID,
736
							STATUS,
737
							ROLE_USER,
738
							BRANCH_ID,
739
							CHECKER_ID,
740
							APPROVE_DT,
741
							PARENT_PROCESS_ID,
742
							IS_LEAF,
743
							COST_ID,
744
							DVDM_ID,
745
							NOTES,
746
							IS_HAS_CHILD
747
						)
748
						VALUES
749
						(   @p_REQ_ID,                     -- REQ_ID - varchar(15)
750
							'PTGD_DC',                     -- PROCESS_ID - varchar(10)
751
							'U',                           -- STATUS - varchar(5)
752
							'PTGD',                        -- ROLE_USER - varchar(50)
753
							'',                            -- BRANCH_ID - varchar(15)
754
							'',                            -- CHECKER_ID - varchar(15)
755
							GETDATE(),                     -- APPROVE_DT - datetime
756
							@STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
757
							'N',                           -- IS_LEAF - varchar(1)
758
							'',                            -- COST_ID - varchar(15)
759
							@KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
760
							N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
761
							NULL                           -- IS_HAS_CHILD - bit
762
							);
763
						SET @STEP_PARENT = 'PTGD_DC';
764
						END
765
						SET @LIMTT_MAX =
766
						(
767
							SELECT LIMIT_VALUE
768
							FROM dbo.TL_SYSROLE_LIMIT
769
							WHERE ROLE_ID = 'PTGD'
770
								  AND LIMIT_TYPE = 'DCNS'
771
						);
772
						SET @LIMIT_APP =
773
						(
774
							SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP
775
							FROM dbo.LIMIT_ACCUMULATE
776
							WHERE ROLE_ID = 'PTGD'
777
								  AND DVDM_ID = @KHOI_ID_TF
778
						);
779

    
780
					END
781
						IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP OR EXISTS(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=0))
782
						BEGIN
783
							INSERT INTO dbo.PL_REQUEST_PROCESS
784
							(
785
								REQ_ID,
786
								PROCESS_ID,
787
								STATUS,
788
								ROLE_USER,
789
								BRANCH_ID,
790
								CHECKER_ID,
791
								APPROVE_DT,
792
								PARENT_PROCESS_ID,
793
								IS_LEAF,
794
								COST_ID,
795
								DVDM_ID,
796
								NOTES,
797
								IS_HAS_CHILD
798
							)
799
							VALUES
800
							(   @p_REQ_ID,                      -- REQ_ID - varchar(15)
801
								'TGD_DC',                       -- PROCESS_ID - varchar(10)
802
								'U',                            -- STATUS - varchar(5)
803
								'TGD',                          -- ROLE_USER - varchar(50)
804
								'',                             -- BRANCH_ID - varchar(15)
805
								'',                             -- CHECKER_ID - varchar(15)
806
								NULL,                           -- APPROVE_DT - datetime
807
								@STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
808
								'',                             -- IS_LEAF - varchar(1)
809
								'',                             -- COST_ID - varchar(15)
810
								'',                             -- DVDM_ID - varchar(15)
811
								N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
812
								NULL                            -- IS_HAS_CHILD - bit
813
								);
814
							SET @STEP_PARENT = 'TGD_DC';
815
						END;
816

    
817
					END;
818

    
819
					END
820

    
821

    
822
				END;
823
				----
824
				IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID LIKE '%_DC'))
825
				BEGIN
826
							DECLARE  @DVDM_ID_TT VARCHAR(20)
827
						--	UPDATE dbo.LIMIT_ACCUMULATE SET TOTAL_APP_AMT = ISNULL(TOTAL_APP_AMT,0) + @TOTAL_TRANSFER WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF
828
						   -- INSERT PL_TRADE_DETAIL
829
						   
830
							DECLARE @l_TRADE_ID VARCHAR(15)
831
							EXEC SYS_CodeMasters_Gen 'PL_TRADEDETAIL', @l_TRADE_ID out
832
							IF @l_TRADE_ID ='' OR @l_TRADE_ID IS NULL GOTO ABORT
833
				
834
							INSERT INTO PL_TRADEDETAIL
835
							(
836
								[TRADE_ID],
837
								[PLAN_ID],
838
								[GOODS_ID],
839
								[GOODS_NAME],
840
								[GOODS_TYPE],
841
								[UNIT_ID],
842
								M1,
843
								M2,
844
								M3,
845
								M4,
846
								M5,
847
								M6,
848
								M7,
849
								M8,
850
								M9,
851
								M10,
852
								M11,
853
								M12,
854
								[QUANTITY],
855
								[QUANTITY_EXE],
856
								[PRICE],
857
								[START_DT_AMORT],
858
								[MONTH_AMORT],
859
								[END_DT_AMORT],
860
								[RATE_AMORT],
861
								[NOTES],
862
								[RECORD_STATUS],
863
								[MAKER_ID],
864
								[CREATE_DT],
865
								[AUTH_STATUS],
866
								[CHECKER_ID],
867
								[APPROVE_DT],AMT_RECEIVE_TF
868
							)
869
							VALUES
870
							(
871
								@l_TRADE_ID,
872
								NULL,
873
								NULL,
874
								NULL,
875
								NULL,
876
								NULL,
877
								NULL,
878
								NULL,
879
								NULL,
880
								NULL,
881
								NULL,
882
								NULL,
883
								NULL,
884
								NULL,
885
								NULL,
886
								NULL,
887
								NULL,
888
								NULL,
889
								NULL,
890
								0,
891
								0,
892
								NULL,
893
								NULL,
894
								NULL,
895
								0,
896
								'',
897
								'1', 'admin' ,GETDATE() ,'A' ,'admin' ,GETDATE(),0
898
							)
899
						   ---
900
							BEGIN
901
									IF(@BRANCH_CREATE_TYPE='PGD')
902
									BEGIN
903
	
904
										
905
										SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
906
										IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND BRANCH_ID=@BRANCH_PARENT AND (DEP_ID IS NULL OR DEP_ID='')))
907
										BEGIN
908
											INSERT INTO dbo.PL_REQUEST_PROCESS
909
											(
910
											REQ_ID,
911
											PROCESS_ID,
912
											STATUS,
913
											ROLE_USER,
914
											BRANCH_ID,
915
											DEP_ID,
916
											CHECKER_ID,
917
											APPROVE_DT,
918
											PARENT_PROCESS_ID,
919
											IS_LEAF,
920
											NOTES
921
											)
922
											VALUES
923
											(   
924
											@p_REQ_ID,               -- REQ_ID - varchar(15)
925
											'DVC',                  -- PROCESS_ID - varchar(10)
926
											'U',                     -- STATUS - varchar(5)
927
											'GDDV',                      -- ROLE_USER - varchar(50)
928
											@BRANCH_PARENT,
929
											NULL,                      -- BRANCH_ID - varchar(15)
930
											NULL,           -- CHECKER_ID - varchar(15)
931
											NULL , -- APPROVE_DT - datetime
932
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
933

    
934
											--SET @STEP_CURR = 'DVC';
935
											SET @STEP_PARENT = 'DVC';
936
										END
937
	
938
									END
939
									ELSE 
940
									IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
941
									AND ((
942
										BRANCH_ID=@BRANCH_CREATE 
943
										AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
944
										AND (DEP_ID IS NULL OR DEP_ID='')))
945
										)
946
											OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
947
											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)
948
											)
949
									))
950
									BEGIN
951
									INSERT INTO dbo.PL_REQUEST_PROCESS
952
											(
953
											REQ_ID,
954
											PROCESS_ID,
955
											STATUS,
956
											ROLE_USER,
957
											BRANCH_ID,
958
											DEP_ID,
959
											CHECKER_ID,
960
											APPROVE_DT,
961
											PARENT_PROCESS_ID,
962
											IS_LEAF,
963
											NOTES
964
											)
965
											VALUES
966
											(   
967
											@p_REQ_ID,               -- REQ_ID - varchar(15)
968
											'DVC',                  -- PROCESS_ID - varchar(10)
969
											'U',                     -- STATUS - varchar(5)
970
											'GDDV',                      -- ROLE_USER - varchar(50)
971
											@BRANCH_CREATE,
972
											@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
973
											NULL,           -- CHECKER_ID - varchar(15)
974
											NULL , -- APPROVE_DT - datetime
975
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
976

    
977
									--SET @STEP_CURR = 'DVC';
978
									SET @STEP_PARENT = 'DVC';
979
									END
980

    
981

    
982

    
983

    
984
								
985
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))
986
								SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
987
								SET @TOTAL_AMT = (SELECT TOTAL_AMT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
988
								IF((@IS_NEXT=1 OR @IS_NEXT_CDT=1 )AND NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
989
								BEGIN
990
								IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>'') OR @IS_NEXT_CDT=1)
991
								BEGIN
992
								DECLARE lstCostCenter CURSOR FOR
993
								SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>''  AND NOT EXISTS(
994
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='GDK'
995
								)
996
								GROUP BY KHOI_ID
997
										 OPEN lstCostCenter
998
		 						FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
999
								WHILE @@FETCH_STATUS = 0 
1000
								BEGIN 
1001
									INSERT INTO dbo.PL_REQUEST_PROCESS
1002
									(
1003
										REQ_ID,
1004
										PROCESS_ID,
1005
										STATUS,
1006
										ROLE_USER,
1007
										BRANCH_ID,
1008
										CHECKER_ID,
1009
										APPROVE_DT,
1010
										PARENT_PROCESS_ID,
1011
										IS_LEAF,
1012
										COST_ID,
1013
										DVDM_ID,
1014
										NOTES,IS_HAS_CHILD
1015
									)
1016
									VALUES
1017
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1018
										'GDK_TT',        -- PROCESS_ID - varchar(10)
1019
										'U',        -- STATUS - varchar(5)
1020
										'GDK',        -- ROLE_USER - varchar(50)
1021
										'',        -- BRANCH_ID - varchar(15)
1022
										'',        -- CHECKER_ID - varchar(15)
1023
										NULL, -- APPROVE_DT - datetime
1024
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1025
										'N',        -- IS_LEAF - varchar(1)
1026
										'',        -- COST_ID - varchar(15)
1027
										@DVDM_ID_TT ,
1028
										N'Chờ giám đốc khối xác nhận',
1029
										0        -- DVDM_ID - varchar(15)
1030
									  )
1031
									  SET @STEP_PARENT='GDK_TT'	
1032
								FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
1033
								END
1034
								CLOSE lstCostCenter
1035
								DEALLOCATE lstCostCenter
1036
		
1037

    
1038
								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))
1039
								BEGIN
1040
									INSERT INTO dbo.PL_REQUEST_PROCESS
1041
									(
1042
										REQ_ID,
1043
										PROCESS_ID,
1044
										STATUS,
1045
										ROLE_USER,
1046
										BRANCH_ID,
1047
										CHECKER_ID,
1048
										APPROVE_DT,
1049
										PARENT_PROCESS_ID,
1050
										IS_LEAF,
1051
										COST_ID,
1052
										DVDM_ID,
1053
										NOTES,IS_HAS_CHILD
1054
									)
1055
									VALUES
1056
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1057
										'GDK_TT',        -- PROCESS_ID - varchar(10)
1058
										'U',        -- STATUS - varchar(5)
1059
										'GDK',        -- ROLE_USER - varchar(50)
1060
										'',        -- BRANCH_ID - varchar(15)
1061
										'',        -- CHECKER_ID - varchar(15)
1062
										NULL, -- APPROVE_DT - datetime
1063
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1064
										'N',        -- IS_LEAF - varchar(1)
1065
										'',        -- COST_ID - varchar(15)
1066
										@DVDM_CDT ,
1067
										N'Chờ giám đốc khối xác nhận',
1068
										0        -- DVDM_ID - varchar(15)
1069
									  )
1070
									  SET @STEP_PARENT='GDK_TT'	
1071
								END
1072
								
1073
								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)
1074
								
1075

    
1076
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))
1077
								SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
1078
								
1079
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
1080
								BEGIN
1081
								IF(EXISTS(SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT DT
1082
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>'' AND DM.IS_PTGD=1 AND NOT EXISTS(
1083
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'
1084
								) ) OR @IS_NEXT_CDT=1)
1085
									BEGIN
1086
									DECLARE lstCostCenter CURSOR FOR
1087
									SELECT KHOI_ID  FROM dbo.PL_REQUEST_DOC_DT DT
1088
									LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=1 AND NOT EXISTS(
1089
										SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'
1090
									)
1091
									GROUP BY KHOI_ID
1092
									OPEN lstCostCenter
1093
		 							FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
1094
									WHILE @@FETCH_STATUS = 0 
1095
									BEGIN 
1096
										INSERT INTO dbo.PL_REQUEST_PROCESS
1097
										(
1098
											REQ_ID,
1099
											PROCESS_ID,
1100
											STATUS,
1101
											ROLE_USER,
1102
											BRANCH_ID,
1103
											CHECKER_ID,
1104
											APPROVE_DT,
1105
											PARENT_PROCESS_ID,
1106
											IS_LEAF,
1107
											COST_ID,
1108
											DVDM_ID,
1109
											NOTES,IS_HAS_CHILD
1110
										)
1111
										VALUES
1112
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1113
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1114
											'U',        -- STATUS - varchar(5)
1115
											'PTGD',        -- ROLE_USER - varchar(50)
1116
											'',        -- BRANCH_ID - varchar(15)
1117
											'',        -- CHECKER_ID - varchar(15)
1118
											NULL, -- APPROVE_DT - datetime
1119
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1120
											'N',        -- IS_LEAF - varchar(1)
1121
											'',        -- COST_ID - varchar(15)
1122
											@DVDM_ID_TT ,
1123
											N'Chờ phó tổng giám đốc khối xác nhận',
1124
											0        -- DVDM_ID - varchar(15)
1125
										  )	
1126
									  
1127
									SET @STEP_PARENT='PTGDK_TT'
1128
									FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
1129
									END
1130
									CLOSE lstCostCenter
1131
									DEALLOCATE lstCostCenter
1132
								
1133
										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))
1134
									BEGIN
1135
												INSERT INTO dbo.PL_REQUEST_PROCESS
1136
										(
1137
											REQ_ID,
1138
											PROCESS_ID,
1139
											STATUS,
1140
											ROLE_USER,
1141
											BRANCH_ID,
1142
											CHECKER_ID,
1143
											APPROVE_DT,
1144
											PARENT_PROCESS_ID,
1145
											IS_LEAF,
1146
											COST_ID,
1147
											DVDM_ID,
1148
											NOTES,IS_HAS_CHILD
1149
										)
1150
										VALUES
1151
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1152
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1153
											'U',        -- STATUS - varchar(5)
1154
											'PTGD',        -- ROLE_USER - varchar(50)
1155
											'',        -- BRANCH_ID - varchar(15)
1156
											'',        -- CHECKER_ID - varchar(15)
1157
											NULL, -- APPROVE_DT - datetime
1158
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1159
											'N',        -- IS_LEAF - varchar(1)
1160
											'',        -- COST_ID - varchar(15)
1161
											@DVDM_CDT ,
1162
											N'Chờ phó tổng giám đốc khối xác nhận',
1163
											0        -- DVDM_ID - varchar(15)
1164
										  )	
1165
									  
1166
									SET @STEP_PARENT='PTGDK_TT'	
1167
									END
1168

    
1169

    
1170
									SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))
1171
									SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1172
								END
1173
								IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_DOC_DT DT
1174
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=0 )  AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))=1)
1175
								BEGIN
1176
								SET @IS_NEXT=1
1177
								END
1178
								
1179

    
1180
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
1181
								BEGIN
1182
									 INSERT INTO dbo.PL_REQUEST_PROCESS
1183
									(
1184
										REQ_ID,
1185
										PROCESS_ID,
1186
										STATUS,
1187
										ROLE_USER,
1188
										BRANCH_ID,
1189
										CHECKER_ID,
1190
										APPROVE_DT,
1191
										PARENT_PROCESS_ID,
1192
										IS_LEAF,
1193
										COST_ID,
1194
										DVDM_ID,
1195
										NOTES,IS_HAS_CHILD
1196
									)
1197
									VALUES
1198
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1199
										'TGD',        -- PROCESS_ID - varchar(10)
1200
										'U',        -- STATUS - varchar(5)
1201
										'TGD',        -- ROLE_USER - varchar(50)
1202
										'',        -- BRANCH_ID - varchar(15)
1203
										'',        -- CHECKER_ID - varchar(15)
1204
										NULL, -- APPROVE_DT - datetime
1205
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1206
										'N',        -- IS_LEAF - varchar(1)
1207
										'',        -- COST_ID - varchar(15)
1208
										'' ,
1209
										N'Chờ tổng giám đốc xác nhận',
1210
										0        -- DVDM_ID - varchar(15)
1211
									  )
1212
									  SET @STEP_PARENT='TGD'	
1213
									  IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
1214
			BEGIN
1215
				
1216

    
1217
				INSERT INTO dbo.PL_REQUEST_PROCESS
1218
            (
1219
                REQ_ID,
1220
                PROCESS_ID,
1221
                STATUS,
1222
                ROLE_USER,
1223
                BRANCH_ID,
1224
                CHECKER_ID,
1225
                APPROVE_DT,
1226
                PARENT_PROCESS_ID,
1227
                IS_LEAF,
1228
                COST_ID,
1229
                DVDM_ID,
1230
                NOTES,
1231
                IS_HAS_CHILD
1232
            )
1233
            VALUES
1234
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1235
                'HDQT',                               -- PROCESS_ID - varchar(10)
1236
                'U',                                 -- STATUS - varchar(5)
1237
                'HDQT',                               -- ROLE_USER - varchar(50)
1238
                '',                                  -- BRANCH_ID - varchar(15)
1239
                '',                                  -- CHECKER_ID - varchar(15)
1240
                NULL,                                -- APPROVE_DT - datetime
1241
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1242
                'N',                                 -- IS_LEAF - varchar(1)
1243
                '',                                  -- COST_ID - varchar(15)
1244
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
1245
                );
1246
            SET @STEP_PARENT = 'HDQT';
1247
			END
1248
								END
1249
				
1250
						--ELSE
1251
						--BEGIN
1252
					
1253
						--END
1254
				END
1255
								END
1256
								END
1257
							END
1258

    
1259
							
1260
				END
1261
     
1262
			END;
1263

    
1264

    
1265

    
1266

    
1267
		END;
1268
		ELSE
1269
		BEGIN
1270
	
1271
		IF(@BRANCH_CREATE_TYPE='PGD')
1272
		BEGIN
1273
			
1274
			SET @BRANCH_PARENT=(SELECT TOP 1 FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
1275
			IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND BRANCH_ID=@BRANCH_PARENT AND (DEP_ID IS NULL OR DEP_ID='')))
1276
			BEGIN
1277
				INSERT INTO dbo.PL_REQUEST_PROCESS
1278
				(
1279
				REQ_ID,
1280
				PROCESS_ID,
1281
				STATUS,
1282
				ROLE_USER,
1283
				BRANCH_ID,
1284
				DEP_ID,
1285
				CHECKER_ID,
1286
				APPROVE_DT,
1287
				PARENT_PROCESS_ID,
1288
				IS_LEAF,
1289
				NOTES
1290
				)
1291
				VALUES
1292
				(   
1293
				@p_REQ_ID,               -- REQ_ID - varchar(15)
1294
				'DVC',                  -- PROCESS_ID - varchar(10)
1295
				'U',                     -- STATUS - varchar(5)
1296
				'GDDV',                      -- ROLE_USER - varchar(50)
1297
				@BRANCH_PARENT,
1298
				NULL,                      -- BRANCH_ID - varchar(15)
1299
				NULL,           -- CHECKER_ID - varchar(15)
1300
				NULL , -- APPROVE_DT - datetime
1301
				@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
1302

    
1303
				SET @STEP_CURR = 'DVC';
1304
				SET @STEP_PARENT = 'DVC';
1305
			END
1306
	
1307
		END
1308
		ELSE 
1309
		IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
1310
		AND ((
1311
			BRANCH_ID=@BRANCH_CREATE 
1312
			AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
1313
			AND (DEP_ID IS NULL OR DEP_ID='')))
1314
			)
1315
			OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
1316
			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)
1317
			)
1318
		))
1319
		BEGIN
1320
		INSERT INTO dbo.PL_REQUEST_PROCESS
1321
				(
1322
				REQ_ID,
1323
				PROCESS_ID,
1324
				STATUS,
1325
				ROLE_USER,
1326
				BRANCH_ID,
1327
				DEP_ID,
1328
				CHECKER_ID,
1329
				APPROVE_DT,
1330
				PARENT_PROCESS_ID,
1331
				IS_LEAF,
1332
				NOTES
1333
				)
1334
				VALUES
1335
				(   
1336
				@p_REQ_ID,               -- REQ_ID - varchar(15)
1337
				'DVC',                  -- PROCESS_ID - varchar(10)
1338
				'U',                     -- STATUS - varchar(5)
1339
				'GDDV',                      -- ROLE_USER - varchar(50)
1340
				@BRANCH_CREATE,
1341
				@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
1342
				NULL,           -- CHECKER_ID - varchar(15)
1343
				NULL , -- APPROVE_DT - datetime
1344
				@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
1345

    
1346
		SET @STEP_CURR = 'DVC';
1347
		SET @STEP_PARENT = 'DVC';
1348
		END
1349
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
1350
		IF(EXISTS( SELECT * FROM   @DATA_DVDM) OR @IS_NEXT_CDT=1)
1351
		BEGIN
1352
		SET @IS_NEXT =
1353
		(
1354
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
1355
		);
1356

    
1357

    
1358

    
1359
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1360
		BEGIN
1361

    
1362
			DECLARE lstCostCenter CURSOR FOR
1363
			SELECT DVDM_ID,
1364
				   TOTAL_AMT
1365
			FROM @DATA_DVDM;
1366
			OPEN lstCostCenter;
1367
			FETCH NEXT FROM lstCostCenter
1368
			INTO @DVDM_ID,
1369
				 @TOTAL_AMT_GD;
1370
			WHILE @@FETCH_STATUS = 0
1371
			BEGIN
1372
				INSERT INTO dbo.PL_REQUEST_PROCESS
1373
				(
1374
					REQ_ID,
1375
					PROCESS_ID,
1376
					STATUS,
1377
					ROLE_USER,
1378
					BRANCH_ID,
1379
					CHECKER_ID,
1380
					APPROVE_DT,
1381
					PARENT_PROCESS_ID,
1382
					IS_LEAF,
1383
					COST_ID,
1384
					DVDM_ID,
1385
					NOTES,
1386
					IS_HAS_CHILD
1387
				)
1388
				VALUES
1389
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
1390
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
1391
					'U',                                       -- STATUS - varchar(5)
1392
					'GDK',                                     -- ROLE_USER - varchar(50)
1393
					'',                                        -- BRANCH_ID - varchar(15)
1394
					'',                                        -- CHECKER_ID - varchar(15)
1395
					NULL,                                      -- APPROVE_DT - datetime
1396
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
1397
					'N',                                       -- IS_LEAF - varchar(1)
1398
					'',                                        -- COST_ID - varchar(15)
1399
					@DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
1400
					);
1401
				FETCH NEXT FROM lstCostCenter
1402
				INTO @DVDM_ID,
1403
					 @TOTAL_AMT_GD;
1404
			END;
1405
			CLOSE lstCostCenter;
1406
			DEALLOCATE lstCostCenter;
1407

    
1408
			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))
1409
			BEGIN
1410
				INSERT INTO dbo.PL_REQUEST_PROCESS
1411
				(
1412
					REQ_ID,
1413
					PROCESS_ID,
1414
					STATUS,
1415
					ROLE_USER,
1416
					BRANCH_ID,
1417
					CHECKER_ID,
1418
					APPROVE_DT,
1419
					PARENT_PROCESS_ID,
1420
					IS_LEAF,
1421
					COST_ID,
1422
					DVDM_ID,
1423
					NOTES,IS_HAS_CHILD
1424
				)
1425
				VALUES
1426
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1427
					'GDK_TT',        -- PROCESS_ID - varchar(10)
1428
					'U',        -- STATUS - varchar(5)
1429
					'GDK',        -- ROLE_USER - varchar(50)
1430
					'',        -- BRANCH_ID - varchar(15)
1431
					'',        -- CHECKER_ID - varchar(15)
1432
					NULL, -- APPROVE_DT - datetime
1433
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1434
					'N',        -- IS_LEAF - varchar(1)
1435
					'',        -- COST_ID - varchar(15)
1436
					@DVDM_CDT ,
1437
					N'Chờ giám đốc khối xác nhận',
1438
					0        -- DVDM_ID - varchar(15)
1439
					)
1440
									
1441
			END
1442

    
1443
			SET @IS_NEXT =
1444
			(
1445
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
1446
			);
1447

    
1448
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
1449

    
1450
			SET @STEP_PARENT = 'GDK_TT';
1451

    
1452
				
1453
			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)
1454

    
1455
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
1456
			BEGIN
1457

    
1458
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
1459
				BEGIN
1460
				DECLARE lstCostCenter CURSOR FOR
1461
				SELECT DVDM_ID,
1462
					   TOTAL_AMT
1463
				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) ;
1464
				OPEN lstCostCenter;
1465
				FETCH NEXT FROM lstCostCenter
1466
				INTO @DVDM_ID,
1467
					 @TOTAL_AMT_GD;
1468
				WHILE @@FETCH_STATUS = 0
1469
				BEGIN
1470
					INSERT INTO dbo.PL_REQUEST_PROCESS
1471
					(
1472
						REQ_ID,
1473
						PROCESS_ID,
1474
						STATUS,
1475
						ROLE_USER,
1476
						BRANCH_ID,
1477
						CHECKER_ID,
1478
						APPROVE_DT,
1479
						PARENT_PROCESS_ID,
1480
						IS_LEAF,
1481
						COST_ID,
1482
						DVDM_ID,
1483
						NOTES,
1484
						IS_HAS_CHILD
1485
					)
1486
					VALUES
1487
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1488
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1489
						'U',                                                -- STATUS - varchar(5)
1490
						'PTGD',                                             -- ROLE_USER - varchar(50)
1491
						'',                                                 -- BRANCH_ID - varchar(15)
1492
						'',                                                 -- CHECKER_ID - varchar(15)
1493
						NULL,                                               -- APPROVE_DT - datetime
1494
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1495
						'N',                                                -- IS_LEAF - varchar(1)
1496
						'',                                                 -- COST_ID - varchar(15)
1497
						@DVDM_ID, N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
1498
						);
1499
					SET @STEP_PARENT = 'PTGDK_TT';
1500
					FETCH NEXT FROM lstCostCenter
1501
					INTO @DVDM_ID,
1502
						 @TOTAL_AMT_GD;
1503
				END;
1504
				CLOSE lstCostCenter;
1505
				DEALLOCATE lstCostCenter;
1506

    
1507
				SET @IS_NEXT =
1508
				(
1509
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1510
				);
1511

    
1512
				
1513
				END
1514

    
1515
				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))
1516
								BEGIN
1517
									INSERT INTO dbo.PL_REQUEST_PROCESS
1518
									(
1519
										REQ_ID,
1520
										PROCESS_ID,
1521
										STATUS,
1522
										ROLE_USER,
1523
										BRANCH_ID,
1524
										CHECKER_ID,
1525
										APPROVE_DT,
1526
										PARENT_PROCESS_ID,
1527
										IS_LEAF,
1528
										COST_ID,
1529
										DVDM_ID,
1530
										NOTES,IS_HAS_CHILD
1531
									)
1532
									VALUES
1533
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1534
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1535
										'U',        -- STATUS - varchar(5)
1536
										'PTGD',        -- ROLE_USER - varchar(50)
1537
										'',        -- BRANCH_ID - varchar(15)
1538
										'',        -- CHECKER_ID - varchar(15)
1539
										NULL, -- APPROVE_DT - datetime
1540
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1541
										'N',        -- IS_LEAF - varchar(1)
1542
										'',        -- COST_ID - varchar(15)
1543
										@DVDM_CDT ,
1544
										N'Chờ giám đốc khối xác nhận',
1545
										0        -- DVDM_ID - varchar(15)
1546
									  )
1547
									SET @STEP_PARENT = 'PTGDK_TT';
1548
								END
1549
	
1550
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1551
				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)
1552
				BEGIN
1553
				SET @IS_NEXT=1
1554
				END
1555
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1556
				BEGIN
1557
					INSERT INTO dbo.PL_REQUEST_PROCESS
1558
					(
1559
						REQ_ID,
1560
						PROCESS_ID,
1561
						STATUS,
1562
						ROLE_USER,
1563
						BRANCH_ID,
1564
						CHECKER_ID,
1565
						APPROVE_DT,
1566
						PARENT_PROCESS_ID,
1567
						IS_LEAF,
1568
						COST_ID,
1569
						DVDM_ID,
1570
						NOTES,
1571
						IS_HAS_CHILD
1572
					)
1573
					VALUES
1574
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1575
						'TGD',                               -- PROCESS_ID - varchar(10)
1576
						'U',                                 -- STATUS - varchar(5)
1577
						'TGD',                               -- ROLE_USER - varchar(50)
1578
						'',                                  -- BRANCH_ID - varchar(15)
1579
						'',                                  -- CHECKER_ID - varchar(15)
1580
						NULL,                                -- APPROVE_DT - datetime
1581
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1582
						'N',                                 -- IS_LEAF - varchar(1)
1583
						'',                                  -- COST_ID - varchar(15)
1584
						'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
1585
						);
1586
					SET @STEP_PARENT = 'TGD';
1587

    
1588
					IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
1589
					BEGIN
1590
						INSERT INTO dbo.PL_REQUEST_PROCESS
1591
					(
1592
						REQ_ID,
1593
						PROCESS_ID,
1594
						STATUS,
1595
						ROLE_USER,
1596
						BRANCH_ID,
1597
						CHECKER_ID,
1598
						APPROVE_DT,
1599
						PARENT_PROCESS_ID,
1600
						IS_LEAF,
1601
						COST_ID,
1602
						DVDM_ID,
1603
						NOTES,
1604
						IS_HAS_CHILD
1605
					)
1606
					VALUES
1607
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1608
						'HDQT',                               -- PROCESS_ID - varchar(10)
1609
						'U',                                 -- STATUS - varchar(5)
1610
						'HDQT',                               -- ROLE_USER - varchar(50)
1611
						'',                                  -- BRANCH_ID - varchar(15)
1612
						'',                                  -- CHECKER_ID - varchar(15)
1613
						NULL,                                -- APPROVE_DT - datetime
1614
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1615
						'N',                                 -- IS_LEAF - varchar(1)
1616
						'',                                  -- COST_ID - varchar(15)
1617
						'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
1618
						);
1619
					SET @STEP_PARENT = 'HDQT';
1620
					END
1621
				END;
1622

    
1623

    
1624

    
1625
	
1626
			--ELSE
1627
			--BEGIN
1628

    
1629
			--END
1630
		
1631
			END;
1632

    
1633
		END;
1634
		END
1635
		
1636

    
1637

    
1638
		END
1639
		
1640
		
1641
		END
1642
		
1643
		INSERT INTO dbo.PL_REQUEST_PROCESS
1644
		(
1645
			REQ_ID,
1646
			PROCESS_ID,
1647
			STATUS,
1648
			ROLE_USER,
1649
			BRANCH_ID,
1650
			CHECKER_ID,
1651
			APPROVE_DT,
1652
			PARENT_PROCESS_ID,
1653
			IS_LEAF,
1654
			NOTES
1655
		)
1656
		VALUES
1657
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1658
			'APPROVE', -- PROCESS_ID - varchar(10)
1659
			'U',       -- STATUS - varchar(5)
1660
			'',        -- ROLE_USER - varchar(50)
1661
			'',        -- BRANCH_ID - varchar(15)
1662
			'',        -- CHECKER_ID - varchar(15)
1663
			NULL,      -- APPROVE_DT - datetime
1664
			@STEP_PARENT, 'Y', N'Hoàn tất');
1665

    
1666

    
1667

    
1668
		IF @@Error <> 0
1669
			GOTO ABORT;
1670

    
1671

    
1672

    
1673
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1674
		SET @PROCESS_ID_CURR =
1675
		(
1676
			SELECT TOP 1
1677
				   PROCESS_ID
1678
			FROM dbo.PL_REQUEST_PROCESS
1679
			WHERE REQ_ID = @p_REQ_ID
1680
				  AND PARENT_PROCESS_ID = 'APPNEW'
1681
		);
1682

    
1683
		UPDATE dbo.PL_REQUEST_PROCESS
1684
		SET STATUS = 'C'
1685
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1686
			  AND REQ_ID = @p_REQ_ID;
1687
		UPDATE dbo.PL_REQUEST_DOC
1688
		SET AUTH_STATUS = @p_AUTH_STATUS,
1689
			APPROVE_DT = @p_APPROVE_DT,
1690
			CHECKER_ID = @p_CHECKER_ID,
1691
			PROCESS_ID = @PROCESS_ID_CURR
1692
		WHERE REQ_ID = @p_REQ_ID;
1693

    
1694
		UPDATE dbo.PL_REQUEST_DOC_DT
1695
		SET CHECKER_ID=@p_CHECKER_ID,
1696
		APPROVE_DT=@p_APPROVE_DT
1697
		WHERE REQ_ID = @p_REQ_ID;
1698

    
1699
		INSERT INTO dbo.PL_PROCESS
1700
		(
1701
			REQ_ID,
1702
			PROCESS_ID,
1703
			CHECKER_ID,
1704
			APPROVE_DT,
1705
			PROCESS_DESC,
1706
			NOTES
1707
		)
1708
		VALUES
1709
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1710
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1711
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1712
			@p_APPROVE_DT,                                        -- APPROVE_DT - datetime
1713
			@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)
1714
			);
1715
		IF (EXISTS
1716
		(
1717
			SELECT REQ_ID
1718
			FROM dbo.PL_REQUEST_DOC
1719
			WHERE REQ_ID = @p_REQ_ID
1720
				  AND PROCESS_ID = 'APPROVE'
1721
		)
1722
		   )
1723
		BEGIN
1724
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1725
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1726
			SET @Result = '0';
1727
		END;
1728
		SET @Result = '1';
1729
END
1730
COMMIT TRANSACTION;
1731
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1732
BEGIN
1733
	SELECT @Result AS Result,
1734
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1735
       '' ErrorDesc;
1736
		RETURN '0';
1737
END
1738
ELSE
1739
BEGIN
1740
	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
1741
	RETURN '4'
1742
END
1743
ABORT:
1744
BEGIN
1745

    
1746
    ROLLBACK TRANSACTION;
1747
    SELECT '-1' AS Result,
1748
           '' ROLE_NOTIFI,
1749
           '' ErrorDesc;
1750
    RETURN '-1';
1751
END;
1752

    
1753

    
1754

    
1755

    
1756

    
1757