Project

General

Profile

1.0 PL REQUEST DOC APP - BO SUNG GDK HO TRỌ - TC VAO TTCT TREN 100M.txt

Luc Tran Van, 04/02/2023 09:14 PM

 
1
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_App]
2
    @p_REQ_ID VARCHAR(15) = NULL,
3
    @p_AUTH_STATUS VARCHAR(1) = NULL,
4
    @p_CHECKER_ID VARCHAR(15) = NULL,
5
    @p_APPROVE_DT VARCHAR(20) = NULL,
6
    @p_ROLE_LOGIN VARCHAR(50) = NULL,
7
    @p_BRANCH_LOGIN VARCHAR(15),
8
    @p_PROCESS_DESC NVARCHAR(500)
9
AS
10

    
11
BEGIN TRANSACTION;
12
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
13
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='R' AND REQ_ID =@p_REQ_ID))
14
BEGIN
15
	ROLLBACK TRANSACTION
16
	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
17
	RETURN '-1'
18
END
19
--
20
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='A'))
21
BEGIN
22
	ROLLBACK TRANSACTION
23
	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
24
	RETURN '-1'
25
END
26
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
27
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('KT','DVCM','DVDC','TC') AND REQ_ID =@p_REQ_ID))
28
BEGIN
29
	ROLLBACK TRANSACTION
30
	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 đợi đơn vị chuyên môn xác nhận. Vui lòng kiểm kiểm tra & thao tác tại màn hình điều phối công việc hoặc màn hình tờ trình chủ trương DVCM/DVDC!' ErrorDesc
31
	RETURN '-1'
32
END
33
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('GDK_TT') AND REQ_ID =@p_REQ_ID))
34
BEGIN
35
	ROLLBACK TRANSACTION
36
	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 đợi giám đốc khối phê duyệt. Vui lòng thao tác tại màn hình Phê duyệt tờ trình chủ trương!' ErrorDesc
37
	RETURN '-1'
38
END
39
--SET @p_APPROVE_DT = @p_APPROVE_DT 
40

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

    
124
	DELETE FROM dbo.PL_REQUEST_PROCESS
125
	WHERE REQ_ID = @p_REQ_ID;
126
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
127
	@BRANCH_CREATE_TYPE VARCHAR(10)
128

    
129

    
130
	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
131

    
132
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
133
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
134

    
135
	
136
	--IF(@BRANCH_TYPE='PGD')
137
	--	SET @BRANCH_ID=(SELECT TOP 1 FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
138
		
139
	
140
	-- KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20 05 2020
141
	IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN'))
142
	BEGIN
143
		
144
		DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID
145
		INSERT INTO dbo.PL_PROCESS
146
		(
147
			REQ_ID,
148
			PROCESS_ID,
149
			CHECKER_ID,
150
			APPROVE_DT,
151
			PROCESS_DESC,NOTES
152
		)
153
		VALUES
154
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
155
			'SIGN',        -- PROCESS_ID - varchar(10)
156
			@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
157
			CONVERT(DATETIME,@p_APPROVE_DT,103) , -- APPROVE_DT - datetime
158
			--N'Cấp phê duyệt trung gian xác nhận tờ trình chủ trương',
159
			@p_PROCESS_DESC,--- LUCTV 2022816: THAY NỘI DUNG MẶC ĐỊNH BẰNG NỘI DUNG BÚT PHÊ
160
			N'Cấp phê duyệt trung gian'
161
		)
162
	--- DUA CAP PHE DUYET TRUONG DON VI
163
	    INSERT INTO dbo.PL_REQUEST_PROCESS
164
		(
165
		    REQ_ID,
166
		    PROCESS_ID,
167
		    STATUS,
168
		    ROLE_USER,
169
		    BRANCH_ID,
170
			DEP_ID,
171
		    CHECKER_ID,
172
		    APPROVE_DT,
173
		    PARENT_PROCESS_ID,
174
		    IS_LEAF,
175
		    COST_ID,
176
		    DVDM_ID,
177
		    NOTES,
178
		    IS_HAS_CHILD
179
		)
180
		VALUES
181
		(   @p_REQ_ID,        -- REQ_ID - varchar(15)
182
		    'APPNEW',        -- PROCESS_ID - varchar(10)
183
		    'C',        -- STATUS - varchar(5)
184
		    'GDDV',        -- ROLE_USER - varchar(50)
185
		    --@BRANCH_CREATE, 
186
			@BRANCH_ID,
187
			@DEP_ID,      -- BRANCH_ID - varchar(15)
188
		    '',        -- CHECKER_ID - varchar(15)
189
		    NULL,      -- APPROVE_DT - datetime
190
		    '',        -- PARENT_PROCESS_ID - varchar(10)
191
		    'N',        -- IS_LEAF - varchar(1)
192
		    '',        -- COST_ID - varchar(15)
193
		    '',        -- DVDM_ID - varchar(15)
194
		    N'Chờ trưởng đơn vị phê duyệt',       -- NOTES - nvarchar(500)
195
		    NULL       -- IS_HAS_CHILD - bit
196
		 )
197
	--- UPDATE PROCESS_ID VE APP_NEW
198
		UPDATE PL_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID
199
	END
200
	ELSE
201
	BEGIN -- NGUOC LAI LA GIAM DOC DON VI PHE DUYET
202
		IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> ''))
203
		BEGIN
204
			IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID))
205
			BEGIN
206
				ROLLBACK TRANSACTION
