Project

General

Profile

FILE 6- PL_REQ_DOC_APP.txt

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

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

    
481

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

    
554

    
555

    
556

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

    
560

    
561
			END;
562

    
563

    
564

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

    
595

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

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

    
692
					INSERT INTO dbo.PL_REQUEST_PROCESS
693
					(
694
						REQ_ID,
695
						PROCESS_ID,
696
						STATUS,
697
						ROLE_USER,
698
						BRANCH_ID,
699
						CHECKER_ID,
700
						APPROVE_DT,
701
						PARENT_PROCESS_ID,
702
						IS_LEAF,
703
						COST_ID,
704
						DVDM_ID,
705
						NOTES,
706
						IS_HAS_CHILD
707
					)
708
					VALUES
709
					(   @p_REQ_ID,                     -- REQ_ID - varchar(15)
710
						'GDK_DC',                      -- PROCESS_ID - varchar(10)
711
						'U',                           -- STATUS - varchar(5)
712
						'GDK',                         -- ROLE_USER - varchar(50)
713
						'',                            -- BRANCH_ID - varchar(15)
714
						'',                            -- CHECKER_ID - varchar(15)
715
						GETDATE(),                     -- APPROVE_DT - datetime
716
						@STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
717
						'N',                           -- IS_LEAF - varchar(1)
718
						'',                            -- COST_ID - varchar(15)
719
						@KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
720
						N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
721
						NULL                           -- IS_HAS_CHILD - bit
722
						);
723
					SET @STEP_PARENT = 'GDK_DC';
724

    
725
					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)
726

    
727

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

    
782
					END
783
						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))
784
						BEGIN
785
							INSERT INTO dbo.PL_REQUEST_PROCESS
786
							(
787
								REQ_ID,
788
								PROCESS_ID,
789
								STATUS,
790
								ROLE_USER,
791
								BRANCH_ID,
792
								CHECKER_ID,
793
								APPROVE_DT,
794
								PARENT_PROCESS_ID,
795
								IS_LEAF,
796
								COST_ID,
797
								DVDM_ID,
798
								NOTES,
799
								IS_HAS_CHILD
800
							)
801
							VALUES
802
							(   @p_REQ_ID,                      -- REQ_ID - varchar(15)
803
								'TGD_DC',                       -- PROCESS_ID - varchar(10)
804
								'U',                            -- STATUS - varchar(5)
805
								'TGD',                          -- ROLE_USER - varchar(50)
806
								'',                             -- BRANCH_ID - varchar(15)
807
								'',                             -- CHECKER_ID - varchar(15)
808
								NULL,                           -- APPROVE_DT - datetime
809
								@STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
810
								'',                             -- IS_LEAF - varchar(1)
811
								'',                             -- COST_ID - varchar(15)
812
								'',                             -- DVDM_ID - varchar(15)
813
								N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
814
								NULL                            -- IS_HAS_CHILD - bit
815
								);
816
							SET @STEP_PARENT = 'TGD_DC';
817
						END;
818

    
819
					END;
820

    
821
					END
822

    
823

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

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

    
979
									--SET @STEP_CURR = 'DVC';
980
									SET @STEP_PARENT = 'DVC';
981
									END
982

    
983

    
984

    
985

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

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

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

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

    
1174

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

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

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

    
1268
							
1269
				END
1270
     
1271
			END;
1272

    
1273

    
1274

    
1275

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

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

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

    
1366

    
1367

    
1368
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1369
		BEGIN
1370

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

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

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

    
1457
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
1458

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

    
1465
				
1466
			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)
1467

    
1468
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
1469
			BEGIN
1470

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

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

    
1525
				
1526
				END
1527

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

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

    
1574

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

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

    
1643

    
1644

    
1645
	
1646
			--ELSE
1647
			--BEGIN
1648

    
1649
			--END
1650
		
1651
			END;
1652

    
1653
		END;
1654
		END
1655
		
1656

    
1657

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

    
1686

    
1687

    
1688
		IF @@Error <> 0
1689
			GOTO ABORT;
1690

    
1691

    
1692

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

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

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

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

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

    
1773

    
1774

    
1775

    
1776

    
1777