Project

General

Profile

1.0 PL REQUEST DOC APPR.txt

Luc Tran Van, 11/15/2022 10:02 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 VARCHAR(20) = NULL,
7
    @p_ROLE_LOGIN VARCHAR(50) = NULL,
8
    @p_BRANCH_LOGIN VARCHAR(15),
9
    @p_PROCESS_DESC 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
--
21
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='A'))
22
BEGIN
23
	ROLLBACK TRANSACTION
24
	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'đã được bạn phê duyệt trước đó. Vui lòng đợi các cấp phê duyệt tiếp theo!' ErrorDesc
25
	RETURN '-1'
26
END
27
--SET @p_APPROVE_DT = @p_APPROVE_DT 
28

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

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

    
115

    
116
	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
117

    
118
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
119
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
120

    
121
	
122
	--IF(@BRANCH_TYPE='PGD')
123
	--	SET @BRANCH_ID=(SELECT TOP 1 FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
124
		
125
	
126
	-- KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20 05 2020
127
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN'))
128
	BEGIN
129
		
130
		DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
131
		INSERT INTO dbo.PL_PROCESS
132
		(
133
			REQ_ID,
134
			PROCESS_ID,
135
			CHECKER_ID,
136
			APPROVE_DT,
137
			PROCESS_DESC,NOTES
138
		)
139
		VALUES
140
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
141
			'SIGN',        -- PROCESS_ID - varchar(10)
142
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
143
			CONVERT(DATETIME,@p_APPROVE_DT,103) , -- APPROVE_DT - datetime
144
			--N'Cấp phê duyệt trung gian xác nhận tờ trình chủ trương',
145
			@p_PROCESS_DESC,--- LUCTV 2022816: THAY NỘI DUNG MẶC ĐỊNH BẰNG NỘI DUNG BÚT PHÊ
146
			N'Cấp phê duyệt trung gian'
147
		)
148
	--- DUA CAP PHE DUYET TRUONG DON VI
149
	    INSERT INTO dbo.PL_REQUEST_PROCESS
150
		(
151
		    REQ_ID,
152
		    PROCESS_ID,
153
		    STATUS,
154
		    ROLE_USER,
155
		    BRANCH_ID,
156
			DEP_ID,
157
		    CHECKER_ID,
158
		    APPROVE_DT,
159
		    PARENT_PROCESS_ID,
160
		    IS_LEAF,
161
		    COST_ID,
162
		    DVDM_ID,
163
		    NOTES,
164
		    IS_HAS_CHILD
165
		)
166
		VALUES
167
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
168
		    'APPNEW',        -- PROCESS_ID - varchar(10)
169
		    'C',        -- STATUS - varchar(5)
170
		    'GDDV',        -- ROLE_USER - varchar(50)
171
		    --@BRANCH_CREATE, 
172
			@BRANCH_ID,
173
			@DEP_ID,      -- BRANCH_ID - varchar(15)
174
		    '',        -- CHECKER_ID - varchar(15)
175
		    NULL,      -- APPROVE_DT - datetime
176
		    '',        -- PARENT_PROCESS_ID - varchar(10)
177
		    'N',        -- IS_LEAF - varchar(1)
178
		    '',        -- COST_ID - varchar(15)
179
		    '',        -- DVDM_ID - varchar(15)
180
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
181
		    NULL       -- IS_HAS_CHILD - bit
182
		 )
183
	--- UPDATE PROCESS_ID VE APP_NEW
184
		UPDATE PL_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID
185
	END
186
	ELSE
187
	BEGIN -- NGUOC LAI LA GIAM DOC DON VI PHE DUYET
188
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> ''))
189
		BEGIN
190
			IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID))
191
			BEGIN
192
				ROLLBACK TRANSACTION
193
				SELECT '-1' Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi cấp phê duyệt trung gian xác nhận. Vui lòng đợi nhân viên '+(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+' xác nhận phiếu!' ErrorDesc
194
				RETURN '-1'
195
			END
196
			IF(@p_CHECKER_ID = (SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
197
			BEGIN
198
				ROLLBACK TRANSACTION
199
				SELECT '-1' Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi trưởng đơn vị phê duyệt. Bạn không có thẩm quyền phê duyệt cấp trưởng đơn vị! Vui lòng xem lịch sử xử lý phiếu' ErrorDesc
200
				RETURN '-1'
201
			END
202
		END
203
		INSERT INTO dbo.PL_REQUEST_PROCESS
204
		(
205
			REQ_ID,
206
			PROCESS_ID,
207
			STATUS,
208
			ROLE_USER,
209
			BRANCH_ID,
210
			DEP_ID,
211
			CHECKER_ID,
212
			APPROVE_DT,
213
			PARENT_PROCESS_ID,
214
			IS_LEAF,
215
			NOTES
216
		)
217
		VALUES
218
		(   @p_REQ_ID,               -- REQ_ID - varchar(15)
219
			'APPNEW',                  -- PROCESS_ID - varchar(10)
220
			'P',                     -- STATUS - varchar(5)
221
			'GDDV',                      -- ROLE_USER - varchar(50)
222
			@BRANCH_ID  ,
223
			@DEP_ID,                      -- BRANCH_ID - varchar(15)
224
			@p_CHECKER_ID,           -- CHECKER_ID - varchar(15)
225
			GETDATE() , -- APPROVE_DT - datetime
226
			NULL, 'N', N'Trưởng đơn vị phê duyệt');
227
		SET @STEP_PARENT = 'APPNEW';
228

    
229
    UPDATE prdd
230
    SET prdd.AMT_APP = ISNULL(PL.AMT_APP,0),
231
    prdd.AMT_EXE = ISNULL(PL.AMT_EXE,0),
232
    prdd.AMT_ETM = ISNULL(PL.AMT_ETM,0),
233
    prdd.AMT_TF = ISNULL(PL.AMT_TF,0),
234
    prdd.AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
235
    prdd.AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
236
      FROM dbo.PL_REQUEST_DOC_DT DDT
237
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
238
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
239
      AND DDT.TRADE_ID = PL.TRADE_ID
240
      AND DOC.REQ_ID <> prdd.REQ_ID)
241
      +
242
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
243
      FROM dbo.PL_REQUEST_TRANSFER DDT
244
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
245
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
246
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
247
      AND DOC.REQ_ID <> @p_REQ_ID)
248
    FROM PL_TRADEDETAIL PL 
249
    LEFT JOIN PL_REQUEST_DOC_DT prdd ON PL.TRADE_ID = prdd.TRADE_ID
250
    WHERE prdd.REQ_ID=@P_REQ_ID
251

    
252
    UPDATE prdd
253
    SET prdd.FR_AMT_APP = ISNULL(PL.AMT_APP,0),
254
    prdd.FR_AMT_EXE = ISNULL(PL.AMT_EXE,0),