207
				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
208
				RETURN '-1'
209
			END
210
			IF(@p_CHECKER_ID = (SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID))
211
			BEGIN
212
				ROLLBACK TRANSACTION
213
				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
214
				RETURN '-1'
215
			END
216
		END
217
		INSERT INTO dbo.PL_REQUEST_PROCESS
218
		(
219
			REQ_ID,
220
			PROCESS_ID,
221
			STATUS,
222
			ROLE_USER,
223
			BRANCH_ID,
224
			DEP_ID,
225
			CHECKER_ID,
226
			APPROVE_DT,
227
			PARENT_PROCESS_ID,
228
			IS_LEAF,
229
			NOTES
230
		)
231
		VALUES
232
		(   @p_REQ_ID,               -- REQ_ID - varchar(15)
233
			'APPNEW',                  -- PROCESS_ID - varchar(10)
234
			'P',                     -- STATUS - varchar(5)
235
			'GDDV',                      -- ROLE_USER - varchar(50)
236
			@BRANCH_ID  ,
237
			@DEP_ID,                      -- BRANCH_ID - varchar(15)
238
			@p_CHECKER_ID,           -- CHECKER_ID - varchar(15)
239
			GETDATE() , -- APPROVE_DT - datetime
240
			NULL, 'N', N'Trưởng đơn vị phê duyệt');
241
		SET @STEP_PARENT = 'APPNEW';
242

    
243
    UPDATE prdd
244
    SET prdd.AMT_APP = ISNULL(PL.AMT_APP,0),
245
    prdd.AMT_EXE = ISNULL(PL.AMT_EXE,0),
246
    prdd.AMT_ETM = ISNULL(PL.AMT_ETM,0),
247
    prdd.AMT_TF = ISNULL(PL.AMT_TF,0),
248
    prdd.AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
249
    prdd.AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
250
      FROM dbo.PL_REQUEST_DOC_DT DDT
251
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
252
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
253
      AND DDT.TRADE_ID = PL.TRADE_ID
254
      AND DOC.REQ_ID <> prdd.REQ_ID)
255
      +
256
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
257
      FROM dbo.PL_REQUEST_TRANSFER DDT
258
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
259
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
260
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
261
      AND DOC.REQ_ID <> @p_REQ_ID)
262
    FROM PL_TRADEDETAIL PL 
263
    LEFT JOIN PL_REQUEST_DOC_DT prdd ON PL.TRADE_ID = prdd.TRADE_ID
264
    WHERE prdd.REQ_ID=@P_REQ_ID
265

    
266
    UPDATE prdd
267
    SET prdd.FR_AMT_APP = ISNULL(PL.AMT_APP,0),
268
    prdd.FR_AMT_EXE = ISNULL(PL.AMT_EXE,0),
269
    prdd.FR_AMT_ETM = ISNULL(PL.AMT_ETM,0),
270
    prdd.FR_AMT_TF = ISNULL(PL.AMT_TF,0),
271
    prdd.FR_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
272
    prdd.FR_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
273
      FROM dbo.PL_REQUEST_DOC_DT DDT
274
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
275
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
276
      AND DDT.TRADE_ID = PL.TRADE_ID
277
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
278
      +
279
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
280
      FROM dbo.PL_REQUEST_TRANSFER DDT
281
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
282
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
283
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
284
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
285
    FROM PL_TRADEDETAIL PL 
286
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.FR_TRADE_ID
287
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
288

    
289
    UPDATE prdd
290
    SET prdd.TO_AMT_APP = ISNULL(PL.AMT_APP,0),
291
    prdd.TO_AMT_EXE = ISNULL(PL.AMT_EXE,0),
292
    prdd.TO_AMT_ETM = ISNULL(PL.AMT_ETM,0),
293
    prdd.TO_AMT_TF = ISNULL(PL.AMT_TF,0),
294
    prdd.TO_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
295
    prdd.TO_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
296
      FROM dbo.PL_REQUEST_DOC_DT DDT
297
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
298
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
299
      AND DDT.TRADE_ID = PL.TRADE_ID
300
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
301
      +
302
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
303
      FROM dbo.PL_REQUEST_TRANSFER DDT
304
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
305
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
306
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
307
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
308
    FROM PL_TRADEDETAIL PL 
309
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.TO_TRADE_ID
310
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
311
		
312
		-- Nếu khổng phải tờ trình có chọn căn cứ
313
		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 <>''))
314
		BEGIN
315

    
316
		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)
317
		SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
318
		SET @LIMIT_VALUE_KT=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE = 'KT')
319
		SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
