Project

General

Profile

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

Luc Tran Van, 04/02/2023 11:12 PM

 
1
USE [gAMSPro_BVB_v3_FINAL]
2
GO
3
/****** Object:  StoredProcedure [dbo].[PL_REQUEST_DOC_App]    Script Date: 4/2/2023 11:06:35 AM ******/
4
SET ANSI_NULLS ON
5
GO
6
SET QUOTED_IDENTIFIER ON
7
GO
8
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_App]
9
    @p_REQ_ID VARCHAR(15) = NULL,
10
    @p_AUTH_STATUS VARCHAR(1) = NULL,
11
    @p_CHECKER_ID VARCHAR(15) = NULL,
12
    @p_APPROVE_DT VARCHAR(20) = NULL,
13
    @p_ROLE_LOGIN VARCHAR(50) = NULL,
14
    @p_BRANCH_LOGIN VARCHAR(15),
15
    @p_PROCESS_DESC NVARCHAR(500)
16
AS
17

    
18
BEGIN TRANSACTION;
19
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
20
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='R' AND REQ_ID =@p_REQ_ID))
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' đ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
24
	RETURN '-1'
25
END
26
--
27
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='A'))
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'đã được bạn phê duyệt trước đó. Vui lòng đợi các cấp phê duyệt tiếp theo!' ErrorDesc
31
	RETURN '-1'
32
END
33
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
34
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('KT','DVCM','DVDC','TC') AND REQ_ID =@p_REQ_ID))
35
BEGIN
36
	ROLLBACK TRANSACTION
37
	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
38
	RETURN '-1'
39
END
40
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE PROCESS_ID IN ('GDK_TT') AND REQ_ID =@p_REQ_ID))
41
BEGIN
42
	ROLLBACK TRANSACTION
43
	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
44
	RETURN '-1'
45
END
46
--SET @p_APPROVE_DT = @p_APPROVE_DT 
47

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

    
133
	DELETE FROM dbo.PL_REQUEST_PROCESS
134
	WHERE REQ_ID = @p_REQ_ID;
135
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
136
	@BRANCH_CREATE_TYPE VARCHAR(10)
137

    
138

    
139
	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
140

    
141
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
142
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
143

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

    
252
    UPDATE prdd
253
    SET prdd.AMT_APP = ISNULL(PL.AMT_APP,0),
254
    prdd.AMT_EXE = ISNULL(PL.AMT_EXE,0),
255
    prdd.AMT_ETM = ISNULL(PL.AMT_ETM,0),
256
    prdd.AMT_TF = ISNULL(PL.AMT_TF,0),
257
    prdd.AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
258
    prdd.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_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 <> @p_REQ_ID)
271
    FROM PL_TRADEDETAIL PL 
272
    LEFT JOIN PL_REQUEST_DOC_DT prdd ON PL.TRADE_ID = prdd.TRADE_ID
273
    WHERE prdd.REQ_ID=@P_REQ_ID
274

    
275
    UPDATE prdd
276
    SET prdd.FR_AMT_APP = ISNULL(PL.AMT_APP,0),
277
    prdd.FR_AMT_EXE = ISNULL(PL.AMT_EXE,0),
278
    prdd.FR_AMT_ETM = ISNULL(PL.AMT_ETM,0),
279
    prdd.FR_AMT_TF = ISNULL(PL.AMT_TF,0),
280
    prdd.FR_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
281
    prdd.FR_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.FR_TRADE_ID
296
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
297

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

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

    
396
							-- DVDM_ID - varchar(15)
397
							@SUB_PROCESS);
398

    
399
						SET @STEP_PARENT='KT'
400
					END	
401
				END
402

    
403
    --- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
404
		DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
405
		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)
406
		---END LUCTV
407

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

    
465
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
466
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
467
				END
468

    
469
				FETCH NEXT FROM lstCostCenter
470
				INTO @COST_ID;
471
			END;
472
			CLOSE lstCostCenter;
473
			DEALLOCATE lstCostCenter;