255
    prdd.FR_AMT_ETM = ISNULL(PL.AMT_ETM,0),
256
    prdd.FR_AMT_TF = ISNULL(PL.AMT_TF,0),
257
    prdd.FR_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
258
    prdd.FR_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
259
      FROM dbo.PL_REQUEST_DOC_DT DDT
260
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
261
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
262
      AND DDT.TRADE_ID = PL.TRADE_ID
263
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
264
      +
265
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
266
      FROM dbo.PL_REQUEST_TRANSFER DDT
267
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
268
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
269
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
270
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
271
    FROM PL_TRADEDETAIL PL 
272
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.FR_TRADE_ID
273
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
274

    
275
    UPDATE prdd
276
    SET prdd.TO_AMT_APP = ISNULL(PL.AMT_APP,0),
277
    prdd.TO_AMT_EXE = ISNULL(PL.AMT_EXE,0),
278
    prdd.TO_AMT_ETM = ISNULL(PL.AMT_ETM,0),
279
    prdd.TO_AMT_TF = ISNULL(PL.AMT_TF,0),
280
    prdd.TO_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
281
    prdd.TO_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
282
      FROM dbo.PL_REQUEST_DOC_DT DDT
283
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
284
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
285
      AND DDT.TRADE_ID = PL.TRADE_ID
286
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
287
      +
288
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
289
      FROM dbo.PL_REQUEST_TRANSFER DDT
290
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
291
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
292
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
293
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
294
    FROM PL_TRADEDETAIL PL 
295
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.TO_TRADE_ID
296
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
297
		
298
		-- Nếu khổng phải tờ trình có chọn căn cứ
299
		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 <>''))
300
		BEGIN
301

    
302
		DECLARE @ROLE_KT VARCHAR(20), @DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(500),@LIMIT_VALUE_KT DECIMAL(18,2),@TOTAL_AMT_PARENT DECIMAL(18,2)
303
		SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
304
		SET @LIMIT_VALUE_KT=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE = 'KT')
305
		SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
306
		SET @NOTES_KT = (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='KT' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
307
		SET @TOTAL_AMT_PARENT = (SELECT SUM(ISNULL(TOTAL_AMT, 0)) AS TOTAL_AMT
308
			FROM dbo.PL_REQUEST_DOC_DT
309
			WHERE REQ_ID = (SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
310
		--SET @TOTAL_AMT_PARENT = (SELECT SUM(ISNULL(CASE WHEN G.MONTHLY_ALLOCATED = '1' THEN (PRDT.PRICE*PRDT.EXCHANGE_RATE)+(PRDT.TAXES*PRDT.EXCHANGE_RATE) ELSE PRDT.TOTAL_AMT END, 0)) AS TOTAL_AMT
311
		--	FROM dbo.PL_REQUEST_DOC_DT PRDT
312
		--	LEFT JOIN dbo.CM_GOODS G ON G.GD_ID = PRDT.GOODS_ID
313
		--	WHERE REQ_ID = (SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
314
		-- Kế toán
315
		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
316
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
317
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
318
				BEGIN
319
					-- Kiểm tra nếu hạn mức >10 triệu đồng thì mới qua phòng kế toán
320
					SET @TOTAL_AMT = (SELECT SUM(TOTAL_AMT) AS TOTAL_AMT 
321
						FROM dbo.PL_REQUEST_DOC_DT
322
						WHERE REQ_ID = @p_REQ_ID) + ISNULL(@TOTAL_AMT_PARENT,0)
323
					--SET @TOTAL_AMT = (SELECT SUM(CASE WHEN G.MONTHLY_ALLOCATED = '1' THEN (PRDT.PRICE*PRDT.EXCHANGE_RATE)+(PRDT.TAXES*PRDT.EXCHANGE_RATE) ELSE PRDT.TOTAL_AMT END) AS TOTAL_AMT 
324
					--	FROM dbo.PL_REQUEST_DOC_DT PRDT
325
					--	LEFT JOIN dbo.CM_GOODS G ON G.GD_ID = PRDT.GOODS_ID
326
					--	WHERE REQ_ID = @p_REQ_ID) + ISNULL(@TOTAL_AMT_PARENT,0)
327
					IF (ISNULL(@LIMIT_VALUE_KT,10000000)<@TOTAL_AMT OR EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
328
					BEGIN
329
          SET @SUB_PROCESS = ''
330
          IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000006')
331
          AND EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @p_REQ_ID AND prt.FR_BRN_ID = 'DV0001' AND prt.FR_DEP_ID = 'DEP000000000022' AND prt.FR_BRN_ID <> @BRANCH_CREATE))
332
          BEGIN
333
            SET @SUB_PROCESS = 'DVCM/DVDC'
334
          END
335
          ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000006'))
336
          BEGIN
337
            SET @SUB_PROCESS = 'DVCM'
338
          END
339
          ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @p_REQ_ID AND prt.FR_BRN_ID = 'DV0001' AND prt.FR_DEP_ID = 'DEP000000000022' AND prt.FR_BRN_ID <> @BRANCH_CREATE))
340
          BEGIN
341
            SET @SUB_PROCESS = 'DVDC'
342
          END
343
					    INSERT INTO dbo.PL_REQUEST_PROCESS
344
						(
345
							REQ_ID,
346
							PROCESS_ID,
347
							STATUS,
348
							ROLE_USER,
349
							BRANCH_ID,
350
							CHECKER_ID,
351
							APPROVE_DT,
352
							PARENT_PROCESS_ID,
353
							IS_LEAF,
354
							COST_ID,
355
							DVDM_ID,
356
							NOTES,
357
							IS_HAS_CHILD,
358
              SUB_PROCESS_ID
359
						)
360
						VALUES
361
						(   @p_REQ_ID,    -- REQ_ID - varchar(15)
362
							'KT',       -- PROCESS_ID - varchar(10)
363
							'U',          -- STATUS - varchar(5)
364
							@ROLE_KT,       -- ROLE_USER - varchar(50)
365
							'',           -- BRANCH_ID - varchar(15)
366
							'',           -- CHECKER_ID - varchar(15)
367
							NULL,         -- APPROVE_DT - datetime
368
							@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
369
							'N',          -- IS_LEAF - varchar(1)
370
							'',           -- COST_ID - varchar(15)
371
							@DVDM_KT, N'Chờ phòng kế toán xác nhận', 1,
372

    
373
							-- DVDM_ID - varchar(15)
374
							@SUB_PROCESS);
375

    
376
						SET @STEP_PARENT='KT'
377
					END	
378
				END
379

    
380
    --- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
381
		DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
382
		SET @TOTAL_AMT_TRANSFER =(SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID)
383
		---END LUCTV
384

    
385
		-- Có DVCM
386
		IF (EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID))
387
		BEGIN
388
			DECLARE lstCostCenter CURSOR FOR
389
			SELECT COST_ID
390
			FROM dbo.PL_REQUEST_COSTCENTER PRC
391
			WHERE REQ_ID = @p_REQ_ID AND COST_ID IS NOT NULL AND COST_ID <> ''
392
        AND ((@TOTAL_AMT_TRANSFER > 20000000 AND PRC.COST_ID <> 'DM0000000000048') OR @TOTAL_AMT_TRANSFER <= 20000000)
393
        AND ((EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT') AND PRC.COST_ID <> 'DM0000000000006')
394
          OR NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT'))
395
        AND NOT EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER A
396
        LEFT JOIN PL_COSTCENTER_DT pcd ON A.FR_BRN_ID = pcd.BRANCH_ID AND A.FR_DEP_ID = pcd.DEP_ID
397
        LEFT JOIN PL_COSTCENTER pc ON pcd.COST_ID = pc.COST_ID  
398
        WHERE REQ_DOC_ID = @p_REQ_ID AND pc.DVDM_ID = PRC.COST_ID AND ((A.FR_BRN_ID <> 'DV0001' AND A.FR_BRN_ID <> @BRANCH_CREATE) OR (A.FR_BRN_ID = 'DV0001' AND A.FR_DEP_ID <> @DEP_CREATE)));
399
			OPEN lstCostCenter;
400
			FETCH NEXT FROM lstCostCenter
401
			INTO @COST_ID;
402
			WHILE @@FETCH_STATUS = 0
403
			BEGIN
404
				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
405
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
406
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)))))
407
				BEGIN