320
		SET @NOTES_KT = (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='KT' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
321
		SET @TOTAL_AMT_PARENT = (SELECT SUM(ISNULL(TOTAL_AMT, 0)) AS TOTAL_AMT
322
			FROM dbo.PL_REQUEST_DOC_DT
323
			WHERE REQ_ID = (SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
324
		--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
325
		--	FROM dbo.PL_REQUEST_DOC_DT PRDT
326
		--	LEFT JOIN dbo.CM_GOODS G ON G.GD_ID = PRDT.GOODS_ID
327
		--	WHERE REQ_ID = (SELECT REQ_PARENT_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
328
		-- Kế toán
329
		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
330
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
331
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
332
				BEGIN
333
					-- Kiểm tra nếu hạn mức >10 triệu đồng thì mới qua phòng kế toán
334
					SET @TOTAL_AMT = (SELECT SUM(TOTAL_AMT) AS TOTAL_AMT 
335
						FROM dbo.PL_REQUEST_DOC_DT
336
						WHERE REQ_ID = @p_REQ_ID) + ISNULL(@TOTAL_AMT_PARENT,0)
337
					--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 
338
					--	FROM dbo.PL_REQUEST_DOC_DT PRDT
339
					--	LEFT JOIN dbo.CM_GOODS G ON G.GD_ID = PRDT.GOODS_ID
340
					--	WHERE REQ_ID = @p_REQ_ID) + ISNULL(@TOTAL_AMT_PARENT,0)
341
					IF (ISNULL(@LIMIT_VALUE_KT,10000000)<@TOTAL_AMT OR EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
342
					BEGIN
343
          SET @SUB_PROCESS = ''
344
          IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000006')
345
          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))
346
          BEGIN
347
            SET @SUB_PROCESS = 'DVCM/DVDC'
348
          END
349
          ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000006'))
350
          BEGIN
351
            SET @SUB_PROCESS = 'DVCM'
352
          END
353
          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))
354
          BEGIN
355
            SET @SUB_PROCESS = 'DVDC'
356
          END
357
					    INSERT INTO dbo.PL_REQUEST_PROCESS
358
						(
359
							REQ_ID,
360
							PROCESS_ID,
361
							STATUS,
362
							ROLE_USER,
363
							BRANCH_ID,
364
							CHECKER_ID,
365
							APPROVE_DT,
366
							PARENT_PROCESS_ID,
367
							IS_LEAF,
368
							COST_ID,
369
							DVDM_ID,
370
							NOTES,
371
							IS_HAS_CHILD,
372
              SUB_PROCESS_ID
373
						)
374
						VALUES
375
						(   @p_REQ_ID,    -- REQ_ID - varchar(15)
376
							'KT',       -- PROCESS_ID - varchar(10)
377
							'U',          -- STATUS - varchar(5)
378
							@ROLE_KT,       -- ROLE_USER - varchar(50)
379
							'',           -- BRANCH_ID - varchar(15)
380
							'',           -- CHECKER_ID - varchar(15)
381
							NULL,         -- APPROVE_DT - datetime
382
							@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
383
							'N',          -- IS_LEAF - varchar(1)
384
							'',           -- COST_ID - varchar(15)
385
							@DVDM_KT, N'Chờ phòng kế toán xác nhận', 1,
386

    
387
							-- DVDM_ID - varchar(15)
388
							@SUB_PROCESS);
389

    
390
						SET @STEP_PARENT='KT'
391
					END	
392
				END
393

    
394
    --- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
395
		DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0), @TOAL_AMT_REQ DECIMAL(18,0)
396
		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)
397
		SET @TOAL_AMT_REQ =(SELECT ISNULL(SUM(TOTAL_AMT),0) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID)
398
		---END LUCTV
399

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

    
457
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
458
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
459
				END
460

    
461
				FETCH NEXT FROM lstCostCenter
462
				INTO @COST_ID;
463
			END;
464
			CLOSE lstCostCenter;
465
			DEALLOCATE lstCostCenter;
466
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
467
				SET @STEP_PARENT = 'DVCM';
468
		END;
469

    
470
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
471
		--Có điều chuyển NS
472
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
473
		BEGIN
474
				
475
			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))
476
					--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)
477
          ))	
478
			BEGIN
479

    
480
			DECLARE lstTransfer CURSOR FOR
481
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
482
					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
483
					--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)
484
--					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
485
--						LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
486
--						WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
487

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

    
562
		-- Đầu mối nhận
563

    
564
		DECLARE @TABLE_TRANFER TABLE
565
		(
566
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
567
		)
568
		DECLARE @TABLE_TRANFER_APP TABLE
569
		(
570
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
571
		)
572

    
573

    
574

    
575
		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
576

    
577
		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,'')) )
578
		BEGIN
579
			SET @IS_NOIBO=0
580
		END
581
		ELSE
582
			SET  @IS_NOIBO=1
583

    
584

    
585
		IF(@IS_NOIBO=1)
586
		BEGIN
587
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
588
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
589

    
590

    
591
	
592
		
593

    
594
		INSERT INTO @TABLE_TRANFER
595
		(
596
		    TRADE_ID,
597
			TOTAL_TRANFER
598
		)
599
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
600
		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
601

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

    
605
	---- Tính lũy kế phê duyệt
606
		INSERT INTO @TABLE_TRANFER_APP
607
		(
608
		    TRADE_ID,
609
		    TOTAL_APP
610
		)
611
		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 (
612
		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'
613
		)
614
		GROUP BY FR_TRADE_ID
615
		
616
		IF(EXISTS(
617
		SELECT BT.TRADE_ID FROM @TABLE_TRANFER BT 
618
		LEFT JOIN @TABLE_TRANFER_APP BTA ON BTA.TRADE_ID = BT.TRADE_ID
619
		WHERE ISNULL(BT.TOTAL_TRANFER,0) + ISNULL(BTA.TOTAL_APP,0) > @LIMIT_MAX
620
		))
621
		BEGIN
622
			SET @OVER_LIMT=1
623
		END
624
		ELSE
625
			SET @OVER_LIMT =0
626

    
627
		END
628
		
629

    
630
		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
631
		BEGIN
632

    
633
		DECLARE lstTransfer CURSOR FOR
634
		SELECT TO_DVDM_ID
635
		FROM dbo.PL_REQUEST_TRANSFER