474
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
475
				SET @STEP_PARENT = 'DVCM';
476
		END;
477

    
478
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
479
		--Có điều chuyển NS
480
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
481
		BEGIN
482
				
483
			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))
484
					--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)
485
          ))	
486
			BEGIN
487

    
488
			DECLARE lstTransfer CURSOR FOR
489
			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
490
					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
491
					--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)
492
--					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
493
--						LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
494
--						WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
495

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

    
570
		-- Đầu mối nhận
571

    
572
		DECLARE @TABLE_TRANFER TABLE
573
		(
574
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
575
		)
576
		DECLARE @TABLE_TRANFER_APP TABLE
577
		(
578
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
579
		)
580

    
581

    
582

    
583
		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
584

    
585
		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,'')) )
586
		BEGIN
587
			SET @IS_NOIBO=0
588
		END
589
		ELSE
590
			SET  @IS_NOIBO=1
591

    
592

    
593
		IF(@IS_NOIBO=1)
594
		BEGIN
595
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
596
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
597

    
598

    
599
	
600
		
601

    
602
		INSERT INTO @TABLE_TRANFER
603
		(
604
		    TRADE_ID,
605
			TOTAL_TRANFER
606
		)
607
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
608
		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
609

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

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

    
635
		END
636
		
637

    
638
		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
639
		BEGIN
640

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

    
695

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

    
773
  	IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
774
  		SET @STEP_PARENT='DVDM_DC'
775

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

    
828
		END;
829
		
830
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
831
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
832
		BEGIN
833
		SET @IS_NEXT =
834
		(
835
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
836
		);
837

    
838
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
839
		BEGIN
840

    
841
			DECLARE lstCostCenter CURSOR FOR
842
			SELECT DVDM_ID,
843
				   TOTAL_AMT
844
			FROM @DATA_DVDM
845
			WHERE IS_GDK=1;
846
			OPEN lstCostCenter;
847
			FETCH NEXT FROM lstCostCenter
848
			INTO @DVDM_ID,
849
				 @TOTAL_AMT_GD;
850
			WHILE @@FETCH_STATUS = 0
851
			BEGIN
852
				INSERT INTO dbo.PL_REQUEST_PROCESS
853
				(
854
					REQ_ID,
855
					PROCESS_ID,
856
					STATUS,
857
					ROLE_USER,
858
					BRANCH_ID,
859
					CHECKER_ID,
860
					APPROVE_DT,
861
					PARENT_PROCESS_ID,
862
					IS_LEAF,
863
					COST_ID,
864
					DVDM_ID,
865
					NOTES,
866
					IS_HAS_CHILD
867
				)
868
				VALUES
869
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
870
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
871
					'U',                                       -- STATUS - varchar(5)
872
					'GDK',                                     -- ROLE_USER - varchar(50)
873
					'',                                        -- BRANCH_ID - varchar(15)
874
					'',                                        -- CHECKER_ID - varchar(15)
875
					NULL,                                      -- APPROVE_DT - datetime
876
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
877
					'N',                                       -- IS_LEAF - varchar(1)
878
					'',                                        -- COST_ID - varchar(15)
879
					@DVDM_ID, N'Chờ Giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
880
					);
881
				FETCH NEXT FROM lstCostCenter
882
				INTO @DVDM_ID,
883
					 @TOTAL_AMT_GD;
884
			END;
885
			CLOSE lstCostCenter;
886
			DEALLOCATE lstCostCenter;
887
			----- 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Ợ
888
			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))
889
			BEGIN
890
			INSERT INTO dbo.PL_REQUEST_PROCESS
891
				(
892
					REQ_ID,
893
					PROCESS_ID,
894
					STATUS,
895
					ROLE_USER,
896
					BRANCH_ID,
897
					CHECKER_ID,
898
					APPROVE_DT,
899
					PARENT_PROCESS_ID,
900
					IS_LEAF,
901
					COST_ID,
902
					DVDM_ID,
903
					NOTES,
904
					IS_HAS_CHILD
905
				)
906
				VALUES