408
				INSERT INTO dbo.PL_REQUEST_PROCESS
409
				(
410
					REQ_ID,
411
					PROCESS_ID,
412
					STATUS,
413
					ROLE_USER,
414
					BRANCH_ID,
415
					CHECKER_ID,
416
					APPROVE_DT,
417
					PARENT_PROCESS_ID,
418
					IS_LEAF,
419
					COST_ID,
420
					DVDM_ID,
421
					NOTES,
422
					IS_HAS_CHILD
423
				)
424
				VALUES
425
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
426
					'DVCM',       -- PROCESS_ID - varchar(10)
427
					'U',          -- STATUS - varchar(5)
428
					'GDDV',       -- ROLE_USER - varchar(50)
429
					'',           -- BRANCH_ID - varchar(15)
430
					'',           -- CHECKER_ID - varchar(15)
431
					NULL,         -- APPROVE_DT - datetime
432
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
433
					'N',          -- IS_LEAF - varchar(1)
434
					'',           -- COST_ID - varchar(15)
435
					@COST_ID, N'Chờ đơn vị chuyên môn xác nhận', 1
436
					-- DVDM_ID - varchar(15)
437
					);
438
				END
439
				ELSE
440
				BEGIN
441

    
442
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
443
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
444
				END
445

    
446
				FETCH NEXT FROM lstCostCenter
447
				INTO @COST_ID;
448
			END;
449
			CLOSE lstCostCenter;
450
			DEALLOCATE lstCostCenter;
451
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
452
				SET @STEP_PARENT = 'DVCM';
453
		END;
454

    
455
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
456
		--Có điều chuyển NS
457
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
458
		BEGIN
459
				
460
			IF (EXISTS(SELECT FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID AND((FR_BRN_ID <> 'DV0001' AND FR_BRN_ID <> @BRANCH_CREATE) OR (FR_BRN_ID = 'DV0001' AND FR_DEP_ID <> @DEP_CREATE))
461
					--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)
462
          ))	
463
			BEGIN
464

    
465
			DECLARE lstTransfer CURSOR FOR
466
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
467
					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
468
					--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)
469
--					AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER='GDDV' OR ROLE_USER=@ROLE_KT) AND DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
470
--						LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
471
--						WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
472

    
473
			GROUP BY FR_BRN_ID,
474
						FR_DEP_ID
475
      HAVING ((FR_BRN_ID = 'DV0001'
476
        AND ((EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT') AND FR_DEP_ID <> 'DEP000000000022')
477
          OR NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT'))
478
        AND ((@TOTAL_AMT_TRANSFER > 20000000 AND FR_DEP_ID <> 'DEP000000000023') OR (@TOTAL_AMT_TRANSFER <= 20000000)))
479
      OR FR_BRN_ID <> 'DV0001')
480
			OPEN lstTransfer;
481
			FETCH NEXT FROM lstTransfer
482
			INTO @FR_BRANCH_ID,
483
					@FR_DEP_ID;
484
			WHILE @@FETCH_STATUS = 0
485
			BEGIN
486
        IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND (ROLE_USER='GDDV' OR ROLE_USER=@ROLE_KT) AND DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
487
			  LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
488
	      WHERE PCD.BRANCH_ID=@FR_BRANCH_ID AND PCD.DEP_ID=@FR_DEP_ID))))
489
        BEGIN
490
        SET @SUB_PROCESS = ''
491
        IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER A
492
        LEFT JOIN PL_COSTCENTER pc ON A.COST_ID = pc.DVDM_ID
493
        LEFT JOIN PL_COSTCENTER_DT pcd1 ON pc.COST_ID = pcd1.COST_ID
494
        WHERE A.REQ_ID = @p_REQ_ID AND pcd1.BRANCH_ID = @FR_BRANCH_ID AND pcd1.DEP_ID = @FR_DEP_ID))
495
        BEGIN
496
          SET @SUB_PROCESS = 'DVCM'
497
        END
498
				INSERT INTO dbo.PL_REQUEST_PROCESS
499
				(
500
					REQ_ID,
501
					PROCESS_ID,
502
					STATUS,
503
					ROLE_USER,
504
					BRANCH_ID,
505
					CHECKER_ID,
506
					APPROVE_DT,
507
					PARENT_PROCESS_ID,
508
					IS_LEAF,
509
					COST_ID,
510
					DVDM_ID,
511
					NOTES,
512
					IS_HAS_CHILD,
513
					DEP_ID,
514
          SUB_PROCESS_ID
515
				)
516
				VALUES
517
				(   @p_REQ_ID,     -- REQ_ID - varchar(15)
518
					'DVDC',        -- PROCESS_ID - varchar(10)
519
					'U',           -- STATUS - varchar(5)
520
					'GDDV',        -- ROLE_USER - varchar(50)
521
					@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
522
					'',            -- CHECKER_ID - varchar(15)
523
					NULL,          -- APPROVE_DT - datetime
524
					@STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
525
					'N',           -- IS_LEAF - varchar(1)
526
					'',            -- COST_ID - varchar(15)
527
					'',            -- DVDM_ID - varchar(15)
528
					N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID,
529
          @SUB_PROCESS);
530
        END