636
		WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>'' AND TO_DVDM_ID <>'DM0000000000048'
637
								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
638
	
639
		GROUP BY TO_DVDM_ID;
640
		OPEN lstTransfer;
641
		FETCH NEXT FROM lstTransfer
642
		INTO @DVDM_ID;
643
		WHILE @@FETCH_STATUS = 0
644
		BEGIN
645
			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') )
646
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
647
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
648
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
649
		
650
			BEGIN
651
			INSERT INTO dbo.PL_REQUEST_PROCESS
652
			(
653
				REQ_ID,
654
				PROCESS_ID,
655
				STATUS,
656
				ROLE_USER,
657
				BRANCH_ID,
658
				CHECKER_ID,
659
				APPROVE_DT,
660
				PARENT_PROCESS_ID,
661
				IS_LEAF,
662
				COST_ID,
663
				DVDM_ID,
664
				NOTES,
665
				IS_HAS_CHILD
666
			)
667
			VALUES
668
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
669
				'DVDM_DC',    -- PROCESS_ID - varchar(10)
670
				'U',          -- STATUS - varchar(5)
671
				'GDDV',       -- ROLE_USER - varchar(50)
672
				'',           -- BRANCH_ID - varchar(15)
673
				'',           -- CHECKER_ID - varchar(15)
674
				NULL,         -- APPROVE_DT - datetime
675
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
676
				'N',          -- IS_LEAF - varchar(1)
677
				'',           -- COST_ID - varchar(15)
678
				@DVDM_ID,     -- DVDM_ID - varchar(15)
679
				N'Chờ đơn vị đầu mối quản lý NS nhận xác nhận', 1);
680
			END
681
			FETCH NEXT FROM lstTransfer
682
			INTO @DVDM_ID;
683
		END;
684
		CLOSE lstTransfer;
685
		DEALLOCATE lstTransfer;
686

    
687

    
688
		IF (EXISTS(
689
  			SELECT FR_BRN_ID
690
  			FROM dbo.PL_REQUEST_TRANSFER
691
  			WHERE REQ_DOC_ID = @p_REQ_ID
692
  					AND FR_BRN_ID <> @BRANCH_CREATE
693
  					AND FR_DEP_ID <> @DEP_CREATE
694
    ))
695
		BEGIN
696
			-- Đầu mối cho
697
			DECLARE lstTransfer CURSOR FOR
698
			SELECT FR_DVDM_ID
699
			FROM dbo.PL_REQUEST_TRANSFER
700
			WHERE REQ_DOC_ID = @p_REQ_ID
701
					AND FR_BRN_ID <> @BRANCH_CREATE
702
					AND FR_DEP_ID <> @DEP_CREATE
703
					AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
704
					AND NOT EXISTS
705
			(
706
				SELECT *
707
				FROM dbo.PL_REQUEST_PROCESS
708
				WHERE REQ_ID = @p_REQ_ID
709
						AND PROCESS_ID = 'DVDM_DC'
710
						AND DVDM_ID = FR_DVDM_ID
711
			)
712
			--- LUCTV 2022816
713
			AND (FR_DVDM_ID <>'DM0000000000048'
714
								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
715
	
716
			GROUP BY FR_DVDM_ID;
717
			OPEN lstTransfer;
718
			FETCH NEXT FROM lstTransfer
719
			INTO @DVDM_ID;
720
			WHILE @@FETCH_STATUS = 0
721
			BEGIN
722
			IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND 
723
			(ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') ) 
724
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
725
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
726
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
727
			BEGIN
728
				INSERT INTO dbo.PL_REQUEST_PROCESS
729
				(
730
					REQ_ID,
731
					PROCESS_ID,
732
					STATUS,
733
					ROLE_USER,
734
					BRANCH_ID,
735
					CHECKER_ID,
736
					APPROVE_DT,
737
					PARENT_PROCESS_ID,
738
					IS_LEAF,
739
					COST_ID,
740
					DVDM_ID,
741
					NOTES,
742
					IS_HAS_CHILD
743
				)
744
				VALUES
745
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
746
					'DVDM_DC',    -- PROCESS_ID - varchar(10)
747
					'U',          -- STATUS - varchar(5)
748
					'GDDV',       -- ROLE_USER - varchar(50)
749
					'',           -- BRANCH_ID - varchar(15)
750
					'',           -- CHECKER_ID - varchar(15)
751
					NULL,         -- APPROVE_DT - datetime
752
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
753
					'N',          -- IS_LEAF - varchar(1)
754
					'',           -- COST_ID - varchar(15)
755
					@DVDM_ID,     -- DVDM_ID - varchar(15)
756
					N'Chờ đơn vị đầu mối xác nhận', 0);
757
			END
758
				FETCH NEXT FROM lstTransfer
759
				INTO @DVDM_ID;
760
			END;
761
			CLOSE lstTransfer;
762
			DEALLOCATE lstTransfer;
763
		END;
764

    
765
  	IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
766
  		SET @STEP_PARENT='DVDM_DC'
767

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

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

    
861
		--SET @STEP_CURR = 'DVC';
862
		--SET @STEP_PARENT = 'DVC';
863
		--END
864

    
865
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
866
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
867
		BEGIN
868
		SET @IS_NEXT =
869
		(
870
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
871
		);
872

    
873

    
874

    
875
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
876
		BEGIN
877

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

    
925
			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))
926
			BEGIN
927
				INSERT INTO dbo.PL_REQUEST_PROCESS
