Project

General

Profile

PL_REQUEST_DOC_App.txt

Luc Tran Van, 10/21/2022 11:07 AM

 
1

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

    
434
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
435
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
436
				END
437

    
438
				FETCH NEXT FROM lstCostCenter
439
				INTO @COST_ID;
440
			END;
441
			CLOSE lstCostCenter;
442
			DEALLOCATE lstCostCenter;
443
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
444
				SET @STEP_PARENT = 'DVCM';
445
		END;
446

    
447
		--- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
448
		DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
449
		SET @TOTAL_AMT_TRANSFER =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID)
450
		---END LUCTV
451
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
452
		--Có điều chuyển NS
453
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
454
		BEGIN
455
				
456
			IF (EXISTS(SELECT FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
457
					--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)
458
          ))	
459
			BEGIN
460

    
461
			DECLARE lstTransfer CURSOR FOR
462
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
463
					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
464
					--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)
465
--					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
466
--						LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
467
--						WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
468

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

    
540
		-- Đầu mối nhận
541

    
542
		DECLARE @TABLE_TRANFER TABLE
543
		(
544
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
545
		)
546
		DECLARE @TABLE_TRANFER_APP TABLE
547
		(
548
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
549
		)
550

    
551

    
552

    
553
		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
554

    
555
		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,'')) )
556
		BEGIN
557
			SET @IS_NOIBO=0
558
		END
559
		ELSE
560
			SET  @IS_NOIBO=1
561

    
562

    
563
		IF(@IS_NOIBO=1)
564
		BEGIN
565
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
566
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
567

    
568

    
569
	
570
		
571

    
572
		INSERT INTO @TABLE_TRANFER
573
		(
574
		    TRADE_ID,
575
			TOTAL_TRANFER
576
		)
577
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
578
		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
579

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

    
583
	---- Tính lũy kế phê duyệt
584
		INSERT INTO @TABLE_TRANFER_APP
585
		(
586
		    TRADE_ID,
587
		    TOTAL_APP
588
		)
589
		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 (
590
		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'
591
		)
592
		GROUP BY FR_TRADE_ID
593
		
594
		IF(EXISTS(
595
		SELECT BT.TRADE_ID FROM @TABLE_TRANFER BT 
596
		LEFT JOIN @TABLE_TRANFER_APP BTA ON BTA.TRADE_ID = BT.TRADE_ID
597
		WHERE ISNULL(BT.TOTAL_TRANFER,0) + ISNULL(BTA.TOTAL_APP,0) > @LIMIT_MAX
598
		))
599
		BEGIN
600
			SET @OVER_LIMT=1
601
		END
602
		ELSE
603
			SET @OVER_LIMT =0
604

    
605
		END
606
		
607

    
608
		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
609
		BEGIN
610

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

    
665

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

    
742

    
743

    
744

    
745
			IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
746
				SET @STEP_PARENT='DVDM_DC'
747

    
748

    
749
		END;
750

    
751

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

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

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

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

    
855

    
856

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

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

    
907
			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))
908
			BEGIN
909
				INSERT INTO dbo.PL_REQUEST_PROCESS
910
				(
911
					REQ_ID,
912
					PROCESS_ID,
913
					STATUS,
914
					ROLE_USER,
915
					BRANCH_ID,
916
					CHECKER_ID,
917
					APPROVE_DT,
918
					PARENT_PROCESS_ID,
919
					IS_LEAF,
920
					COST_ID,
921
					DVDM_ID,
922
					NOTES,IS_HAS_CHILD
923
				)
924
				VALUES
925
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
926
					'GDK_TT',        -- PROCESS_ID - varchar(10)
927
					'U',        -- STATUS - varchar(5)
928
					'GDK',        -- ROLE_USER - varchar(50)
929
					'',        -- BRANCH_ID - varchar(15)
930
					'',        -- CHECKER_ID - varchar(15)
931
					NULL, -- APPROVE_DT - datetime
932
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
933
					'N',        -- IS_LEAF - varchar(1)
934
					'',        -- COST_ID - varchar(15)
935
					@DVDM_CDT ,
936
					N'Chờ Giám đốc khối phê duyệt chỉ định thầu',
937
					0        -- DVDM_ID - varchar(15)
938
					)
939
									
940
			END
941

    
942
			SET @IS_NEXT =
943
			(
944
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
945
			);
946

    
947
			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)
948
			BEGIN
949
				SET @IS_NEXT=1
950
			END
951

    
952
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
953

    
954
			
955
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
956
			BEGIN
957
				SET @STEP_PARENT='GDK_TT'	
958
			END
959

    
960
				
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

    
1021
				
1022
				END
1023

    
1024
				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'))
1025
				BEGIN