907
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
908
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
909
					'U',                                       -- STATUS - varchar(5)
910
					'GDK',                                     -- ROLE_USER - varchar(50)
911
					'',                                        -- BRANCH_ID - varchar(15)
912
					'',                                        -- CHECKER_ID - varchar(15)
913
					NULL,                                      -- APPROVE_DT - datetime
914
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
915
					'N',                                       -- IS_LEAF - varchar(1)
916
					'',                                        -- COST_ID - varchar(15)
917
					@DVDM_KHT, N'Chờ Giám đốc khối hỗ trợ phê duyệt', 0 -- DVDM_ID - varchar(15)
918
					);
919
			END
920
			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))
921
			BEGIN
922
			INSERT INTO dbo.PL_REQUEST_PROCESS
923
				(
924
					REQ_ID,
925
					PROCESS_ID,
926
					STATUS,
927
					ROLE_USER,
928
					BRANCH_ID,
929
					CHECKER_ID,
930
					APPROVE_DT,
931
					PARENT_PROCESS_ID,
932
					IS_LEAF,
933
					COST_ID,
934
					DVDM_ID,
935
					NOTES,
936
					IS_HAS_CHILD
937
				)
938
				VALUES
939
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
940
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
941
					'U',                                       -- STATUS - varchar(5)
942
					'GDK',                                     -- ROLE_USER - varchar(50)
943
					'',                                        -- BRANCH_ID - varchar(15)
944
					'',                                        -- CHECKER_ID - varchar(15)
945
					NULL,                                      -- APPROVE_DT - datetime
946
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
947
					'N',                                       -- IS_LEAF - varchar(1)
948
					'',                                        -- COST_ID - varchar(15)
949
					@DVDM_KTC, N'Chờ Giám đốc khối tài chính phê duyệt', 0 -- DVDM_ID - varchar(15)
950
					);
951
			
952
			END ----- END LUCTV 02.04.2023
953

    
954
			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))
955
			BEGIN
956
				INSERT INTO dbo.PL_REQUEST_PROCESS
957
				(
958
					REQ_ID,
959
					PROCESS_ID,
960
					STATUS,
961
					ROLE_USER,
962
					BRANCH_ID,
963
					CHECKER_ID,
964
					APPROVE_DT,
965
					PARENT_PROCESS_ID,
966
					IS_LEAF,
967
					COST_ID,
968
					DVDM_ID,
969
					NOTES,IS_HAS_CHILD
970
				)
971
				VALUES
972
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
973
					'GDK_TT',        -- PROCESS_ID - varchar(10)
974
					'U',        -- STATUS - varchar(5)
975
					'GDK',        -- ROLE_USER - varchar(50)
976
					'',        -- BRANCH_ID - varchar(15)
977
					'',        -- CHECKER_ID - varchar(15)
978
					NULL, -- APPROVE_DT - datetime
979
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
980
					'N',        -- IS_LEAF - varchar(1)
981
					'',        -- COST_ID - varchar(15)
982
					@DVDM_CDT ,
983
					N'Chờ Giám đốc khối phê duyệt chỉ định thầu',
984
					0        -- DVDM_ID - varchar(15)
985
					)
986
									
987
			END
988
			SET @IS_NEXT =
989
			(
990
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
991
			);
992
			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)
993
			BEGIN
994
				SET @IS_NEXT=1
995
			END
996
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
997
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
998
			BEGIN
999
				SET @STEP_PARENT='GDK_TT'	
1000
			END	
1001
			--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)
1002

    
1003
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
1004
			BEGIN
1005

    
1006
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
1007
				BEGIN
1008
					DECLARE lstCostCenter CURSOR FOR
1009
					SELECT DVDM_ID,
1010
						   TOTAL_AMT
1011
					FROM @DATA_DVDM WHERE IS_PTGD=1 AND NOT 
1012
					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) ;
1013
					OPEN lstCostCenter;
1014
					FETCH NEXT FROM lstCostCenter
1015
					INTO @DVDM_ID,
1016
						 @TOTAL_AMT_GD;
