Project

General

Profile

FILE 5.txt

Truong Nguyen Vu, 09/25/2020 04:12 PM

 
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
									  
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
									  
1071
								END
1072

    
1073
								IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
1074
								BEGIN
1075
									SET @STEP_PARENT='GDK_TT'	
1076
								END
1077
								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)
1078
								
1079

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

    
1172

    
1173
									SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))
1174
									SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1175
								END
1176
								IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_DOC_DT DT
1177
								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)
1178
								BEGIN
1179
								SET @IS_NEXT=1
1180
								END
1181
								
1182
								IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1183
								BEGIN
1184
									SET @STEP_PARENT='PTGDK_TT'	
1185
								END
1186

    
1187
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
1188
								BEGIN
1189
									 INSERT INTO dbo.PL_REQUEST_PROCESS
1190
									(
1191
										REQ_ID,
1192
										PROCESS_ID,
1193
										STATUS,
1194
										ROLE_USER,
1195
										BRANCH_ID,
1196
										CHECKER_ID,
1197
										APPROVE_DT,
1198
										PARENT_PROCESS_ID,
1199
										IS_LEAF,
1200
										COST_ID,
1201
										DVDM_ID,
1202
										NOTES,IS_HAS_CHILD
1203
									)
1204
									VALUES
1205
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1206
										'TGD',        -- PROCESS_ID - varchar(10)
1207
										'U',        -- STATUS - varchar(5)
1208
										'TGD',        -- ROLE_USER - varchar(50)
1209
										'',        -- BRANCH_ID - varchar(15)
1210
										'',        -- CHECKER_ID - varchar(15)
1211
										NULL, -- APPROVE_DT - datetime
1212
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1213
										'N',        -- IS_LEAF - varchar(1)
1214
										'',        -- COST_ID - varchar(15)
1215
										'' ,
1216
										N'Chờ tổng giám đốc xác nhận',
1217
										0        -- DVDM_ID - varchar(15)
1218
									  )
1219
									  SET @STEP_PARENT='TGD'	
1220
									  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'))
1221
			BEGIN
1222
				
1223

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

    
1266
							
1267
				END
1268
     
1269
			END;
1270

    
1271

    
1272

    
1273

    
1274
		END;
1275
		ELSE
1276
		BEGIN
1277
	
1278
		IF(@BRANCH_CREATE_TYPE='PGD')
1279
		BEGIN
1280
			
1281
			SET @BRANCH_PARENT=(SELECT TOP 1 FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
1282
			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='')))
1283
			BEGIN
1284
				INSERT INTO dbo.PL_REQUEST_PROCESS
1285
				(
1286
				REQ_ID,
1287
				PROCESS_ID,
1288
				STATUS,
1289
				ROLE_USER,
1290
				BRANCH_ID,
1291
				DEP_ID,
1292
				CHECKER_ID,
1293
				APPROVE_DT,
1294
				PARENT_PROCESS_ID,
1295
				IS_LEAF,
1296
				NOTES
1297
				)
1298
				VALUES
1299
				(   
1300
				@p_REQ_ID,               -- REQ_ID - varchar(15)
1301
				'DVC',                  -- PROCESS_ID - varchar(10)
1302
				'U',                     -- STATUS - varchar(5)
1303
				'GDDV',                      -- ROLE_USER - varchar(50)
1304
				@BRANCH_PARENT,
1305
				NULL,                      -- BRANCH_ID - varchar(15)
1306
				NULL,           -- CHECKER_ID - varchar(15)
1307
				NULL , -- APPROVE_DT - datetime
1308
				@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
1309

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

    
1353
		SET @STEP_CURR = 'DVC';
1354
		SET @STEP_PARENT = 'DVC';
1355
		END
1356
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
1357
		IF(EXISTS( SELECT * FROM   @DATA_DVDM) OR @IS_NEXT_CDT=1)
1358
		BEGIN
1359
		SET @IS_NEXT =
1360
		(
1361
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
1362
		);
1363

    
1364

    
1365

    
1366
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1367
		BEGIN
1368

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

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

    
1450
			SET @IS_NEXT =
1451
			(
1452
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
1453
			);
1454

    
1455
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
1456

    
1457
			
1458
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
1459
			BEGIN
1460
				SET @STEP_PARENT='GDK_TT'	
1461
			END
1462

    
1463
				
1464
			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)