928
				(
929
					REQ_ID,
930
					PROCESS_ID,
931
					STATUS,
932
					ROLE_USER,
933
					BRANCH_ID,
934
					CHECKER_ID,
935
					APPROVE_DT,
936
					PARENT_PROCESS_ID,
937
					IS_LEAF,
938
					COST_ID,
939
					DVDM_ID,
940
					NOTES,IS_HAS_CHILD
941
				)
942
				VALUES
943
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
944
					'GDK_TT',        -- PROCESS_ID - varchar(10)
945
					'U',        -- STATUS - varchar(5)
946
					'GDK',        -- ROLE_USER - varchar(50)
947
					'',        -- BRANCH_ID - varchar(15)
948
					'',        -- CHECKER_ID - varchar(15)
949
					NULL, -- APPROVE_DT - datetime
950
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
951
					'N',        -- IS_LEAF - varchar(1)
952
					'',        -- COST_ID - varchar(15)
953
					@DVDM_CDT ,
954
					N'Chờ Giám đốc khối phê duyệt chỉ định thầu',
955
					0        -- DVDM_ID - varchar(15)
956
					)
957
									
958
			END
959
			FETCH NEXT FROM lstCostCenter
960
			INTO @DVDM_ID, @TOTAL_AMT_GD;
961
			----- LUCTV 02.04.2023 BỔ SUNG VÀO QUY TRÌNH RULE TỜ TRÌNH CÓ GIÁ TRỊ >100TR SẼ PHẢI THÔNG QUA GĐK TÀI CHÍNH VÀ GĐK HỖ TRỢ
962
			IF(@TOAL_AMT_REQ >100000000 AND NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@DVDM_KHT))
963
			INSERT INTO dbo.PL_REQUEST_PROCESS
964
				(
965
					REQ_ID,
966
					PROCESS_ID,
967
					STATUS,
968
					ROLE_USER,
969
					BRANCH_ID,
970
					CHECKER_ID,
971
					APPROVE_DT,
972
					PARENT_PROCESS_ID,
973
					IS_LEAF,
974
					COST_ID,
975
					DVDM_ID,
976
					NOTES,
977
					IS_HAS_CHILD
978
				)
979
				VALUES
980
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
981
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
982
					'U',                                       -- STATUS - varchar(5)
983
					'GDK',                                     -- ROLE_USER - varchar(50)
984
					'',                                        -- BRANCH_ID - varchar(15)
985
					'',                                        -- CHECKER_ID - varchar(15)
986
					NULL,                                      -- APPROVE_DT - datetime
987
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
988
					'N',                                       -- IS_LEAF - varchar(1)
989
					'',                                        -- COST_ID - varchar(15)
990
					@DVDM_KHT, N'Chờ Giám đốc khối hỗ trợ phê duyệt', 0 -- DVDM_ID - varchar(15)
991
					);
992
			IF(@TOAL_AMT_REQ >100000000 AND NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDK' AND DVDM_ID=@DVDM_KTC))
993
			INSERT INTO dbo.PL_REQUEST_PROCESS
994
				(
995
					REQ_ID,
996
					PROCESS_ID,
997
					STATUS,
998
					ROLE_USER,
999
					BRANCH_ID,
1000
					CHECKER_ID,
1001
					APPROVE_DT,
1002
					PARENT_PROCESS_ID,
1003
					IS_LEAF,
1004
					COST_ID,
1005
					DVDM_ID,
1006
					NOTES,
1007
					IS_HAS_CHILD
1008
				)
1009
				VALUES
1010
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
1011
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
1012
					'U',                                       -- STATUS - varchar(5)
1013
					'GDK',                                     -- ROLE_USER - varchar(50)
1014
					'',                                        -- BRANCH_ID - varchar(15)
1015
					'',                                        -- CHECKER_ID - varchar(15)
1016
					NULL,                                      -- APPROVE_DT - datetime
1017
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
1018
					'N',                                       -- IS_LEAF - varchar(1)
1019
					'',                                        -- COST_ID - varchar(15)
1020
					@DVDM_KTC, N'Chờ Giám đốc khối tài chính phê duyệt', 0 -- DVDM_ID - varchar(15)
1021
					);
1022
			----- END LUCTV 02.04.2023
1023
			SET @IS_NEXT =
1024
			(
1025
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
1026
			);
1027
			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)
1028
			BEGIN
1029
				SET @IS_NEXT=1
1030
			END
1031
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
1032
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
1033
			BEGIN
1034
				SET @STEP_PARENT='GDK_TT'	
1035
			END	
1036
			--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)
1037

    
1038
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
1039
			BEGIN
1040

    
1041
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
1042
				BEGIN
1043
					DECLARE lstCostCenter CURSOR FOR
1044
					SELECT DVDM_ID,
1045
						   TOTAL_AMT
1046
					FROM @DATA_DVDM WHERE IS_PTGD=1 AND NOT 
1047
					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) ;
1048
					OPEN lstCostCenter;
1049
					FETCH NEXT FROM lstCostCenter
1050
					INTO @DVDM_ID,
1051
						 @TOTAL_AMT_GD;
1052
					WHILE @@FETCH_STATUS = 0
1053
					BEGIN
1054
						INSERT INTO dbo.PL_REQUEST_PROCESS