1017
					WHILE @@FETCH_STATUS = 0
1018
					BEGIN
1019
						INSERT INTO dbo.PL_REQUEST_PROCESS
1020
						(
1021
							REQ_ID,
1022
							PROCESS_ID,
1023
							STATUS,
1024
							ROLE_USER,
1025
							BRANCH_ID,
1026
							CHECKER_ID,
1027
							APPROVE_DT,
1028
							PARENT_PROCESS_ID,
1029
							IS_LEAF,
1030
							COST_ID,
1031
							DVDM_ID,
1032
							NOTES,
1033
							IS_HAS_CHILD
1034
						)
1035
						VALUES
1036
						(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1037
							'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1038
							'U',                                                -- STATUS - varchar(5)
1039
							'PTGD',                                             -- ROLE_USER - varchar(50)
1040
							'',                                                 -- BRANCH_ID - varchar(15)
1041
							'',                                                 -- CHECKER_ID - varchar(15)
1042
							NULL,                                               -- APPROVE_DT - datetime
1043
							@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1044
							'N',                                                -- IS_LEAF - varchar(1)
1045
							'',                                                 -- COST_ID - varchar(15)
1046
							@DVDM_ID, N'Chờ phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1047
							);
1048
					
1049
						FETCH NEXT FROM lstCostCenter
1050
						INTO @DVDM_ID,
1051
							 @TOTAL_AMT_GD;
1052
				END;
1053
				CLOSE lstCostCenter;
1054
				DEALLOCATE lstCostCenter;
1055

    
1056
				SET @IS_NEXT =
1057
				(
1058
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1059
				);
1060
				END --- KẾT THÚC VIỆC KIỂM TRA KHỐI ĐÓ CÓ PHÓ TỔNG
1061

    
1062
				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'))
1063
				BEGIN
1064
					INSERT INTO dbo.PL_REQUEST_PROCESS
1065
					(
1066
						REQ_ID,
1067
						PROCESS_ID,
1068
						STATUS,
1069
						ROLE_USER,
1070
						BRANCH_ID,
1071
						CHECKER_ID,
1072
						APPROVE_DT,
1073
						PARENT_PROCESS_ID,
1074
						IS_LEAF,
1075
						COST_ID,
1076
						DVDM_ID,
1077
						NOTES,
1078
						IS_HAS_CHILD
1079
					)
1080
					VALUES
1081
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
1082
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
1083
						'U',                                                -- STATUS - varchar(5)
1084
						'PTGD',                                             -- ROLE_USER - varchar(50)
1085
						'',                                                 -- BRANCH_ID - varchar(15)
1086
						'',                                                 -- CHECKER_ID - varchar(15)
1087
						NULL,                                               -- APPROVE_DT - datetime
1088
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
1089
						'N',                                                -- IS_LEAF - varchar(1)
1090
						'',                                                 -- COST_ID - varchar(15)
1091
						'DM0000000000014', N'Chờ Phó tổng giám đốc khối phê duyệt', 0 -- DVDM_ID - varchar(15)
1092
						);
1093
				END
1094
				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)
1095
				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
1096
				BEGIN
1097
					INSERT INTO dbo.PL_REQUEST_PROCESS
1098
									(
1099
										REQ_ID,
1100
										PROCESS_ID,
1101
										STATUS,
1102
										ROLE_USER,
1103
										BRANCH_ID,
1104
										CHECKER_ID,
1105
										APPROVE_DT,
1106
										PARENT_PROCESS_ID,
1107
										IS_LEAF,
1108
										COST_ID,
1109
										DVDM_ID,
1110
										NOTES,IS_HAS_CHILD
1111
									)
1112
									VALUES
1113
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1114
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1115
										'U',        -- STATUS - varchar(5)
1116
										'PTGD',        -- ROLE_USER - varchar(50)
1117
										'',        -- BRANCH_ID - varchar(15)
1118
										'',        -- CHECKER_ID - varchar(15)
1119
										NULL, -- APPROVE_DT - datetime