1026
					INSERT INTO dbo.PL_REQUEST_PROCESS
1027
					(
1028
						REQ_ID,
1029
						PROCESS_ID,
1030
						STATUS,
1031
						ROLE_USER,
1032
						BRANCH_ID,
1033
						CHECKER_ID,
1034
						APPROVE_DT,
1035
						PARENT_PROCESS_ID,
1036
						IS_LEAF,
1037
						COST_ID,
1038
						DVDM_ID,
1039
						NOTES,
1040
						IS_HAS_CHILD
1041
					)
1042
					VALUES
1043
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1044
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1045
						'U',                                                -- STATUS - varchar(5)
1046
						'PTGD',                                             -- ROLE_USER - varchar(50)
1047
						'',                                                 -- BRANCH_ID - varchar(15)
1048
						'',                                                 -- CHECKER_ID - varchar(15)
1049
						NULL,                                               -- APPROVE_DT - datetime
1050
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1051
						'N',                                                -- IS_LEAF - varchar(1)
1052
						'',                                                 -- COST_ID - varchar(15)
1053
						'DM0000000000014', N'Chờ Phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1054
						);
1055
				END
1056

    
1057

    
1058
				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)
1059
				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
1060
								BEGIN
1061
									INSERT INTO dbo.PL_REQUEST_PROCESS
1062
									(
1063
										REQ_ID,
1064
										PROCESS_ID,
1065
										STATUS,
1066
										ROLE_USER,
1067
										BRANCH_ID,
1068
										CHECKER_ID,
1069
										APPROVE_DT,
1070
										PARENT_PROCESS_ID,
1071
										IS_LEAF,
1072
										COST_ID,
1073
										DVDM_ID,
1074
										NOTES,IS_HAS_CHILD
1075
									)
1076
									VALUES
1077
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1078
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1079
										'U',        -- STATUS - varchar(5)
1080
										'PTGD',        -- ROLE_USER - varchar(50)
1081
										'',        -- BRANCH_ID - varchar(15)
1082
										'',        -- CHECKER_ID - varchar(15)
1083
										NULL, -- APPROVE_DT - datetime
1084
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1085
										'N',        -- IS_LEAF - varchar(1)
1086
										'',        -- COST_ID - varchar(15)
1087
										@DVDM_CDT ,
1088
										N'Chờ Phó Tổng giám đốc khối phê duyệt',
1089
										0        -- DVDM_ID - varchar(15)
1090
					 )	
1091
				END
1092
	
1093
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1094
				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)
1095
				BEGIN
1096
				SET @IS_NEXT=1
1097
				END
1098

    
1099
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1100
				BEGIN
1101
				SET @STEP_PARENT='PTGDK_TT'	
1102
				END
1103

    
1104

    
1105
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1106
				BEGIN
1107
					---- THEM THU KI TGD
1108
					INSERT INTO dbo.PL_REQUEST_PROCESS
1109
					(
1110
						REQ_ID,
1111
						PROCESS_ID,
1112
						STATUS,
1113
						ROLE_USER,
1114
						BRANCH_ID,
1115
						CHECKER_ID,
1116
						APPROVE_DT,
1117
						PARENT_PROCESS_ID,
1118
						IS_LEAF,
1119
						COST_ID,
1120
						DVDM_ID,
1121
						NOTES,
1122
						IS_HAS_CHILD
1123
					)
1124
					VALUES
1125
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1126
						'TKTGD',                               -- PROCESS_ID - varchar(10)
1127
						'U',                                 -- STATUS - varchar(5)
1128
						'TKTGD',                               -- ROLE_USER - varchar(50)
1129
						'',                                  -- BRANCH_ID - varchar(15)
1130
						'',                                  -- CHECKER_ID - varchar(15)
1131
						NULL,                                -- APPROVE_DT - datetime
1132
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1133
						'N',                                 -- IS_LEAF - varchar(1)
1134
						'',                                  -- COST_ID - varchar(15)
1135
						'', N'Chờ Thư Ký TGĐ xác nhận', 1 -- DVDM_ID - varchar(15)
1136
						);
1137
					SET @STEP_PARENT = 'TKTGD';
1138
					---- END THU KY TGD
1139
					INSERT INTO dbo.PL_REQUEST_PROCESS
1140
					(
1141
						REQ_ID,
1142
						PROCESS_ID,
1143
						STATUS,
1144
						ROLE_USER,
1145
						BRANCH_ID,
1146
						CHECKER_ID,
1147
						APPROVE_DT,
1148
						PARENT_PROCESS_ID,
1149
						IS_LEAF,
1150
						COST_ID,
1151
						DVDM_ID,
1152
						NOTES,
1153
						IS_HAS_CHILD
1154
					)
1155
					VALUES