531
--        ELSE
532
--        BEGIN
533
--          UPDATE PL_REQUEST_PROCESS SET SUB_PROCESS_ID = 'DVDC' WHERE REQ_ID = @p_REQ_ID AND (ROLE_USER='GDDV' OR ROLE_USER=@ROLE_KT) AND DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
534
--  			  LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
535
--  	      WHERE PCD.BRANCH_ID=@FR_BRANCH_ID AND PCD.DEP_ID=@FR_DEP_ID))
536
--        END
537
				FETCH NEXT FROM lstTransfer
538
				INTO @FR_BRANCH_ID,
539
						@FR_DEP_ID;
540
			END;
541
			CLOSE lstTransfer;
542
			DEALLOCATE lstTransfer;
543
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDC'))
544
				SET @STEP_PARENT = 'DVDC';
545
		END;
546

    
547
		-- Đầu mối nhận
548

    
549
		DECLARE @TABLE_TRANFER TABLE
550
		(
551
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
552
		)
553
		DECLARE @TABLE_TRANFER_APP TABLE
554
		(
555
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
556
		)
557

    
558

    
559

    
560
		DECLARE @LIMIT_MAX DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2),@IS_NOIBO BIT,@BRANCH_TRANFER VARCHAR(15),@DEP_TRANFER VARCHAR(15),@OVER_LIMT BIT
561

    
562
		IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND TO_BRN_ID <> FR_BRN_ID OR  ISNULL(TO_DEP_ID,'') <> ISNULL(FR_DEP_ID,'')) )
563
		BEGIN
564
			SET @IS_NOIBO=0
565
		END
566
		ELSE
567
			SET  @IS_NOIBO=1
568

    
569

    
570
		IF(@IS_NOIBO=1)
571
		BEGIN
572
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
573
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
574

    
575

    
576
	
577
		
578

    
579
		INSERT INTO @TABLE_TRANFER
580
		(
581
		    TRADE_ID,
582
			TOTAL_TRANFER
583
		)
584
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
585
		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
586

    
587
		--- Hạn mức phê duyệt
588
		SET @LIMIT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='LIMIT_DCNS')
589

    
590
	---- Tính lũy kế phê duyệt
591
		INSERT INTO @TABLE_TRANFER_APP
592
		(
593
		    TRADE_ID,
594
		    TOTAL_APP
595
		)
596
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT) AS TOTAL_APP FROM dbo.PL_REQUEST_TRANSFER WHERE TOTAL_AMT  <= @LIMIT_MAX AND FR_BRN_ID=TO_BRN_ID AND  ISNULL(TO_DEP_ID,'') = ISNULL(FR_DEP_ID,'')  AND REQ_DOC_ID IN (
597
		SELECT REQ_ID FROM dbo.PL_REQUEST_PROCESS WHERE BRANCH_ID=@BRANCH_TRANFER AND DEP_ID=@DEP_TRANFER AND PROCESS_ID='APPNEW' AND STATUS='P'
598
		)
599
		GROUP BY FR_TRADE_ID
600
		
601
		IF(EXISTS(
602
		SELECT BT.TRADE_ID FROM @TABLE_TRANFER BT 
603
		LEFT JOIN @TABLE_TRANFER_APP BTA ON BTA.TRADE_ID = BT.TRADE_ID
604
		WHERE ISNULL(BT.TOTAL_TRANFER,0) + ISNULL(BTA.TOTAL_APP,0) > @LIMIT_MAX
605
		))
606
		BEGIN
607
			SET @OVER_LIMT=1
608
		END
609
		ELSE
610
			SET @OVER_LIMT =0
611

    
612
		END
613
		
614

    
615
		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
616
		BEGIN
617

    
618
		DECLARE lstTransfer CURSOR FOR
619
		SELECT TO_DVDM_ID
620
		FROM dbo.PL_REQUEST_TRANSFER
621
		WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>'' AND TO_DVDM_ID <>'DM0000000000048'
622
								AND ( (TO_DVDM_ID  ='DM0000000000003' AND ISNULL(@TOTAL_AMT_TRANSFER,0) >=10000000) OR TO_DVDM_ID <> 'DM0000000000003')--- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
623
	
624
		GROUP BY TO_DVDM_ID;
625
		OPEN lstTransfer;
626
		FETCH NEXT FROM lstTransfer
627
		INTO @DVDM_ID;
628
		WHILE @@FETCH_STATUS = 0
629
		BEGIN
630
			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') )
631
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
632
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
633
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
634
		
635
			BEGIN
636
			INSERT INTO dbo.PL_REQUEST_PROCESS
637
			(
638
				REQ_ID,
639
				PROCESS_ID,
640
				STATUS,
641
				ROLE_USER,
642
				BRANCH_ID,
643
				CHECKER_ID,
644
				APPROVE_DT,
645
				PARENT_PROCESS_ID,
646
				IS_LEAF,
647
				COST_ID,
648
				DVDM_ID,
649
				NOTES,
650
				IS_HAS_CHILD
651
			)
652
			VALUES
653
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
654
				'DVDM_DC',    -- PROCESS_ID - varchar(10)
655
				'U',          -- STATUS - varchar(5)
656
				'GDDV',       -- ROLE_USER - varchar(50)
657
				'',           -- BRANCH_ID - varchar(15)
658
				'',           -- CHECKER_ID - varchar(15)
659
				NULL,         -- APPROVE_DT - datetime
660
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
661
				'N',          -- IS_LEAF - varchar(1)
662
				'',           -- COST_ID - varchar(15)
663
				@DVDM_ID,     -- DVDM_ID - varchar(15)
664
				N'Chờ đơn vị đầu mối quản lý NS nhận xác nhận', 1);
665
			END
666
			FETCH NEXT FROM lstTransfer
667
			INTO @DVDM_ID;
668
		END;
669
		CLOSE lstTransfer;
670
		DEALLOCATE lstTransfer;
671

    
672

    
673
		IF (EXISTS(
674
  			SELECT FR_BRN_ID
675
  			FROM dbo.PL_REQUEST_TRANSFER
676
  			WHERE REQ_DOC_ID = @p_REQ_ID
677
  					AND FR_BRN_ID <> @BRANCH_CREATE
678
  					AND FR_DEP_ID <> @DEP_CREATE
679
    ))
680
		BEGIN
681
			-- Đầu mối cho
682
			DECLARE lstTransfer CURSOR FOR
683
			SELECT FR_DVDM_ID
684
			FROM dbo.PL_REQUEST_TRANSFER
685
			WHERE REQ_DOC_ID = @p_REQ_ID
686
					AND FR_BRN_ID <> @BRANCH_CREATE
687
					AND FR_DEP_ID <> @DEP_CREATE
688
					AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
689
					AND NOT EXISTS
690
			(
691
				SELECT *
692
				FROM dbo.PL_REQUEST_PROCESS
693
				WHERE REQ_ID = @p_REQ_ID
694
						AND PROCESS_ID = 'DVDM_DC'
695
						AND DVDM_ID = FR_DVDM_ID
696
			)