1120
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1121
										'N',        -- IS_LEAF - varchar(1)
1122
										'',        -- COST_ID - varchar(15)
1123
										@DVDM_CDT ,
1124
										N'Chờ Phó Tổng giám đốc khối phê duyệt',
1125
										0        -- DVDM_ID - varchar(15)
1126
					 )	
1127
				END
1128
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1129
				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)
1130
				BEGIN
1131
					SET @IS_NEXT=1
1132
				END
1133
				ELSE -- LUCTV 03.11.2022 NEU KHONG THOA DIEU KIEN THI CHO IS NEXT =0
1134
				BEGIN
1135
					SET @IS_NEXT=0
1136
				END
1137
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1138
				BEGIN
1139
					SET @STEP_PARENT='PTGDK_TT'	
1140
					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
1141
				END
1142
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1143
				BEGIN
1144
					---- THEM THU KI TGD
1145
					INSERT INTO dbo.PL_REQUEST_PROCESS
1146
					(
1147
						REQ_ID,
1148
						PROCESS_ID,
1149
						STATUS,
1150
						ROLE_USER,
1151
						BRANCH_ID,
1152
						CHECKER_ID,
1153
						APPROVE_DT,
1154
						PARENT_PROCESS_ID,
1155
						IS_LEAF,
1156
						COST_ID,
1157
						DVDM_ID,
1158
						NOTES,
1159
						IS_HAS_CHILD
1160
					)
1161
					VALUES
1162
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1163
						'TKTGD',                               -- PROCESS_ID - varchar(10)
1164
						'U',                                 -- STATUS - varchar(5)
1165
						'TKTGD',                               -- ROLE_USER - varchar(50)
1166
						'',                                  -- BRANCH_ID - varchar(15)
1167
						'',                                  -- CHECKER_ID - varchar(15)
1168
						NULL,                                -- APPROVE_DT - datetime
1169
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1170
						'N',                                 -- IS_LEAF - varchar(1)
1171
						'',                                  -- COST_ID - varchar(15)
1172
						'', N'Chờ Thư Ký Tổng giám đốc xác nhận', 1 -- DVDM_ID - varchar(15)
1173
						);
1174
					SET @STEP_PARENT = 'TKTGD';
1175
					---- END THU KY TGD
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
						'TGD',                               -- PROCESS_ID - varchar(10)
1195
						'U',                                 -- STATUS - varchar(5)
1196
						'TGD',                               -- 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ờ Tổng giám đốc phê duyệt', 0 -- DVDM_ID - varchar(15)
1204
						);
1205
					SET @STEP_PARENT = 'TGD';
1206
					SET @IS_NEXT =
1207
				(
1208
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')
1209
				);
1210
					IF(@IS_NEXT=1)
1211
					BEGIN
1212
					---- THEM THU KI HDQT
1213
					INSERT INTO dbo.PL_REQUEST_PROCESS
1214
					(
1215
						REQ_ID,
1216
						PROCESS_ID,
1217
						STATUS,
1218
						ROLE_USER,
1219
						BRANCH_ID,
1220
						CHECKER_ID,
1221
						APPROVE_DT,
1222
						PARENT_PROCESS_ID,
1223
						IS_LEAF,
1224
						COST_ID,
1225
						DVDM_ID,
1226
						NOTES,
1227
						IS_HAS_CHILD
1228
					)
1229
					VALUES
1230
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1231
						'TKHDQT',                               -- PROCESS_ID - varchar(10)
1232
						'U',                                 -- STATUS - varchar(5)
1233
						'TKHDQT',                               -- ROLE_USER - varchar(50)
1234
						'',                                  -- BRANCH_ID - varchar(15)
1235
						'',                                  -- CHECKER_ID - varchar(15)
1236
						NULL,                                -- APPROVE_DT - datetime
1237
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1238
						'N',                                 -- IS_LEAF - varchar(1)
1239
						'',                                  -- COST_ID - varchar(15)
1240
						'', N'Chờ Văn Phòng Thư Ký HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
1241
						);