1156
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1157
						'TGD',                               -- PROCESS_ID - varchar(10)
1158
						'U',                                 -- STATUS - varchar(5)
1159
						'TGD',                               -- ROLE_USER - varchar(50)
1160
						'',                                  -- BRANCH_ID - varchar(15)
1161
						'',                                  -- CHECKER_ID - varchar(15)
1162
						NULL,                                -- APPROVE_DT - datetime
1163
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1164
						'N',                                 -- IS_LEAF - varchar(1)
1165
						'',                                  -- COST_ID - varchar(15)
1166
						'', N'Chờ Tổng giám đốc phê duyệt', 0 -- DVDM_ID - varchar(15)
1167
						);
1168
					SET @STEP_PARENT = 'TGD';
1169
					SET @IS_NEXT =
1170
				(
1171
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')
1172
				);
1173
					IF(@IS_NEXT=1)
1174
					BEGIN
1175
					---- THEM THU KI HDQT
1176
					INSERT INTO dbo.PL_REQUEST_PROCESS
1177
					(
1178
						REQ_ID,
1179
						PROCESS_ID,
1180
						STATUS,
1181
						ROLE_USER,
1182
						BRANCH_ID,
1183
						CHECKER_ID,
1184
						APPROVE_DT,
1185
						PARENT_PROCESS_ID,
1186
						IS_LEAF,
1187
						COST_ID,
1188
						DVDM_ID,
1189
						NOTES,
1190
						IS_HAS_CHILD
1191
					)
1192
					VALUES
1193
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1194
						'TKHDQT',                               -- PROCESS_ID - varchar(10)
1195
						'U',                                 -- STATUS - varchar(5)
1196
						'TKHDQT',                               -- ROLE_USER - varchar(50)
1197
						'',                                  -- BRANCH_ID - varchar(15)
1198
						'',                                  -- CHECKER_ID - varchar(15)
1199
						NULL,                                -- APPROVE_DT - datetime
1200
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1201
						'N',                                 -- IS_LEAF - varchar(1)
1202
						'',                                  -- COST_ID - varchar(15)
1203
						'', N'Chờ Văn Phòng Thư Ký HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
1204
						);
1205
					SET @STEP_PARENT = 'TKHDQT';
1206
					---- END THU KY HDQT
1207
						INSERT INTO dbo.PL_REQUEST_PROCESS
1208
					(
1209
						REQ_ID,
1210
						PROCESS_ID,
1211
						STATUS,
1212
						ROLE_USER,
1213
						BRANCH_ID,
1214
						CHECKER_ID,
1215
						APPROVE_DT,
1216
						PARENT_PROCESS_ID,
1217
						IS_LEAF,
1218
						COST_ID,
1219
						DVDM_ID,
1220
						NOTES,
1221
						IS_HAS_CHILD
1222
					)
1223
					VALUES
1224
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1225
						'HDQT',                               -- PROCESS_ID - varchar(10)
1226
						'U',                                 -- STATUS - varchar(5)
1227
						'HDQT',                               -- ROLE_USER - varchar(50)
1228
						'',                                  -- BRANCH_ID - varchar(15)
1229
						'',                                  -- CHECKER_ID - varchar(15)
1230
						NULL,                                -- APPROVE_DT - datetime
1231
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1232
						'N',                                 -- IS_LEAF - varchar(1)
1233
						'',                                  -- COST_ID - varchar(15)
1234
						'', N'Chờ Chủ Tịch Hội Đồng Quản Trị phê duyệt', 0 -- DVDM_ID - varchar(15)
1235
						);
1236
					SET @STEP_PARENT = 'HDQT';
1237
					END
1238
				END;
1239
			--ELSE
1240
			--BEGIN
1241

    
1242
			--END
1243
		
1244
			END;
1245

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

    
1349

    
1350

    
1351
		IF @@Error <> 0
1352
			GOTO ABORT;
1353

    
1354

    
1355

    
1356
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1357
		SET @PROCESS_ID_CURR =
1358
		(
1359
			SELECT TOP 1
1360
				   PROCESS_ID
1361
			FROM dbo.PL_REQUEST_PROCESS
1362
			WHERE REQ_ID = @p_REQ_ID
1363
				  AND PARENT_PROCESS_ID = 'APPNEW'
1364
		);
1365

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

    
1377
		UPDATE dbo.PL_REQUEST_DOC_DT
1378
		SET CHECKER_ID=@p_CHECKER_ID,
1379
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1380
		WHERE REQ_ID = @p_REQ_ID;
1381

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

    
1430
    ROLLBACK TRANSACTION;
1431
    SELECT '-1' AS Result,
1432
           '' ROLE_NOTIFI,
1433
           '' ErrorDesc;
1434
    RETURN '-1';
1435
END;