697
			--- LUCTV 2022816
698
			AND (FR_DVDM_ID <>'DM0000000000048'
699
								OR (FR_DVDM_ID  ='DM0000000000003' AND ISNULL(@TOTAL_AMT_TRANSFER,0) >=10000000))--- LUCTV 2022816: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
700
	
701
			GROUP BY FR_DVDM_ID;
702
			OPEN lstTransfer;
703
			FETCH NEXT FROM lstTransfer
704
			INTO @DVDM_ID;
705
			WHILE @@FETCH_STATUS = 0
706
			BEGIN
707
			IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND 
708
			(ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') ) 
709
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
710
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
711
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
712
			BEGIN
713
				INSERT INTO dbo.PL_REQUEST_PROCESS
714
				(
715
					REQ_ID,
716
					PROCESS_ID,
717
					STATUS,
718
					ROLE_USER,
719
					BRANCH_ID,
720
					CHECKER_ID,
721
					APPROVE_DT,
722
					PARENT_PROCESS_ID,
723
					IS_LEAF,
724
					COST_ID,
725
					DVDM_ID,
726
					NOTES,
727
					IS_HAS_CHILD
728
				)
729
				VALUES
730
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
731
					'DVDM_DC',    -- PROCESS_ID - varchar(10)
732
					'U',          -- STATUS - varchar(5)
733
					'GDDV',       -- ROLE_USER - varchar(50)
734
					'',           -- BRANCH_ID - varchar(15)
735
					'',           -- CHECKER_ID - varchar(15)
736
					NULL,         -- APPROVE_DT - datetime
737
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
738
					'N',          -- IS_LEAF - varchar(1)
739
					'',           -- COST_ID - varchar(15)
740
					@DVDM_ID,     -- DVDM_ID - varchar(15)
741
					N'Chờ đơn vị đầu mối xác nhận', 0);
742
			END
743
				FETCH NEXT FROM lstTransfer
744
				INTO @DVDM_ID;
745
			END;
746
			CLOSE lstTransfer;
747
			DEALLOCATE lstTransfer;
748
		END;
749

    
750
  	IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
751
  		SET @STEP_PARENT='DVDM_DC'
752

    
753
    IF (@TOTAL_AMT_TRANSFER > 20000000)
754
    BEGIN
755
    SET @SUB_PROCESS = ''
756
    IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000048')
757
    AND EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @p_REQ_ID AND prt.FR_BRN_ID = 'DV0001' AND prt.FR_DEP_ID = 'DEP000000000023' AND prt.FR_BRN_ID <> @BRANCH_CREATE))
758
    BEGIN
759
      SET @SUB_PROCESS = 'DVCM/DVDC'
760
    END
761
    ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000048'))
762
    BEGIN
763
      SET @SUB_PROCESS = 'DVCM'
764
    END
765
    ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_TRANSFER prt WHERE prt.REQ_DOC_ID = @p_REQ_ID AND prt.FR_BRN_ID = 'DV0001' AND prt.FR_DEP_ID = 'DEP000000000023' AND prt.FR_BRN_ID <> @BRANCH_CREATE))
766
    BEGIN
767
      SET @SUB_PROCESS = 'DVDC'
768
    END
769
		INSERT INTO dbo.PL_REQUEST_PROCESS
770
		(
771
			REQ_ID,
772
			PROCESS_ID,
773
			STATUS,
774
			ROLE_USER,
775
			BRANCH_ID,
776
			CHECKER_ID,
777
			APPROVE_DT,
778
			PARENT_PROCESS_ID,
779
			IS_LEAF,
780
			COST_ID,
781
			DVDM_ID,
782
			NOTES,IS_HAS_CHILD,
783
      SUB_PROCESS_ID
784
		)
785
		VALUES
786
		(   @p_REQ_ID,    -- REQ_ID - varchar(15)
787
			'TC',         -- PROCESS_ID - varchar(10)
788
			'U',          -- STATUS - varchar(5)
789
			'TC',         -- ROLE_USER - varchar(50)
790
			'',           -- BRANCH_ID - varchar(15)
791
			'',           -- CHECKER_ID - varchar(15)
792
			NULL,         -- APPROVE_DT - datetime
793
			@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
794
			'N',          -- IS_LEAF - varchar(1)
795
			'',           -- COST_ID - varchar(15)
796
			'',           -- DVDM_ID - varchar(15)
797
			N'Chờ đơn vị Tài chính xác nhận',1,
798
      @SUB_PROCESS);
799
		SET @STEP_PARENT = 'TC';
800
    END
801
		END
802

    
803
	END;
804
	
805
		
806
		 
807
		--IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
808
		--AND ((
809
		--	BRANCH_ID=@BRANCH_CREATE 
810
		--	AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
811
		--	AND (DEP_ID IS NULL OR DEP_ID='')))
812
		--	)
813
		--	OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
814
		--	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)
815
		--	)
816
		--))
817
		--BEGIN
818
		--INSERT INTO dbo.PL_REQUEST_PROCESS
819
		--		(
820
		--		REQ_ID,
821
		--		PROCESS_ID,
822
		--		STATUS,
823
		--		ROLE_USER,
824
		--		BRANCH_ID,
825
		--		DEP_ID,
826
		--		CHECKER_ID,
827
		--		APPROVE_DT,
828
		--		PARENT_PROCESS_ID,
829
		--		IS_LEAF,
830
		--		NOTES
831
		--		)
832
		--		VALUES
833
		--		(   
834
		--		@p_REQ_ID,               -- REQ_ID - varchar(15)
835
		--		'DVC',                  -- PROCESS_ID - varchar(10)
836
		--		'U',                     -- STATUS - varchar(5)
837
		--		'GDDV',                      -- ROLE_USER - varchar(50)
838
		--		@BRANCH_CREATE,
839
		--		@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
840
		--		NULL,           -- CHECKER_ID - varchar(15)
841
		--		NULL , -- APPROVE_DT - datetime
842
		--		@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
843

    
844
		--SET @STEP_CURR = 'DVC';
845
		--SET @STEP_PARENT = 'DVC';
846
		--END
847

    
848
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
849
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
850
		BEGIN
851
		SET @IS_NEXT =
852
		(
853
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
854
		);
855

    
856

    
857

    
858
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
859
		BEGIN
860

    
861
			DECLARE lstCostCenter CURSOR FOR
862
			SELECT DVDM_ID,
863
				   TOTAL_AMT
864
			FROM @DATA_DVDM
865
			WHERE IS_GDK=1;
866
			OPEN lstCostCenter;
867
			FETCH NEXT FROM lstCostCenter
868
			INTO @DVDM_ID,
869
				 @TOTAL_AMT_GD;
870
			WHILE @@FETCH_STATUS = 0
871
			BEGIN
872
				INSERT INTO dbo.PL_REQUEST_PROCESS
873
				(
874
					REQ_ID,
875
					PROCESS_ID,
876
					STATUS,
877
					ROLE_USER,
878
					BRANCH_ID,
879
					CHECKER_ID,
880
					APPROVE_DT,
881
					PARENT_PROCESS_ID,
882
					IS_LEAF,
883
					COST_ID,
884
					DVDM_ID,
885
					NOTES,
886
					IS_HAS_CHILD
887
				)
888
				VALUES
889
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
890
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
891
					'U',                                       -- STATUS - varchar(5)
892
					'GDK',                                     -- ROLE_USER - varchar(50)
893
					'',                                        -- BRANCH_ID - varchar(15)
894
					'',                                        -- CHECKER_ID - varchar(15)
895
					NULL,                                      -- APPROVE_DT - datetime
896
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
897
					'N',                                       -- IS_LEAF - varchar(1)
898
					'',                                        -- COST_ID - varchar(15)
899
					@DVDM_ID, N'Chờ Giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
900
					);
