Project

General

Profile

PL_REQUEST_DOC_App.txt

Luc Tran Van, 11/04/2022 03:02 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
--SET @p_APPROVE_DT = @p_APPROVE_DT 
27

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

    
109
	DELETE FROM dbo.PL_REQUEST_PROCESS
110
	WHERE REQ_ID = @p_REQ_ID;
111
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
112
	@BRANCH_CREATE_TYPE VARCHAR(10)
113

    
114

    
115
	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
116

    
117
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
118
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
119

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

    
228
    UPDATE prdd
229
    SET prdd.AMT_APP = ISNULL(PL.AMT_APP,0),
230
    prdd.AMT_EXE = ISNULL(PL.AMT_EXE,0),
231
    prdd.AMT_ETM = ISNULL(PL.AMT_ETM,0),
232
    prdd.AMT_TF = ISNULL(PL.AMT_TF,0),
233
    prdd.AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
234
    prdd.AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
235
      FROM dbo.PL_REQUEST_DOC_DT DDT
236
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
237
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
238
      AND DDT.TRADE_ID = PL.TRADE_ID
239
      AND DOC.REQ_ID <> prdd.REQ_ID)
240
      +
241
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
242
      FROM dbo.PL_REQUEST_TRANSFER DDT
243
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
244
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
245
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
246
      AND DOC.REQ_ID <> @p_REQ_ID)
247
    FROM PL_TRADEDETAIL PL 
248
    LEFT JOIN PL_REQUEST_DOC_DT prdd ON PL.TRADE_ID = prdd.TRADE_ID
249
    WHERE prdd.REQ_ID=@P_REQ_ID
250

    
251
    UPDATE prdd
252
    SET prdd.FR_AMT_APP = ISNULL(PL.AMT_APP,0),
253
    prdd.FR_AMT_EXE = ISNULL(PL.AMT_EXE,0),
254
    prdd.FR_AMT_ETM = ISNULL(PL.AMT_ETM,0),
255
    prdd.FR_AMT_TF = ISNULL(PL.AMT_TF,0),
256
    prdd.FR_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
257
    prdd.FR_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
258
      FROM dbo.PL_REQUEST_DOC_DT DDT
259
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
260
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
261
      AND DDT.TRADE_ID = PL.TRADE_ID
262
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
263
      +
264
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
265
      FROM dbo.PL_REQUEST_TRANSFER DDT
266
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
267
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
268
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
269
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
270
    FROM PL_TRADEDETAIL PL 
271
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.FR_TRADE_ID
272
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
273

    
274
    UPDATE prdd
275
    SET prdd.TO_AMT_APP = ISNULL(PL.AMT_APP,0),
276
    prdd.TO_AMT_EXE = ISNULL(PL.AMT_EXE,0),
277
    prdd.TO_AMT_ETM = ISNULL(PL.AMT_ETM,0),
278
    prdd.TO_AMT_TF = ISNULL(PL.AMT_TF,0),
279
    prdd.TO_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
280
    prdd.TO_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
281
      FROM dbo.PL_REQUEST_DOC_DT DDT
282
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
283
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
284
      AND DDT.TRADE_ID = PL.TRADE_ID
285
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
286
      +
287
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
288
      FROM dbo.PL_REQUEST_TRANSFER DDT
289
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
290
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE','SETTLMENT')
291
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
292
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
293
    FROM PL_TRADEDETAIL PL 
294
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.TO_TRADE_ID
295
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
296
		
297
		-- Nếu khổng phải tờ trình có chọn căn cứ
298
		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 <>''))
299
		BEGIN
300

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

    
372
							-- DVDM_ID - varchar(15)
373
							@SUB_PROCESS);
374

    
375
						SET @STEP_PARENT='KT'
376
					END	
377
				END
378

    
379
    --- LUCTV 2022812: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
380
		DECLARE @TOTAL_AMT_TRANSFER DECIMAL(18,0)
381
		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)
382
		---END LUCTV
383

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

    
441
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
442
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
443
				END
444

    
445
				FETCH NEXT FROM lstCostCenter
446
				INTO @COST_ID;
447
			END;
448
			CLOSE lstCostCenter;
449
			DEALLOCATE lstCostCenter;
450
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
451
				SET @STEP_PARENT = 'DVCM';
452
		END;
453

    
454
		SET @TOTAL_AMT =(SELECT SUM(TOTAL_AMT) AS TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID = @p_REQ_ID);
455
		--Có điều chuyển NS
456
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
457
		BEGIN
458
				
459
			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))
460
					--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)
461
          ))	
462
			BEGIN
463

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

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

    
546
		-- Đầu mối nhận
547

    
548
		DECLARE @TABLE_TRANFER TABLE
549
		(
550
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
551
		)
552
		DECLARE @TABLE_TRANFER_APP TABLE
553
		(
554
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
555
		)
556

    
557

    
558

    
559
		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
560

    
561
		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,'')) )
562
		BEGIN
563
			SET @IS_NOIBO=0
564
		END
565
		ELSE
566
			SET  @IS_NOIBO=1
567

    
568

    
569
		IF(@IS_NOIBO=1)
570
		BEGIN
571
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
572
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
573

    
574

    
575
	
576
		
577

    
578
		INSERT INTO @TABLE_TRANFER
579
		(
580
		    TRADE_ID,
581
			TOTAL_TRANFER
582
		)
583
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
584
		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
585

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

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

    
611
		END
612
		
613

    
614
		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
615
		BEGIN
616

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

    
671

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

    
749
  	IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
750
  		SET @STEP_PARENT='DVDM_DC'
751

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

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

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

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

    
855

    
856

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

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

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

    
956
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
957
			BEGIN
958

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

    
1009
				SET @IS_NEXT =
1010
				(
1011
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
1012
				);
1013
				END --- KẾT THÚC VIỆC KIỂM TRA KHỐI ĐÓ CÓ PHÓ TỔNG
1014

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

    
1231
			--END
1232
		
1233
			END;
1234

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

    
1338

    
1339

    
1340
		IF @@Error <> 0
1341
			GOTO ABORT;
1342

    
1343

    
1344

    
1345
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1346
		SET @PROCESS_ID_CURR =
1347
		(
1348
			SELECT TOP 1
1349
				   PROCESS_ID
1350
			FROM dbo.PL_REQUEST_PROCESS
1351
			WHERE REQ_ID = @p_REQ_ID
1352
				  AND PARENT_PROCESS_ID = 'APPNEW'
1353
		);
1354

    
1355
		UPDATE dbo.PL_REQUEST_PROCESS
1356
		SET STATUS = 'C'
1357
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1358
			  AND REQ_ID = @p_REQ_ID;
1359
		UPDATE dbo.PL_REQUEST_DOC
1360
		SET AUTH_STATUS = @p_AUTH_STATUS,
1361
			APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT,103),
1362
			CHECKER_ID = @p_CHECKER_ID,
1363
			PROCESS_ID = @PROCESS_ID_CURR
1364
		WHERE REQ_ID = @p_REQ_ID;
1365

    
1366
		UPDATE dbo.PL_REQUEST_DOC_DT
1367
		SET CHECKER_ID=@p_CHECKER_ID,
1368
		APPROVE_DT=CONVERT(DATETIME, @p_APPROVE_DT,103)
1369
		WHERE REQ_ID = @p_REQ_ID;
1370

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

    
1417
    ROLLBACK TRANSACTION;
1418
    SELECT '-1' AS Result,
1419
           '' ROLE_NOTIFI,
1420
           '' ErrorDesc;
1421
    RETURN '-1';
1422
END;