1465

    
1466
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
1467
			BEGIN
1468

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

    
1518
				SET @IS_NEXT =
1519
				(
1520
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1521
				);
1522

    
1523
				
1524
				END
1525

    
1526
				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))
1527
								BEGIN
1528
									INSERT INTO dbo.PL_REQUEST_PROCESS
1529
									(
1530
										REQ_ID,
1531
										PROCESS_ID,
1532
										STATUS,
1533
										ROLE_USER,
1534
										BRANCH_ID,
1535
										CHECKER_ID,
1536
										APPROVE_DT,
1537
										PARENT_PROCESS_ID,
1538
										IS_LEAF,
1539
										COST_ID,
1540
										DVDM_ID,
1541
										NOTES,IS_HAS_CHILD
1542
									)
1543
									VALUES
1544
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1545
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1546
										'U',        -- STATUS - varchar(5)
1547
										'PTGD',        -- ROLE_USER - varchar(50)
1548
										'',        -- BRANCH_ID - varchar(15)
1549
										'',        -- CHECKER_ID - varchar(15)
1550
										NULL, -- APPROVE_DT - datetime
1551
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1552
										'N',        -- IS_LEAF - varchar(1)
1553
										'',        -- COST_ID - varchar(15)
1554
										@DVDM_CDT ,
1555
										N'Chờ giám đốc khối xác nhận',
1556
										0        -- DVDM_ID - varchar(15)
1557
									  )
1558
									
1559
								END
1560
	
1561
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1562
				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)
1563
				BEGIN
1564
				SET @IS_NEXT=1
1565
				END
1566

    
1567
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1568
				BEGIN
1569
				SET @STEP_PARENT='PTGDK_TT'	
1570
				END
1571

    
1572

    
1573
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1574
				BEGIN
1575
					INSERT INTO dbo.PL_REQUEST_PROCESS
1576
					(
1577
						REQ_ID,
1578
						PROCESS_ID,
1579
						STATUS,
1580
						ROLE_USER,
1581
						BRANCH_ID,
1582
						CHECKER_ID,
1583
						APPROVE_DT,
1584
						PARENT_PROCESS_ID,
1585
						IS_LEAF,
1586
						COST_ID,
1587
						DVDM_ID,
1588
						NOTES,
1589
						IS_HAS_CHILD
1590
					)
1591
					VALUES
1592
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1593
						'TGD',                               -- PROCESS_ID - varchar(10)
1594
						'U',                                 -- STATUS - varchar(5)
1595
						'TGD',                               -- ROLE_USER - varchar(50)
1596
						'',                                  -- BRANCH_ID - varchar(15)
1597
						'',                                  -- CHECKER_ID - varchar(15)
1598
						NULL,                                -- APPROVE_DT - datetime
1599
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1600
						'N',                                 -- IS_LEAF - varchar(1)
1601
						'',                                  -- COST_ID - varchar(15)
1602
						'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
1603
						);
1604
					SET @STEP_PARENT = 'TGD';
1605

    
1606
					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'))
1607
					BEGIN
1608
						INSERT INTO dbo.PL_REQUEST_PROCESS
1609
					(
1610
						REQ_ID,
1611
						PROCESS_ID,
1612
						STATUS,
1613
						ROLE_USER,
1614
						BRANCH_ID,
1615
						CHECKER_ID,
1616
						APPROVE_DT,
1617
						PARENT_PROCESS_ID,
1618
						IS_LEAF,
1619
						COST_ID,
1620
						DVDM_ID,
1621
						NOTES,
1622
						IS_HAS_CHILD
1623
					)
1624
					VALUES
1625
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1626
						'HDQT',                               -- PROCESS_ID - varchar(10)
1627
						'U',                                 -- STATUS - varchar(5)
1628
						'HDQT',                               -- ROLE_USER - varchar(50)
1629
						'',                                  -- BRANCH_ID - varchar(15)
1630
						'',                                  -- CHECKER_ID - varchar(15)
1631
						NULL,                                -- APPROVE_DT - datetime
1632
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1633
						'N',                                 -- IS_LEAF - varchar(1)
1634
						'',                                  -- COST_ID - varchar(15)
1635
						'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
1636
						);
1637
					SET @STEP_PARENT = 'HDQT';
