Project

General

Profile

PL_REQUEST_DOC_App.txt

Luc Tran Van, 12/02/2022 02:29 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
	
116
	SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
117
	DECLARE @IS_SPECIAL BIT
118
	SET @IS_SPECIAL=0
119
	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE DVDM_ID='DM0000000000004' AND REQ_ID = @p_REQ_ID))
120
		SET @IS_SPECIAL=1
121

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

    
127

    
128
	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
129

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

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

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

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

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

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

    
385
							-- DVDM_ID - varchar(15)
386
							@SUB_PROCESS);
387

    
388
						SET @STEP_PARENT='KT'
389
					END	
390
				END
391

    
392
    --- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
393
		DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
394
		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)
395
		---END LUCTV
396

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

    
454
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
455
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
456
				END
457

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

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

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

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

    
559
		-- Đầu mối nhận
560

    
561
		DECLARE @TABLE_TRANFER TABLE
562
		(
563
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
564
		)
565
		DECLARE @TABLE_TRANFER_APP TABLE
566
		(
567
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
568
		)
569

    
570

    
571

    
572
		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
573

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

    
581

    
582
		IF(@IS_NOIBO=1)
583
		BEGIN
584
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
585
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
586

    
587

    
588
	
589
		
590

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

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

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

    
624
		END
625
		
626

    
627
		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
628
		BEGIN
629

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

    
684

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

    
762
  	IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
763
  		SET @STEP_PARENT='DVDM_DC'
764

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

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

    
858
		--SET @STEP_CURR = 'DVC';
859
		--SET @STEP_PARENT = 'DVC';
860
		--END
861

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

    
870

    
871

    
872
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
873
		BEGIN
874

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

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

    
971
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
972
			BEGIN
973

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

    
1024
				SET @IS_NEXT =
1025
				(
1026
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1027
				);
1028
				END --- KẾT THÚC VIỆC KIỂM TRA KHỐI ĐÓ CÓ PHÓ TỔNG
1029

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

    
1247
			--END
1248
		
1249
			END;
1250

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

    
1354

    
1355

    
1356
		IF @@Error <> 0
1357
			GOTO ABORT;
1358

    
1359

    
1360

    
1361
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1362
		SET @PROCESS_ID_CURR =
1363
		(
1364
			SELECT TOP 1
1365
				   PROCESS_ID
1366
			FROM dbo.PL_REQUEST_PROCESS
1367
			WHERE REQ_ID = @p_REQ_ID
1368
				  AND PARENT_PROCESS_ID = 'APPNEW'
1369
		);
1370

    
1371
		UPDATE dbo.PL_REQUEST_PROCESS
1372
		SET STATUS = 'C'
1373
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1374
			  AND REQ_ID = @p_REQ_ID;
1375
		UPDATE dbo.PL_REQUEST_DOC
1376
		SET AUTH_STATUS = @p_AUTH_STATUS,
1377
			APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT,103),
1378
			CHECKER_ID = @p_CHECKER_ID,
1379
			PROCESS_ID = @PROCESS_ID_CURR
1380
		WHERE REQ_ID = @p_REQ_ID;
1381

    
1382
		UPDATE dbo.PL_REQUEST_DOC_DT
1383
		SET CHECKER_ID=@p_CHECKER_ID,
1384
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1385
		WHERE REQ_ID = @p_REQ_ID;
1386

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

    
1433
    ROLLBACK TRANSACTION;
1434
    SELECT '-1' AS Result,
1435
           '' ROLE_NOTIFI,
1436
           '' ErrorDesc;
1437
    RETURN '-1';
1438
END;