1055
						(
1056
							REQ_ID,
1057
							PROCESS_ID,
1058
							STATUS,
1059
							ROLE_USER,
1060
							BRANCH_ID,
1061
							CHECKER_ID,
1062
							APPROVE_DT,
1063
							PARENT_PROCESS_ID,
1064
							IS_LEAF,
1065
							COST_ID,
1066
							DVDM_ID,
1067
							NOTES,
1068
							IS_HAS_CHILD
1069
						)
1070
						VALUES
1071
						(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1072
							'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1073
							'U',                                                -- STATUS - varchar(5)
1074
							'PTGD',                                             -- ROLE_USER - varchar(50)
1075
							'',                                                 -- BRANCH_ID - varchar(15)
1076
							'',                                                 -- CHECKER_ID - varchar(15)
1077
							NULL,                                               -- APPROVE_DT - datetime
1078
							@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1079
							'N',                                                -- IS_LEAF - varchar(1)
1080
							'',                                                 -- COST_ID - varchar(15)
1081
							@DVDM_ID, N'Chờ phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1082
							);
1083
					
1084
						FETCH NEXT FROM lstCostCenter
1085
						INTO @DVDM_ID,
1086
							 @TOTAL_AMT_GD;
1087
				END;
1088
				CLOSE lstCostCenter;
1089
				DEALLOCATE lstCostCenter;
1090

    
1091
				SET @IS_NEXT =
1092
				(
1093
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1094
				);
1095
				END --- KẾT THÚC VIỆC KIỂM TRA KHỐI ĐÓ CÓ PHÓ TỔNG
1096

    
1097
				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'))
1098
				BEGIN
1099
					INSERT INTO dbo.PL_REQUEST_PROCESS
1100
					(
1101
						REQ_ID,
1102
						PROCESS_ID,
1103
						STATUS,
1104
						ROLE_USER,
1105
						BRANCH_ID,
1106
						CHECKER_ID,
1107
						APPROVE_DT,
1108
						PARENT_PROCESS_ID,
1109
						IS_LEAF,
1110
						COST_ID,
1111
						DVDM_ID,
1112
						NOTES,
1113
						IS_HAS_CHILD
1114
					)
1115
					VALUES
1116
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1117
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1118
						'U',                                                -- STATUS - varchar(5)
1119
						'PTGD',                                             -- ROLE_USER - varchar(50)
1120
						'',                                                 -- BRANCH_ID - varchar(15)
1121
						'',                                                 -- CHECKER_ID - varchar(15)
1122
						NULL,                                               -- APPROVE_DT - datetime
1123
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1124
						'N',                                                -- IS_LEAF - varchar(1)
1125
						'',                                                 -- COST_ID - varchar(15)
1126
						'DM0000000000014', N'Chờ Phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1127
						);
1128
				END
1129
				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)
1130
				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
1131
				BEGIN
1132
					INSERT INTO dbo.PL_REQUEST_PROCESS
1133
									(
1134
										REQ_ID,
1135
										PROCESS_ID,
1136
										STATUS,
1137
										ROLE_USER,
1138
										BRANCH_ID,
1139
										CHECKER_ID,
1140
										APPROVE_DT,
1141
										PARENT_PROCESS_ID,
1142
										IS_LEAF,
1143
										COST_ID,
1144
										DVDM_ID,
1145
										NOTES,IS_HAS_CHILD
1146
									)
1147
									VALUES
1148
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1149
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1150
										'U',        -- STATUS - varchar(5)
1151
										'PTGD',        -- ROLE_USER - varchar(50)
1152
										'',        -- BRANCH_ID - varchar(15)
1153
										'',        -- CHECKER_ID - varchar(15)
1154
										NULL, -- APPROVE_DT - datetime
1155
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1156
										'N',        -- IS_LEAF - varchar(1)
1157
										'',        -- COST_ID - varchar(15)
1158
										@DVDM_CDT ,
1159
										N'Chờ Phó Tổng giám đốc khối phê duyệt',
1160
										0        -- DVDM_ID - varchar(15)
1161
					 )	
1162
				END
1163
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1164
				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)
1165
				BEGIN
1166
					SET @IS_NEXT=1
1167
				END
1168
				ELSE -- LUCTV 03.11.2022 NEU KHONG THOA DIEU KIEN THI CHO IS NEXT =0
1169
				BEGIN
1170
					SET @IS_NEXT=0
1171
				END
1172
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1173
				BEGIN
1174
					SET @STEP_PARENT='PTGDK_TT'	
1175
					SET @IS_NEXT = (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD')) -- LUCTV 15.11.2022 FIX NEU WORKFLOW CO PTGDK THI CAN PHAI CHECK XEM HAN MUC CO DI QUA TGD HAY KHONG
1176
				END
1177
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1178
				BEGIN
1179
					---- THEM THU KI TGD
1180
					INSERT INTO dbo.PL_REQUEST_PROCESS
1181
					(
1182
						REQ_ID,
1183
						PROCESS_ID,
1184
						STATUS,
1185
						ROLE_USER,
1186
						BRANCH_ID,
1187
						CHECKER_ID,
1188
						APPROVE_DT,
1189
						PARENT_PROCESS_ID,
1190
						IS_LEAF,
1191
						COST_ID,
1192
						DVDM_ID,
1193
						NOTES,
1194
						IS_HAS_CHILD
1195
					)
1196
					VALUES
1197
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1198
						'TKTGD',                               -- PROCESS_ID - varchar(10)
1199
						'U',                                 -- STATUS - varchar(5)
1200
						'TKTGD',                               -- ROLE_USER - varchar(50)
1201
						'',                                  -- BRANCH_ID - varchar(15)
1202
						'',                                  -- CHECKER_ID - varchar(15)
1203
						NULL,                                -- APPROVE_DT - datetime
1204
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1205
						'N',                                 -- IS_LEAF - varchar(1)
1206
						'',                                  -- COST_ID - varchar(15)
1207
						'', N'Chờ Thư Ký Tổng giám đốc xác nhận', 1 -- DVDM_ID - varchar(15)
1208
						);