1638
					END
1639
				END;
1640

    
1641

    
1642

    
1643
	
1644
			--ELSE
1645
			--BEGIN
1646

    
1647
			--END
1648
		
1649
			END;
1650

    
1651
		END;
1652
		END
1653
		
1654

    
1655

    
1656
		END
1657
		
1658
		
1659
		END
1660
		
1661
		INSERT INTO dbo.PL_REQUEST_PROCESS
1662
		(
1663
			REQ_ID,
1664
			PROCESS_ID,
1665
			STATUS,
1666
			ROLE_USER,
1667
			BRANCH_ID,
1668
			CHECKER_ID,
1669
			APPROVE_DT,
1670
			PARENT_PROCESS_ID,
1671
			IS_LEAF,
1672
			NOTES
1673
		)
1674
		VALUES
1675
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1676
			'APPROVE', -- PROCESS_ID - varchar(10)
1677
			'U',       -- STATUS - varchar(5)
1678
			'',        -- ROLE_USER - varchar(50)
1679
			'',        -- BRANCH_ID - varchar(15)
1680
			'',        -- CHECKER_ID - varchar(15)
1681
			NULL,      -- APPROVE_DT - datetime
1682
			@STEP_PARENT, 'Y', N'Hoàn tất');
1683

    
1684

    
1685

    
1686
		IF @@Error <> 0
1687
			GOTO ABORT;
1688

    
1689

    
1690

    
1691
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1692
		SET @PROCESS_ID_CURR =
1693
		(
1694
			SELECT TOP 1
1695
				   PROCESS_ID
1696
			FROM dbo.PL_REQUEST_PROCESS
1697
			WHERE REQ_ID = @p_REQ_ID
1698
				  AND PARENT_PROCESS_ID = 'APPNEW'
1699
		);
1700

    
1701
		UPDATE dbo.PL_REQUEST_PROCESS
1702
		SET STATUS = 'C'
1703
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1704
			  AND REQ_ID = @p_REQ_ID;
1705
		UPDATE dbo.PL_REQUEST_DOC
1706
		SET AUTH_STATUS = @p_AUTH_STATUS,
1707
			APPROVE_DT = @p_APPROVE_DT,
1708
			CHECKER_ID = @p_CHECKER_ID,
1709
			PROCESS_ID = @PROCESS_ID_CURR
1710
		WHERE REQ_ID = @p_REQ_ID;
1711

    
1712
		UPDATE dbo.PL_REQUEST_DOC_DT
1713
		SET CHECKER_ID=@p_CHECKER_ID,
1714
		APPROVE_DT=@p_APPROVE_DT
1715
		WHERE REQ_ID = @p_REQ_ID;
1716

    
1717
		INSERT INTO dbo.PL_PROCESS
1718
		(
1719
			REQ_ID,
1720
			PROCESS_ID,
1721
			CHECKER_ID,
1722
			APPROVE_DT,
1723
			PROCESS_DESC,
1724
			NOTES
1725
		)
1726
		VALUES
1727
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1728
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1729
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1730
			@p_APPROVE_DT,                                        -- APPROVE_DT - datetime
1731
			@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)
1732
			);
1733
		IF (EXISTS
1734
		(
1735
			SELECT REQ_ID
1736
			FROM dbo.PL_REQUEST_DOC
1737
			WHERE REQ_ID = @p_REQ_ID
1738
				  AND PROCESS_ID = 'APPROVE'
1739
		)
1740
		   )
1741
		BEGIN
1742
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1743
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1744
			SET @Result = '0';
1745
		END;
1746
		SET @Result = '1';
1747
END
1748
COMMIT TRANSACTION;
1749
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1750
BEGIN
1751
	SELECT @Result AS Result,
1752
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1753
       '' ErrorDesc;
1754
		RETURN '0';
1755
END
1756
ELSE
1757
BEGIN
1758
	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
1759
	RETURN '4'
1760
END
1761
ABORT:
1762
BEGIN
1763

    
1764
    ROLLBACK TRANSACTION;
1765
    SELECT '-1' AS Result,
1766
           '' ROLE_NOTIFI,
1767
           '' ErrorDesc;
1768
    RETURN '-1';
1769
END;
1770

    
1771

    
1772

    
1773

    
1774

    
1775