901
				FETCH NEXT FROM lstCostCenter
902
				INTO @DVDM_ID,
903
					 @TOTAL_AMT_GD;
904
			END;
905
			CLOSE lstCostCenter;
906
			DEALLOCATE lstCostCenter;
907

    
908
			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))
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
					CHECKER_ID,
918
					APPROVE_DT,
919
					PARENT_PROCESS_ID,
920
					IS_LEAF,
921
					COST_ID,
922
					DVDM_ID,
923
					NOTES,IS_HAS_CHILD
924
				)
925
				VALUES
926
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
927
					'GDK_TT',        -- PROCESS_ID - varchar(10)
928
					'U',        -- STATUS - varchar(5)
929
					'GDK',        -- ROLE_USER - varchar(50)
930
					'',        -- BRANCH_ID - varchar(15)
931
					'',        -- CHECKER_ID - varchar(15)
932
					NULL, -- APPROVE_DT - datetime
933
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
934
					'N',        -- IS_LEAF - varchar(1)
935
					'',        -- COST_ID - varchar(15)
936
					@DVDM_CDT ,
937
					N'Chờ Giám đốc khối phê duyệt chỉ định thầu',
938
					0        -- DVDM_ID - varchar(15)
939
					)
940
									
941
			END
942
			SET @IS_NEXT =
943
			(
944
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
945
			);
946
			IF(EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_GDK=0)  AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))=1)
947
			BEGIN
948
				SET @IS_NEXT=1
949
			END
950
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
951
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
952
			BEGIN
953
				SET @STEP_PARENT='GDK_TT'	
954
			END	
955
			--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)
956

    
957
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
958
			BEGIN
959

    
960
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
961
				BEGIN
962
					DECLARE lstCostCenter CURSOR FOR
963
					SELECT DVDM_ID,
964
						   TOTAL_AMT
965
					FROM @DATA_DVDM WHERE IS_PTGD=1 AND NOT 
966
					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) ;
967
					OPEN lstCostCenter;
968
					FETCH NEXT FROM lstCostCenter
969
					INTO @DVDM_ID,
970
						 @TOTAL_AMT_GD;
971
					WHILE @@FETCH_STATUS = 0
972
					BEGIN
973
						INSERT INTO dbo.PL_REQUEST_PROCESS
974
						(
975
							REQ_ID,
976
							PROCESS_ID,
977
							STATUS,
978
							ROLE_USER,
979
							BRANCH_ID,
980
							CHECKER_ID,
981
							APPROVE_DT,
982
							PARENT_PROCESS_ID,
983
							IS_LEAF,
984
							COST_ID,
985
							DVDM_ID,
986
							NOTES,
987
							IS_HAS_CHILD
988
						)
989
						VALUES
990
						(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
991
							'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
992
							'U',                                                -- STATUS - varchar(5)
993
							'PTGD',                                             -- ROLE_USER - varchar(50)
994
							'',                                                 -- BRANCH_ID - varchar(15)
995
							'',                                                 -- CHECKER_ID - varchar(15)
996
							NULL,                                               -- APPROVE_DT - datetime
997
							@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
998
							'N',                                                -- IS_LEAF - varchar(1)
999
							'',                                                 -- COST_ID - varchar(15)
1000
							@DVDM_ID, N'Chờ phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1001
							);
1002
					
1003
						FETCH NEXT FROM lstCostCenter
1004
						INTO @DVDM_ID,
1005
							 @TOTAL_AMT_GD;
1006
				END;
1007
				CLOSE lstCostCenter;
1008
				DEALLOCATE lstCostCenter;
1009

    
1010
				SET @IS_NEXT =
1011
				(
1012
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1013
				);
1014
				END --- KẾT THÚC VIỆC KIỂM TRA KHỐI ĐÓ CÓ PHÓ TỔNG
1015

    
1016
				IF(@IS_SPECIAL=1 AND NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT' AND DVDM_ID='DM0000000000014'))
1017
				BEGIN
1018
					INSERT INTO dbo.PL_REQUEST_PROCESS
1019
					(
1020
						REQ_ID,
1021
						PROCESS_ID,
1022
						STATUS,
1023
						ROLE_USER,
1024
						BRANCH_ID,
1025
						CHECKER_ID,
1026
						APPROVE_DT,
1027
						PARENT_PROCESS_ID,
1028
						IS_LEAF,
1029
						COST_ID,
1030
						DVDM_ID,
1031
						NOTES,
1032
						IS_HAS_CHILD
1033
					)
1034
					VALUES
1035
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1036
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1037
						'U',                                                -- STATUS - varchar(5)
1038
						'PTGD',                                             -- ROLE_USER - varchar(50)
1039
						'',                                                 -- BRANCH_ID - varchar(15)
1040
						'',                                                 -- CHECKER_ID - varchar(15)
1041
						NULL,                                               -- APPROVE_DT - datetime
1042
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1043
						'N',                                                -- IS_LEAF - varchar(1)
1044
						'',                                                 -- COST_ID - varchar(15)
1045
						'DM0000000000014', N'Chờ Phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1046
						);
1047
				END
1048
				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)
1049
				AND EXISTS(SELECT DVDM_ID FROM CM_DVDM WHERE DVDM_ID =@DVDM_CDT AND IS_PTGD =1) ) -- 19.10.2022 LUCTV FIX BO SUNG THEM DIEU KIEN NEU KHOI DO CO PTGD THI MOI ADD PTGD VAO TO TRINH
1050
				BEGIN
1051
					INSERT INTO dbo.PL_REQUEST_PROCESS