1209
					SET @STEP_PARENT = 'TKTGD';
1210
					---- END THU KY TGD
1211
					INSERT INTO dbo.PL_REQUEST_PROCESS
1212
					(
1213
						REQ_ID,
1214
						PROCESS_ID,
1215
						STATUS,
1216
						ROLE_USER,
1217
						BRANCH_ID,
1218
						CHECKER_ID,
1219
						APPROVE_DT,
1220
						PARENT_PROCESS_ID,
1221
						IS_LEAF,
1222
						COST_ID,
1223
						DVDM_ID,
1224
						NOTES,
1225
						IS_HAS_CHILD
1226
					)
1227
					VALUES
1228
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1229
						'TGD',                               -- PROCESS_ID - varchar(10)
1230
						'U',                                 -- STATUS - varchar(5)
1231
						'TGD',                               -- ROLE_USER - varchar(50)
1232
						'',                                  -- BRANCH_ID - varchar(15)
1233
						'',                                  -- CHECKER_ID - varchar(15)
1234
						NULL,                                -- APPROVE_DT - datetime
1235
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1236
						'N',                                 -- IS_LEAF - varchar(1)
1237
						'',                                  -- COST_ID - varchar(15)
1238
						'', N'Chờ Tổng giám đốc phê duyệt', 0 -- DVDM_ID - varchar(15)
1239
						);
1240
					SET @STEP_PARENT = 'TGD';
1241
					SET @IS_NEXT =
1242
				(
1243
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')
1244
				);
1245
					IF(@IS_NEXT=1)
1246
					BEGIN
1247
					---- THEM THU KI HDQT
1248
					INSERT INTO dbo.PL_REQUEST_PROCESS
1249
					(
1250
						REQ_ID,
1251
						PROCESS_ID,
1252
						STATUS,
1253
						ROLE_USER,
1254
						BRANCH_ID,
1255
						CHECKER_ID,
1256
						APPROVE_DT,
1257
						PARENT_PROCESS_ID,
1258
						IS_LEAF,
1259
						COST_ID,
1260
						DVDM_ID,
1261
						NOTES,
1262
						IS_HAS_CHILD
1263
					)
1264
					VALUES
1265
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1266
						'TKHDQT',                               -- PROCESS_ID - varchar(10)
1267
						'U',                                 -- STATUS - varchar(5)
1268
						'TKHDQT',                               -- ROLE_USER - varchar(50)
1269
						'',                                  -- BRANCH_ID - varchar(15)
1270
						'',                                  -- CHECKER_ID - varchar(15)
1271
						NULL,                                -- APPROVE_DT - datetime
1272
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1273
						'N',                                 -- IS_LEAF - varchar(1)
1274
						'',                                  -- COST_ID - varchar(15)
1275
						'', N'Chờ Văn Phòng Thư Ký HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
1276
						);
1277
					SET @STEP_PARENT = 'TKHDQT';
1278
					---- END THU KY HDQT
1279
						INSERT INTO dbo.PL_REQUEST_PROCESS
1280
					(
1281
						REQ_ID,
1282
						PROCESS_ID,
1283
						STATUS,
1284
						ROLE_USER,
1285
						BRANCH_ID,
1286
						CHECKER_ID,
1287
						APPROVE_DT,
1288
						PARENT_PROCESS_ID,
1289
						IS_LEAF,
1290
						COST_ID,
1291
						DVDM_ID,
1292
						NOTES,
1293
						IS_HAS_CHILD
1294
					)
1295
					VALUES
1296
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1297
						'HDQT',                               -- PROCESS_ID - varchar(10)
1298
						'U',                                 -- STATUS - varchar(5)
1299
						'HDQT',                               -- ROLE_USER - varchar(50)
1300
						'',                                  -- BRANCH_ID - varchar(15)
1301
						'',                                  -- CHECKER_ID - varchar(15)
1302
						NULL,                                -- APPROVE_DT - datetime
1303
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1304
						'N',                                 -- IS_LEAF - varchar(1)
1305
						'',                                  -- COST_ID - varchar(15)
1306
						'', N'Chờ Chủ Tịch Hội Đồng Quản Trị phê duyệt', 0 -- DVDM_ID - varchar(15)
1307
						);
1308
					SET @STEP_PARENT = 'HDQT';
1309
					END
1310
				END;
1311
			--ELSE
1312
			--BEGIN
1313

    
1314
			--END
1315
		
1316
			END;
1317

    
1318
		END;
1319
		END
1320
				
1321
		END
1322
		-- Nếu là tờ trình căn cứ và tồn tại hình thức chỉ định thầu
1323
		ELSE IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID AND TRADE_TYPE = 'CDT')
1324
		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'))
1325
		BEGIN
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
				COST_ID,
1338
				DVDM_ID,
1339
				NOTES,IS_HAS_CHILD
1340
			)
1341
			VALUES