1242
					SET @STEP_PARENT = 'TKHDQT';
1243
					---- END THU KY HDQT
1244
						INSERT INTO dbo.PL_REQUEST_PROCESS
1245
					(
1246
						REQ_ID,
1247
						PROCESS_ID,
1248
						STATUS,
1249
						ROLE_USER,
1250
						BRANCH_ID,
1251
						CHECKER_ID,
1252
						APPROVE_DT,
1253
						PARENT_PROCESS_ID,
1254
						IS_LEAF,
1255
						COST_ID,
1256
						DVDM_ID,
1257
						NOTES,
1258
						IS_HAS_CHILD
1259
					)
1260
					VALUES
1261
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1262
						'HDQT',                               -- PROCESS_ID - varchar(10)
1263
						'U',                                 -- STATUS - varchar(5)
1264
						'HDQT',                               -- ROLE_USER - varchar(50)
1265
						'',                                  -- BRANCH_ID - varchar(15)
1266
						'',                                  -- CHECKER_ID - varchar(15)
1267
						NULL,                                -- APPROVE_DT - datetime
1268
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1269
						'N',                                 -- IS_LEAF - varchar(1)
1270
						'',                                  -- COST_ID - varchar(15)
1271
						'', N'Chờ Chủ Tịch Hội Đồng Quản Trị phê duyệt', 0 -- DVDM_ID - varchar(15)
1272
						);
1273
					SET @STEP_PARENT = 'HDQT';
1274
					END
1275
				END;
1276
			--ELSE
1277
			--BEGIN
1278

    
1279
			--END
1280
		
1281
			END;
1282

    
1283
		END;
1284
		END
1285
				
1286
		END
1287
		-- Nếu là tờ trình căn cứ và tồn tại hình thức chỉ định thầu
1288
		ELSE IF (EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID AND TRADE_TYPE = 'CDT')
1289
		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'))
1290
		BEGIN
1291
			INSERT INTO dbo.PL_REQUEST_PROCESS
1292
			(
1293
				REQ_ID,
1294
				PROCESS_ID,
1295
				STATUS,
1296
				ROLE_USER,
1297
				BRANCH_ID,
1298
				CHECKER_ID,
1299
				APPROVE_DT,
1300
				PARENT_PROCESS_ID,
1301
				IS_LEAF,
1302
				COST_ID,
1303
				DVDM_ID,
1304
				NOTES,IS_HAS_CHILD
1305
			)
1306
			VALUES
1307
			(   
1308
				@p_REQ_ID,
1309
				'GDK_TT',
1310
				'U',
1311
				'GDK',
1312
				'',
1313
				'',
1314
				NULL,
1315
				@STEP_PARENT,
1316
				'N',
1317
				'',
1318
				@DVDM_CDT,
1319
				N'Chờ giám đốc khối xác nhận',
1320
				0
1321
			)
1322
			SET @STEP_PARENT = 'GDK_TT'
1323
			
1324
			-- Nếu tổng giá trị chỉ định thầu lớn hơn hạn mức phê duyệt của GDK