1052
									(
1053
										REQ_ID,
1054
										PROCESS_ID,
1055
										STATUS,
1056
										ROLE_USER,
1057
										BRANCH_ID,
1058
										CHECKER_ID,
1059
										APPROVE_DT,
1060
										PARENT_PROCESS_ID,
1061
										IS_LEAF,
1062
										COST_ID,
1063
										DVDM_ID,
1064
										NOTES,IS_HAS_CHILD
1065
									)
1066
									VALUES
1067
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1068
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1069
										'U',        -- STATUS - varchar(5)
1070
										'PTGD',        -- ROLE_USER - varchar(50)
1071
										'',        -- BRANCH_ID - varchar(15)
1072
										'',        -- CHECKER_ID - varchar(15)
1073
										NULL, -- APPROVE_DT - datetime
1074
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1075
										'N',        -- IS_LEAF - varchar(1)
1076
										'',        -- COST_ID - varchar(15)
1077
										@DVDM_CDT ,
1078
										N'Chờ Phó Tổng giám đốc khối phê duyệt',
1079
										0        -- DVDM_ID - varchar(15)
1080
					 )	
1081
				END
1082
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1083
				IF(EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=0 ) AND @IS_SPECIAL <> 1  AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))=1)
1084
				BEGIN
1085
					SET @IS_NEXT=1
1086
				END
1087
				ELSE -- LUCTV 03.11.2022 NEU KHONG THOA DIEU KIEN THI CHO IS NEXT =0
1088
				BEGIN
1089
					SET @IS_NEXT=0
1090
				END
1091
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1092
				BEGIN
1093
					SET @STEP_PARENT='PTGDK_TT'	
1094
					SET @IS_NEXT = (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD')) -- LUCTV 15.11.2022 FIX NEU WORKFLOW CO PTGDK THI CAN PHAI CHECK XEM HAN MUC CO DI QUA TGD HAY KHONG
1095
				END
1096
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1097
				BEGIN
1098
					---- THEM THU KI TGD
1099
					INSERT INTO dbo.PL_REQUEST_PROCESS
1100
					(
1101
						REQ_ID,
1102
						PROCESS_ID,
1103
						STATUS,
1104
						ROLE_USER,
1105
						BRANCH_ID,
1106
						CHECKER_ID,
1107
						APPROVE_DT,
1108
						PARENT_PROCESS_ID,
1109
						IS_LEAF,
1110
						COST_ID,
1111
						DVDM_ID,
1112
						NOTES,
1113
						IS_HAS_CHILD
1114
					)
1115
					VALUES
1116
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1117
						'TKTGD',                               -- PROCESS_ID - varchar(10)
1118
						'U',                                 -- STATUS - varchar(5)
1119
						'TKTGD',                               -- 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
						'', N'Chờ Thư Ký Tổng giám đốc xác nhận', 1 -- DVDM_ID - varchar(15)
1127
						);
1128
					SET @STEP_PARENT = 'TKTGD';
1129
					---- END THU KY TGD
1130
					INSERT INTO dbo.PL_REQUEST_PROCESS
1131
					(
1132
						REQ_ID,
1133
						PROCESS_ID,
1134
						STATUS,
1135
						ROLE_USER,
1136
						BRANCH_ID,
1137
						CHECKER_ID,
1138
						APPROVE_DT,
1139
						PARENT_PROCESS_ID,
1140
						IS_LEAF,
1141
						COST_ID,
1142
						DVDM_ID,
1143
						NOTES,
1144
						IS_HAS_CHILD
1145
					)
1146
					VALUES
1147
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1148
						'TGD',                               -- PROCESS_ID - varchar(10)
1149
						'U',                                 -- STATUS - varchar(5)
1150
						'TGD',                               -- ROLE_USER - varchar(50)
1151
						'',                                  -- BRANCH_ID - varchar(15)
1152
						'',                                  -- CHECKER_ID - varchar(15)
1153
						NULL,                                -- APPROVE_DT - datetime
1154
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1155
						'N',                                 -- IS_LEAF - varchar(1)
1156
						'',                                  -- COST_ID - varchar(15)
1157
						'', N'Chờ Tổng giám đốc phê duyệt', 0 -- DVDM_ID - varchar(15)
1158
						);
1159
					SET @STEP_PARENT = 'TGD';
1160
					SET @IS_NEXT =
1161
				(
1162
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')
1163
				);
1164
					IF(@IS_NEXT=1)
1165
					BEGIN
1166
					---- THEM THU KI HDQT
1167
					INSERT INTO dbo.PL_REQUEST_PROCESS
1168
					(
1169
						REQ_ID,
1170
						PROCESS_ID,
1171
						STATUS,
1172
						ROLE_USER,
1173
						BRANCH_ID,
1174
						CHECKER_ID,
1175
						APPROVE_DT,
1176
						PARENT_PROCESS_ID,
1177
						IS_LEAF,
1178
						COST_ID,
1179
						DVDM_ID,
1180
						NOTES,
1181
						IS_HAS_CHILD
1182
					)
1183
					VALUES
1184
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1185
						'TKHDQT',                               -- PROCESS_ID - varchar(10)
1186
						'U',                                 -- STATUS - varchar(5)
1187
						'TKHDQT',                               -- ROLE_USER - varchar(50)
1188
						'',                                  -- BRANCH_ID - varchar(15)
1189
						'',                                  -- CHECKER_ID - varchar(15)
1190
						NULL,                                -- APPROVE_DT - datetime
1191
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1192
						'N',                                 -- IS_LEAF - varchar(1)
1193
						'',                                  -- COST_ID - varchar(15)
1194
						'', N'Chờ Văn Phòng Thư Ký HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
1195
						);
1196
					SET @STEP_PARENT = 'TKHDQT';
1197
					---- END THU KY HDQT
1198
						INSERT INTO dbo.PL_REQUEST_PROCESS
1199
					(
1200
						REQ_ID,
1201
						PROCESS_ID,
1202
						STATUS,
1203
						ROLE_USER,
1204
						BRANCH_ID,
1205
						CHECKER_ID,
1206
						APPROVE_DT,
1207
						PARENT_PROCESS_ID,
1208
						IS_LEAF,
1209
						COST_ID,
1210
						DVDM_ID,
1211
						NOTES,
1212
						IS_HAS_CHILD
1213
					)
1214
					VALUES
1215
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1216
						'HDQT',                               -- PROCESS_ID - varchar(10)
1217
						'U',                                 -- STATUS - varchar(5)
1218
						'HDQT',                               -- ROLE_USER - varchar(50)
1219
						'',                                  -- BRANCH_ID - varchar(15)
1220
						'',                                  -- CHECKER_ID - varchar(15)
1221
						NULL,                                -- APPROVE_DT - datetime
1222
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1223
						'N',                                 -- IS_LEAF - varchar(1)
1224
						'',                                  -- COST_ID - varchar(15)
1225
						'', N'Chờ Chủ Tịch Hội Đồng Quản Trị phê duyệt', 0 -- DVDM_ID - varchar(15)