1342
			(   
1343
				@p_REQ_ID,
1344
				'GDK_TT',
1345
				'U',
1346
				'GDK',
1347
				'',
1348
				'',
1349
				NULL,
1350
				@STEP_PARENT,
1351
				'N',
1352
				'',
1353
				@DVDM_CDT,
1354
				N'Chờ giám đốc khối xác nhận',
1355
				0
1356
			)
1357
			SET @STEP_PARENT = 'GDK_TT'
1358
			
1359
			-- Nếu tổng giá trị chỉ định thầu lớn hơn hạn mức phê duyệt của GDK
1360
			IF ((SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK')) = 1)
1361
			BEGIN
1362
				INSERT INTO dbo.PL_REQUEST_PROCESS
1363
				(
1364
					REQ_ID,
1365
					PROCESS_ID,
1366
					STATUS,
1367
					ROLE_USER,
1368
					BRANCH_ID,
1369
					CHECKER_ID,
1370
					APPROVE_DT,
1371
					PARENT_PROCESS_ID,
1372
					IS_LEAF,
1373
					COST_ID,
1374
					DVDM_ID,
1375
					NOTES,
1376
					IS_HAS_CHILD
1377
				)
1378
				VALUES
1379
				(   
1380
					@p_REQ_ID,
1381
					'PTGDK_TT',
1382
					'U',
1383
					'PTGD',
1384
					'',
1385
					'',
1386
					NULL,
1387
					@STEP_PARENT,
1388
					'N',
1389
					'',
1390
					@DVDM_CDT,
1391
					N'Chờ phó tổng giám đốc khối xác nhận',
1392
					0
1393
				)
1394
				SET @STEP_PARENT = 'PTGDK_TT'
1395
			END
1396
		END
1397
		
1398
		INSERT INTO dbo.PL_REQUEST_PROCESS
1399
		(
1400
			REQ_ID,
1401
			PROCESS_ID,
1402
			STATUS,
1403
			ROLE_USER,
1404
			BRANCH_ID,
1405
			CHECKER_ID,
1406
			APPROVE_DT,
1407
			PARENT_PROCESS_ID,
1408
			IS_LEAF,
1409
			NOTES
1410
		)
1411
		VALUES
1412
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1413
			'APPROVE', -- PROCESS_ID - varchar(10)
1414
			'U',       -- STATUS - varchar(5)
1415
			'',        -- ROLE_USER - varchar(50)
1416
			'',        -- BRANCH_ID - varchar(15)
1417
			'',        -- CHECKER_ID - varchar(15)
1418
			NULL,      -- APPROVE_DT - datetime
1419
			@STEP_PARENT, 'Y', N'Hoàn tất');
1420

    
1421

    
1422

    
1423
		IF @@Error <> 0
1424
			GOTO ABORT;
1425

    
1426

    
1427

    
1428
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1429
		SET @PROCESS_ID_CURR =
1430
		(
1431
			SELECT TOP 1
1432
				   PROCESS_ID
1433
			FROM dbo.PL_REQUEST_PROCESS
1434
			WHERE REQ_ID = @p_REQ_ID
1435
				  AND PARENT_PROCESS_ID = 'APPNEW'
1436
		);
1437

    
1438
		UPDATE dbo.PL_REQUEST_PROCESS
1439
		SET STATUS = 'C'
1440
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1441
			  AND REQ_ID = @p_REQ_ID;
1442
		UPDATE dbo.PL_REQUEST_DOC
1443
		SET AUTH_STATUS = @p_AUTH_STATUS,
1444
			APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT,103),
1445
			CHECKER_ID = @p_CHECKER_ID,
1446
			PROCESS_ID = @PROCESS_ID_CURR
1447
		WHERE REQ_ID = @p_REQ_ID;
1448

    
1449
		UPDATE dbo.PL_REQUEST_DOC_DT
1450
		SET CHECKER_ID=@p_CHECKER_ID,
1451
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1452
		WHERE REQ_ID = @p_REQ_ID;
1453

    
1454
		INSERT INTO dbo.PL_PROCESS
1455
		(
1456
			REQ_ID,
1457
			PROCESS_ID,
1458
			CHECKER_ID,
1459
			APPROVE_DT,
1460
			PROCESS_DESC,
1461
			NOTES
1462
		)
1463
		VALUES
1464
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1465
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1466
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1467
			CONVERT(DATETIME, @p_APPROVE_DT,103),                                        -- APPROVE_DT - datetime
1468
			@p_PROCESS_DESC, 
1469
			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)
1470
			);
1471
		IF (EXISTS
1472
		(
1473
			SELECT REQ_ID
1474
			FROM dbo.PL_REQUEST_DOC
1475
			WHERE REQ_ID = @p_REQ_ID
1476
				  AND PROCESS_ID = 'APPROVE'
1477
		)
1478
		   )
1479
		BEGIN
1480
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1481
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1482
			SET @Result = '0';
1483
		END;
1484
		SET @Result = '1';
1485
END
1486
COMMIT TRANSACTION;
1487
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1488
BEGIN
1489
	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;
1490
	RETURN '0';
1491
END
1492
ELSE
1493
BEGIN
1494
	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
1495
	RETURN '4'
1496
END
1497
ABORT:
1498
BEGIN
1499

    
1500
    ROLLBACK TRANSACTION;
1501
    SELECT '-1' AS Result,
1502
           '' ROLE_NOTIFI,
1503
           '' ErrorDesc;
1504
    RETURN '-1';
1505
END;
1506

    
1507

    
1508

    
1509

    
1510

    
1511

    
1512