1325
			IF ((SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK')) = 1)
1326
			BEGIN
1327
				INSERT INTO dbo.PL_REQUEST_PROCESS
1328
				(
1329
					REQ_ID,
1330
					PROCESS_ID,
1331
					STATUS,
1332
					ROLE_USER,
1333
					BRANCH_ID,
1334
					CHECKER_ID,
1335
					APPROVE_DT,
1336
					PARENT_PROCESS_ID,
1337
					IS_LEAF,
1338
					COST_ID,
1339
					DVDM_ID,
1340
					NOTES,
1341
					IS_HAS_CHILD
1342
				)
1343
				VALUES
1344
				(   
1345
					@p_REQ_ID,
1346
					'PTGDK_TT',
1347
					'U',
1348
					'PTGD',
1349
					'',
1350
					'',
1351
					NULL,
1352
					@STEP_PARENT,
1353
					'N',
1354
					'',
1355
					@DVDM_CDT,
1356
					N'Chờ phó tổng giám đốc khối xác nhận',
1357
					0
1358
				)
1359
				SET @STEP_PARENT = 'PTGDK_TT'
1360
			END
1361
		END
1362
		
1363
		INSERT INTO dbo.PL_REQUEST_PROCESS
1364
		(
1365
			REQ_ID,
1366
			PROCESS_ID,
1367
			STATUS,
1368
			ROLE_USER,
1369
			BRANCH_ID,
1370
			CHECKER_ID,
1371
			APPROVE_DT,
1372
			PARENT_PROCESS_ID,
1373
			IS_LEAF,
1374
			NOTES
1375
		)
1376
		VALUES
1377
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1378
			'APPROVE', -- PROCESS_ID - varchar(10)
1379
			'U',       -- STATUS - varchar(5)
1380
			'',        -- ROLE_USER - varchar(50)
1381
			'',        -- BRANCH_ID - varchar(15)
1382
			'',        -- CHECKER_ID - varchar(15)
1383
			NULL,      -- APPROVE_DT - datetime
1384
			@STEP_PARENT, 'Y', N'Hoàn tất');
1385

    
1386

    
1387

    
1388
		IF @@Error <> 0
1389
			GOTO ABORT;
1390

    
1391

    
1392

    
1393
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1394
		SET @PROCESS_ID_CURR =
1395
		(
1396
			SELECT TOP 1
1397
				   PROCESS_ID
1398
			FROM dbo.PL_REQUEST_PROCESS
1399
			WHERE REQ_ID = @p_REQ_ID
1400
				  AND PARENT_PROCESS_ID = 'APPNEW'
1401
		);
1402

    
1403
		UPDATE dbo.PL_REQUEST_PROCESS
1404
		SET STATUS = 'C'
1405
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1406
			  AND REQ_ID = @p_REQ_ID;
1407
		UPDATE dbo.PL_REQUEST_DOC
1408
		SET AUTH_STATUS = @p_AUTH_STATUS,
1409
			APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT,103),
1410
			CHECKER_ID = @p_CHECKER_ID,
1411
			PROCESS_ID = @PROCESS_ID_CURR
1412
		WHERE REQ_ID = @p_REQ_ID;
1413

    
1414
		UPDATE dbo.PL_REQUEST_DOC_DT
1415
		SET CHECKER_ID=@p_CHECKER_ID,
1416
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1417
		WHERE REQ_ID = @p_REQ_ID;
1418

    
1419
		INSERT INTO dbo.PL_PROCESS
1420
		(
1421
			REQ_ID,
1422
			PROCESS_ID,
1423
			CHECKER_ID,
1424
			APPROVE_DT,
1425
			PROCESS_DESC,
1426
			NOTES
1427
		)
1428
		VALUES
1429
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1430
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1431
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1432
			CONVERT(DATETIME, @p_APPROVE_DT,103),                                        -- APPROVE_DT - datetime
1433
			@p_PROCESS_DESC, 
1434
			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)
1435
			);
1436
		IF (EXISTS
1437
		(
1438
			SELECT REQ_ID
1439
			FROM dbo.PL_REQUEST_DOC
1440
			WHERE REQ_ID = @p_REQ_ID
1441
				  AND PROCESS_ID = 'APPROVE'
1442
		)
1443
		   )
1444
		BEGIN
1445
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1446
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1447
			SET @Result = '0';
1448
		END;
1449
		SET @Result = '1';
1450
END
1451
COMMIT TRANSACTION;
1452
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1453
BEGIN
1454
	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;
1455
	RETURN '0';
1456
END
1457
ELSE
1458
BEGIN
1459
	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
1460
	RETURN '4'
1461
END
1462
ABORT:
1463
BEGIN
1464

    
1465
    ROLLBACK TRANSACTION;
1466
    SELECT '-1' AS Result,
1467
           '' ROLE_NOTIFI,
1468
           '' ErrorDesc;
1469
    RETURN '-1';
1470
END;
1471

    
1472

    
1473

    
1474

    
1475

    
1476

    
1477