1226
						);
1227
					SET @STEP_PARENT = 'HDQT';
1228
					END
1229
				END;
1230
			--ELSE
1231
			--BEGIN
1232

    
1233
			--END
1234
		
1235
			END;
1236

    
1237
		END;
1238
		END
1239
				
1240
		END
1241
		-- Nếu là tờ trình căn cứ và tồn tại hình thức chỉ định thầu
1242
		ELSE IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID AND TRADE_TYPE = 'CDT')
1243
		AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = (SELECT PL_BASED_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID) AND TRADE_TYPE = 'CDT'))
1244
		BEGIN
1245
			INSERT INTO dbo.PL_REQUEST_PROCESS
1246
			(
1247
				REQ_ID,
1248
				PROCESS_ID,
1249
				STATUS,
1250
				ROLE_USER,
1251
				BRANCH_ID,
1252
				CHECKER_ID,
1253
				APPROVE_DT,
1254
				PARENT_PROCESS_ID,
1255
				IS_LEAF,
1256
				COST_ID,
1257
				DVDM_ID,
1258
				NOTES,IS_HAS_CHILD
1259
			)
1260
			VALUES
1261
			(   
1262
				@p_REQ_ID,
1263
				'GDK_TT',
1264
				'U',
1265
				'GDK',
1266
				'',
1267
				'',
1268
				NULL,
1269
				@STEP_PARENT,
1270
				'N',
1271
				'',
1272
				@DVDM_CDT,
1273
				N'Chờ giám đốc khối xác nhận',
1274
				0
1275
			)
1276
			SET @STEP_PARENT = 'GDK_TT'
1277
			
1278
			-- Nếu tổng giá trị chỉ định thầu lớn hơn hạn mức phê duyệt của GDK
1279
			IF ((SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK')) = 1)
1280
			BEGIN
1281
				INSERT INTO dbo.PL_REQUEST_PROCESS
1282
				(
1283
					REQ_ID,
1284
					PROCESS_ID,
1285
					STATUS,
1286
					ROLE_USER,
1287
					BRANCH_ID,
1288
					CHECKER_ID,
1289
					APPROVE_DT,
1290
					PARENT_PROCESS_ID,
1291
					IS_LEAF,
1292
					COST_ID,
1293
					DVDM_ID,
1294
					NOTES,
1295
					IS_HAS_CHILD
1296
				)
1297
				VALUES
1298
				(   
1299
					@p_REQ_ID,
1300
					'PTGDK_TT',
1301
					'U',
1302
					'PTGD',
1303
					'',
1304
					'',
1305
					NULL,
1306
					@STEP_PARENT,
1307
					'N',
1308
					'',
1309
					@DVDM_CDT,
1310
					N'Chờ phó tổng giám đốc khối xác nhận',
1311
					0
1312
				)
1313
				SET @STEP_PARENT = 'PTGDK_TT'
1314
			END
1315
		END
1316
		
1317
		INSERT INTO dbo.PL_REQUEST_PROCESS
1318
		(
1319
			REQ_ID,
1320
			PROCESS_ID,
1321
			STATUS,
1322
			ROLE_USER,
1323
			BRANCH_ID,
1324
			CHECKER_ID,
1325
			APPROVE_DT,
1326
			PARENT_PROCESS_ID,
1327
			IS_LEAF,
1328
			NOTES
1329
		)
1330
		VALUES
1331
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1332
			'APPROVE', -- PROCESS_ID - varchar(10)
1333
			'U',       -- STATUS - varchar(5)
1334
			'',        -- ROLE_USER - varchar(50)
1335
			'',        -- BRANCH_ID - varchar(15)
1336
			'',        -- CHECKER_ID - varchar(15)
1337
			NULL,      -- APPROVE_DT - datetime
1338
			@STEP_PARENT, 'Y', N'Hoàn tất');
1339

    
1340

    
1341

    
1342
		IF @@Error <> 0
1343
			GOTO ABORT;
1344

    
1345

    
1346

    
1347
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1348
		SET @PROCESS_ID_CURR =
1349
		(
1350
			SELECT TOP 1
1351
				   PROCESS_ID
1352
			FROM dbo.PL_REQUEST_PROCESS
1353
			WHERE REQ_ID = @p_REQ_ID
1354
				  AND PARENT_PROCESS_ID = 'APPNEW'
1355
		);
1356

    
1357
		UPDATE dbo.PL_REQUEST_PROCESS
1358
		SET STATUS = 'C'
1359
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1360
			  AND REQ_ID = @p_REQ_ID;
1361
		UPDATE dbo.PL_REQUEST_DOC
1362
		SET AUTH_STATUS = @p_AUTH_STATUS,
1363
			APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT,103),
1364
			CHECKER_ID = @p_CHECKER_ID,
1365
			PROCESS_ID = @PROCESS_ID_CURR
1366
		WHERE REQ_ID = @p_REQ_ID;
1367

    
1368
		UPDATE dbo.PL_REQUEST_DOC_DT
1369
		SET CHECKER_ID=@p_CHECKER_ID,
1370
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1371
		WHERE REQ_ID = @p_REQ_ID;
1372

    
1373
		INSERT INTO dbo.PL_PROCESS
1374
		(
1375
			REQ_ID,
1376
			PROCESS_ID,
1377
			CHECKER_ID,
1378
			APPROVE_DT,
1379
			PROCESS_DESC,
1380
			NOTES
1381
		)
1382
		VALUES
1383
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1384
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1385
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1386
			CONVERT(DATETIME, @p_APPROVE_DT,103),                                        -- APPROVE_DT - datetime
1387
			@p_PROCESS_DESC, 
1388
			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)
1389
			);
1390
		IF (EXISTS
1391
		(
1392
			SELECT REQ_ID
1393
			FROM dbo.PL_REQUEST_DOC
1394
			WHERE REQ_ID = @p_REQ_ID
1395
				  AND PROCESS_ID = 'APPROVE'
1396
		)
1397
		   )
1398
		BEGIN
1399
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1400
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1401
			SET @Result = '0';
1402
		END;
1403
		SET @Result = '1';
1404
END
1405
COMMIT TRANSACTION;
1406
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1407
BEGIN
1408
	SELECT '0' 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 trưởng đơn vị phê duyệt thành công.' ErrorDesc;
1409
	RETURN '0';
1410
END
1411
ELSE
1412
BEGIN
1413
	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
1414
	RETURN '4'
1415
END
1416
ABORT:
1417
BEGIN
1418

    
1419
    ROLLBACK TRANSACTION;
1420
    SELECT '-1' AS Result,
1421
           '' ROLE_NOTIFI,
1422
           '' ErrorDesc;
1423
    RETURN '-1';
1424
END;
1425

    
1426

    
1427

    
1428

    
1429

    
1430