Project

General

Profile

2.2 PL REQUEST DOC APPR.txt

Luc Tran Van, 11/03/2022 08:47 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

    
749

    
750

    
751

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

    
755

    
756
		END;
757

    
758

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

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

    
850
		--SET @STEP_CURR = 'DVC';
851
		--SET @STEP_PARENT = 'DVC';
852
		--END
853

    
854
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
855
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
856
		BEGIN
857
		SET @IS_NEXT =
858
		(
859
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
860
		);
861

    
862

    
863

    
864
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
865
		BEGIN
866

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

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

    
963
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
964
			BEGIN
965

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

    
1016
				SET @IS_NEXT =
1017
				(
1018
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1019
				);
1020
				END --- KẾT THÚC VIỆC KIỂM TRA KHỐI ĐÓ CÓ PHÓ TỔNG
1021

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

    
1238
			--END
1239
		
1240
			END;
1241

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

    
1345

    
1346

    
1347
		IF @@Error <> 0
1348
			GOTO ABORT;
1349

    
1350

    
1351

    
1352
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1353
		SET @PROCESS_ID_CURR =
1354
		(
1355
			SELECT TOP 1
1356
				   PROCESS_ID
1357
			FROM dbo.PL_REQUEST_PROCESS
1358
			WHERE REQ_ID = @p_REQ_ID
1359
				  AND PARENT_PROCESS_ID = 'APPNEW'
1360
		);
1361

    
1362
		UPDATE dbo.PL_REQUEST_PROCESS
1363
		SET STATUS = 'C'
1364
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1365
			  AND REQ_ID = @p_REQ_ID;
1366
		UPDATE dbo.PL_REQUEST_DOC
1367
		SET AUTH_STATUS = @p_AUTH_STATUS,
1368
			APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT,103),
1369
			CHECKER_ID = @p_CHECKER_ID,
1370
			PROCESS_ID = @PROCESS_ID_CURR
1371
		WHERE REQ_ID = @p_REQ_ID;
1372

    
1373
		UPDATE dbo.PL_REQUEST_DOC_DT
1374
		SET CHECKER_ID=@p_CHECKER_ID,
1375
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1376
		WHERE REQ_ID = @p_REQ_ID;
1377

    
1378
		INSERT INTO dbo.PL_PROCESS
1379
		(
1380
			REQ_ID,
1381
			PROCESS_ID,
1382
			CHECKER_ID,
1383
			APPROVE_DT,
1384
			PROCESS_DESC,
1385
			NOTES
1386
		)
1387
		VALUES
1388
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1389
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1390
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1391
			CONVERT(DATETIME, @p_APPROVE_DT,103),                                        -- APPROVE_DT - datetime
1392
			@p_PROCESS_DESC, 
1393
			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)
1394
			);
1395
		IF (EXISTS
1396
		(
1397
			SELECT REQ_ID
1398
			FROM dbo.PL_REQUEST_DOC
1399
			WHERE REQ_ID = @p_REQ_ID
1400
				  AND PROCESS_ID = 'APPROVE'
1401
		)
1402
		   )
1403
		BEGIN
1404
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1405
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1406
			SET @Result = '0';
1407
		END;
1408
		SET @Result = '1';
1409
END
1410
COMMIT TRANSACTION;
1411
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1412
BEGIN
1413
	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;
1414
	RETURN '0';
1415
END
1416
ELSE
1417
BEGIN
1418
	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
1419
	RETURN '4'
1420
END
1421
ABORT:
1422
BEGIN
1423

    
1424
    ROLLBACK TRANSACTION;
1425
    SELECT '-1' AS Result,
1426
           '' ROLE_NOTIFI,
1427
           '' ErrorDesc;
1428
    RETURN '-1';
1429
END;
1430

    
1431

    
1432

    
1433

    
1434