Project

General

Profile

PL_REQUEST_TRANSFER_App.txt

Luc Tran Van, 10/28/2022 04:18 PM

 
1
ALTER PROCEDURE dbo.PL_REQUEST_TRANSFER_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_AMT DECIMAL(18, 0),
58
        @ROLE_USER_NOTIFI VARCHAR(50),
59
        @ROLE_ID VARCHAR(20),
60
        @ROLE_TF VARCHAR(20),
61
        @LIMIT_VALUE DECIMAL(18, 0),
62
        @STEP_CURR VARCHAR(20),
63
        @STEP_PARENT VARCHAR(20),
64
        @COST_ID VARCHAR(20),
65
        @FR_BRANCH_ID VARCHAR(20),
66
        @FR_DEP_ID VARCHAR(20),
67
        @DVDM_ID VARCHAR(20),
68
        @IS_NEXT BIT = 0,
69
		@IS_NEXT_CDT BIT = 0,
70
        @TOTAL_AMT_GD DECIMAL(12, 0),
71
        @STOP BIT,
72
        @NOTES NVARCHAR(100);
73
DECLARE @ROLE_CDT VARCHAR(20),
74
        @DVDM_CDT VARCHAR(20),
75
        @LIMIT_VALUE_CDT VARCHAR(20),
76
        @NOTES_CDT VARCHAR(20);
77
DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20)
78
DECLARE @BRANCH_PARENT VARCHAR(15)
79
DECLARE @SUB_PROCESS VARCHAR(50)
80
DECLARE @DATA_DVDM TABLE
81
(
82
    DVDM_ID VARCHAR(20),
83
    TOTAL_AMT DECIMAL(12, 0),
84
	IS_GDK BIT,
85
	IS_PTGD BIT
86
);
87
	INSERT INTO @DATA_DVDM
88
	SELECT KHOI_ID,
89
		   SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_GDK,DM.IS_PTGD
90
	FROM dbo.PL_REQUEST_DOC_DT DT
91
	LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
92
	WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
93
	GROUP BY KHOI_ID,DM.IS_GDK,DM.IS_PTGD;
94
	
95
	SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
96
	DECLARE @IS_SPECIAL BIT
97
	SET @IS_SPECIAL=0
98
	IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE DVDM_ID='DM0000000000004' AND REQ_ID = @p_REQ_ID))
99
		SET @IS_SPECIAL=1
100

    
101
	DELETE FROM dbo.PL_REQUEST_PROCESS
102
	WHERE REQ_ID = @p_REQ_ID;
103
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
104
	@BRANCH_CREATE_TYPE VARCHAR(10)
105

    
106

    
107
	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
108

    
109
	SET @BRANCH_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
110
	SET @BRANCH_CREATE_TYPE=(SELECT  TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
111

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

    
220
    UPDATE prdd
221
    SET prdd.FR_AMT_APP = ISNULL(PL.AMT_APP,0),
222
    prdd.FR_AMT_EXE = ISNULL(PL.AMT_EXE,0),
223
    prdd.FR_AMT_ETM = ISNULL(PL.AMT_ETM,0),
224
    prdd.FR_AMT_TF = ISNULL(PL.AMT_TF,0),
225
    prdd.FR_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
226
    prdd.FR_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
227
      FROM dbo.PL_REQUEST_DOC_DT DDT
228
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
229
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
230
      AND DDT.TRADE_ID = PL.TRADE_ID
231
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
232
      +
233
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
234
      FROM dbo.PL_REQUEST_TRANSFER DDT
235
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
236
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
237
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
238
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
239
    FROM PL_TRADEDETAIL PL 
240
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.FR_TRADE_ID
241
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
242

    
243
    UPDATE prdd
244
    SET prdd.TO_AMT_APP = ISNULL(PL.AMT_APP,0),
245
    prdd.TO_AMT_EXE = ISNULL(PL.AMT_EXE,0),
246
    prdd.TO_AMT_ETM = ISNULL(PL.AMT_ETM,0),
247
    prdd.TO_AMT_TF = ISNULL(PL.AMT_TF,0),
248
    prdd.TO_AMT_RECEIVE_TF = ISNULL(PL.AMT_RECEIVE_TF,0),
249
    prdd.TO_AMT_ETM_TMP = (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
250
      FROM dbo.PL_REQUEST_DOC_DT DDT
251
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_ID = DOC.REQ_ID
252
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
253
      AND DDT.TRADE_ID = PL.TRADE_ID
254
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
255
      +
256
      (SELECT ISNULL(SUM(DDT.TOTAL_AMT),0)
257
      FROM dbo.PL_REQUEST_TRANSFER DDT
258
      LEFT JOIN dbo.PL_REQUEST_DOC DOC ON DDT.REQ_DOC_ID = DOC.REQ_ID
259
      WHERE DOC.PROCESS_ID NOT IN ('','SIGN','APPNEW','REJECT','APPROVE')
260
      AND DDT.FR_TRADE_ID = PL.TRADE_ID
261
      AND DOC.REQ_ID <> prdd.REQ_DOC_ID)
262
    FROM PL_TRADEDETAIL PL 
263
    LEFT JOIN PL_REQUEST_TRANSFER prdd ON PL.TRADE_ID = prdd.TO_TRADE_ID
264
    WHERE prdd.REQ_DOC_ID=@P_REQ_ID
265
		
266
		-- Nếu khổng phải tờ trình có chọn căn cứ
267
		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 <>''))
268
		BEGIN
269

    
270
		DECLARE @ROLE_KT VARCHAR(20), @DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(500)
271
		SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
272
				
273
		SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')
274
		SET @NOTES_KT = (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='KT' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ') 
275
		-- Kế toán
276
		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
277
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
278
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
279
				BEGIN
280
          SET @SUB_PROCESS = ''
281
          IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000006')
282
          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))
283
          BEGIN
284
            SET @SUB_PROCESS = 'DVCM/DVDC'
285
          END
286
          ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000006'))
287
          BEGIN
288
            SET @SUB_PROCESS = 'DVCM'
289
          END
290
          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))
291
          BEGIN
292
            SET @SUB_PROCESS = 'DVDC'
293
          END
294
					INSERT INTO dbo.PL_REQUEST_PROCESS
295
					(
296
						REQ_ID,
297
						PROCESS_ID,
298
						STATUS,
299
						ROLE_USER,
300
						BRANCH_ID,
301
						CHECKER_ID,
302
						APPROVE_DT,
303
						PARENT_PROCESS_ID,
304
						IS_LEAF,
305
						COST_ID,
306
						DVDM_ID,
307
						NOTES,
308
						IS_HAS_CHILD,
309
            SUB_PROCESS_ID
310
					)
311
					VALUES
312
					(   @p_REQ_ID,    -- REQ_ID - varchar(15)
313
						'KT',       -- PROCESS_ID - varchar(10)
314
						'U',          -- STATUS - varchar(5)
315
						@ROLE_KT,       -- ROLE_USER - varchar(50)
316
						'',           -- BRANCH_ID - varchar(15)
317
						'',           -- CHECKER_ID - varchar(15)
318
						NULL,         -- APPROVE_DT - datetime
319
						@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
320
						'N',          -- IS_LEAF - varchar(1)
321
						'',           -- COST_ID - varchar(15)
322
						@DVDM_KT, N'Chờ phòng kế toán xác nhận', 1,
323
            @SUB_PROCESS
324
						-- DVDM_ID - varchar(15)
325
						);
326

    
327
					SET @STEP_PARENT='KT'
328
				END
329
		
330
    -- DVDC
331
    DECLARE @TOTAL_TRANSFER DECIMAL(18,2)
332
    SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) FROM PL_REQUEST_TRANSFER A LEFT JOIN CM_GOODS B ON A.FR_GOOD_ID = B.GD_ID WHERE A.REQ_DOC_ID=@p_REQ_ID)
333

    
334
    IF (EXISTS(SELECT FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
335
					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)))	
336
			BEGIN
337
  			DECLARE lstTransfer CURSOR FOR
338
  			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
339
  					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
340
  					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)
341
  					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
342
  												LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
343
  												WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
344
  
345
  			GROUP BY FR_BRN_ID,
346
  						FR_DEP_ID
347
        HAVING ((FR_BRN_ID = 'DV0001'
348
          AND ((EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT') AND FR_DEP_ID <> 'DEP000000000022')
349
            OR NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT'))
350
          AND ((@TOTAL_TRANSFER > 20000000 AND FR_DEP_ID <> 'DEP000000000023') OR (@TOTAL_TRANSFER <= 20000000)))
351
        OR FR_BRN_ID <> 'DV0001')
352
        OPEN lstTransfer;
353
  			FETCH NEXT FROM lstTransfer
354
  			INTO @FR_BRANCH_ID,
355
  					@FR_DEP_ID;
356
  			WHILE @@FETCH_STATUS = 0
357
  			BEGIN
358
          SET @SUB_PROCESS = ''
359
          IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER A
360
          LEFT JOIN PL_COSTCENTER pc ON A.COST_ID = pc.DVDM_ID
361
          LEFT JOIN PL_COSTCENTER_DT pcd1 ON pc.COST_ID = pcd1.COST_ID
362
          WHERE A.REQ_ID = @p_REQ_ID AND pcd1.BRANCH_ID = @FR_BRANCH_ID AND pcd1.DEP_ID = @FR_DEP_ID))
363
          BEGIN
364
            SET @SUB_PROCESS = 'DVCM'
365
          END
366
  				INSERT INTO dbo.PL_REQUEST_PROCESS
367
  				(
368
  					REQ_ID,
369
  					PROCESS_ID,
370
  					STATUS,
371
  					ROLE_USER,
372
  					BRANCH_ID,
373
  					CHECKER_ID,
374
  					APPROVE_DT,
375
  					PARENT_PROCESS_ID,
376
  					IS_LEAF,
377
  					COST_ID,
378
  					DVDM_ID,
379
  					NOTES,
380
  					IS_HAS_CHILD,
381
  					DEP_ID,
382
            SUB_PROCESS_ID
383
  				)
384
  				VALUES
385
  				(   @p_REQ_ID,     -- REQ_ID - varchar(15)
386
  					'DVDC',        -- PROCESS_ID - varchar(10)
387
  					'U',           -- STATUS - varchar(5)
388
  					'GDDV',        -- ROLE_USER - varchar(50)
389
  					@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
390
  					'',            -- CHECKER_ID - varchar(15)
391
  					NULL,          -- APPROVE_DT - datetime
392
  					@STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
393
  					'N',           -- IS_LEAF - varchar(1)
394
  					'',            -- COST_ID - varchar(15)
395
  					'',            -- DVDM_ID - varchar(15)
396
  					N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID,
397
            @SUB_PROCESS);
398
  				FETCH NEXT FROM lstTransfer
399
  				INTO @FR_BRANCH_ID,
400
  						@FR_DEP_ID;
401
  			END;
402
  			CLOSE lstTransfer;
403
  			DEALLOCATE lstTransfer;
404
  			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDC'))
405
  				SET @STEP_PARENT = 'DVDC';
406
  		END;
407
      
408
    -- Có DVCM
409
		IF (EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID))
410
		BEGIN
411
			DECLARE lstCostCenter CURSOR FOR
412
			SELECT COST_ID
413
			FROM dbo.PL_REQUEST_COSTCENTER PRC
414
			WHERE REQ_ID = @p_REQ_ID AND COST_ID IS NOT NULL AND COST_ID <>''
415
      AND ((@TOTAL_TRANSFER > 20000000 AND PRC.COST_ID <> 'DM0000000000048') OR @TOTAL_TRANSFER <= 20000000)
416
      AND ((EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT') AND PRC.COST_ID <> 'DM0000000000006')
417
        OR NOT EXISTS(SELECT ID FROM PL_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'KT'))
418
      AND NOT EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER A
419
        LEFT JOIN PL_COSTCENTER_DT pcd ON A.FR_BRN_ID = pcd.BRANCH_ID AND A.FR_DEP_ID = pcd.DEP_ID
420
        LEFT JOIN PL_COSTCENTER pc ON pcd.COST_ID = pc.COST_ID  
421
        WHERE REQ_DOC_ID = @p_REQ_ID AND pc.DVDM_ID = PRC.COST_ID AND ((A.FR_BRN_ID <> 'DV0001' AND A.FR_BRN_ID <> @BRANCH_CREATE) OR (A.FR_BRN_ID = 'DV0001' AND A.FR_DEP_ID <> @DEP_CREATE)))
422
			OPEN lstCostCenter;
423
			FETCH NEXT FROM lstCostCenter
424
			INTO @COST_ID;
425
			WHILE @@FETCH_STATUS = 0
426
			BEGIN
427
				IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND (ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') )AND ( DVDM_ID=@COST_ID OR @COST_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
428
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
429
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
430
				BEGIN
431
				INSERT INTO dbo.PL_REQUEST_PROCESS
432
				(
433
					REQ_ID,
434
					PROCESS_ID,
435
					STATUS,
436
					ROLE_USER,
437
					BRANCH_ID,
438
					CHECKER_ID,
439
					APPROVE_DT,
440
					PARENT_PROCESS_ID,
441
					IS_LEAF,
442
					COST_ID,
443
					DVDM_ID,
444
					NOTES,
445
					IS_HAS_CHILD
446
				)
447
				VALUES
448
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
449
					'DVCM',       -- PROCESS_ID - varchar(10)
450
					'U',          -- STATUS - varchar(5)
451
					'GDDV',       -- ROLE_USER - varchar(50)
452
					'',           -- BRANCH_ID - varchar(15)
453
					'',           -- CHECKER_ID - varchar(15)
454
					NULL,         -- APPROVE_DT - datetime
455
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
456
					'N',          -- IS_LEAF - varchar(1)
457
					'',           -- COST_ID - varchar(15)
458
					@COST_ID, N'Chờ đơn vị đầu mối xác nhận', 1
459
					-- DVDM_ID - varchar(15)
460
					);
461
				END
462
--				ELSE
463
--				BEGIN
464
--          UPDATE PL_REQUEST_PROCESS SET SUB_PROCESS_ID = 'DVCM' 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
465
--  				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
466
--  				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)))
467
--				END
468

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

    
478
    -- Đầu mối nhận
479

    
480
		DECLARE @TABLE_TRANFER TABLE
481
		(
482
			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
483
		)
484
		DECLARE @TABLE_TRANFER_APP TABLE
485
		(
486
			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
487
		)
488

    
489
    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
490

    
491
		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,'')) )
492
		BEGIN
493
			SET @IS_NOIBO=0
494
		END
495
		ELSE
496
			SET  @IS_NOIBO=1
497

    
498

    
499
		IF(@IS_NOIBO=1)
500
		BEGIN
501
		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
502
		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
503

    
504

    
505
	
506
		
507

    
508
		INSERT INTO @TABLE_TRANFER
509
		(
510
		    TRADE_ID,
511
			TOTAL_TRANFER
512
		)
513
		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
514
		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
515

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

    
519
	---- Tính lũy kế phê duyệt
520
		INSERT INTO @TABLE_TRANFER_APP
521
		(
522
		    TRADE_ID,
523
		    TOTAL_APP
524
		)
525
		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 (
526
		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'
527
		)
528
		GROUP BY FR_TRADE_ID
529
		
530
		IF(EXISTS(
531
		SELECT BT.TRADE_ID FROM @TABLE_TRANFER BT 
532
		LEFT JOIN @TABLE_TRANFER_APP BTA ON BTA.TRADE_ID = BT.TRADE_ID
533
		WHERE ISNULL(BT.TOTAL_TRANFER,0) + ISNULL(BTA.TOTAL_APP,0) > @LIMIT_MAX
534
		))
535
		BEGIN
536
			SET @OVER_LIMT=1
537
		END
538
		ELSE
539
			SET @OVER_LIMT =0
540

    
541
		END
542
		
543
    		IF(@IS_NOIBO =0 OR @OVER_LIMT=1)
544
		BEGIN
545

    
546
		DECLARE lstTransfer CURSOR FOR
547
		SELECT TO_DVDM_ID
548
		FROM dbo.PL_REQUEST_TRANSFER
549
		WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>'' AND TO_DVDM_ID <>'DM0000000000048'
550
								AND ( (TO_DVDM_ID  ='DM0000000000003' AND ISNULL(@TOTAL_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
551
	
552
		GROUP BY TO_DVDM_ID;
553
		OPEN lstTransfer;
554
		FETCH NEXT FROM lstTransfer
555
		INTO @DVDM_ID;
556
		WHILE @@FETCH_STATUS = 0
557
		BEGIN
558
			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') )
559
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
560
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
561
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
562
		
563
			BEGIN
564
			INSERT INTO dbo.PL_REQUEST_PROCESS
565
			(
566
				REQ_ID,
567
				PROCESS_ID,
568
				STATUS,
569
				ROLE_USER,
570
				BRANCH_ID,
571
				CHECKER_ID,
572
				APPROVE_DT,
573
				PARENT_PROCESS_ID,
574
				IS_LEAF,
575
				COST_ID,
576
				DVDM_ID,
577
				NOTES,
578
				IS_HAS_CHILD
579
			)
580
			VALUES
581
			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
582
				'DVDM_DC',    -- PROCESS_ID - varchar(10)
583
				'U',          -- STATUS - varchar(5)
584
				'GDDV',       -- ROLE_USER - varchar(50)
585
				'',           -- BRANCH_ID - varchar(15)
586
				'',           -- CHECKER_ID - varchar(15)
587
				NULL,         -- APPROVE_DT - datetime
588
				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
589
				'N',          -- IS_LEAF - varchar(1)
590
				'',           -- COST_ID - varchar(15)
591
				@DVDM_ID,     -- DVDM_ID - varchar(15)
592
				N'Chờ đơn vị đầu mối quản lý NS nhận xác nhận', 1);
593
			END
594
			FETCH NEXT FROM lstTransfer
595
			INTO @DVDM_ID;
596
		END;
597
		CLOSE lstTransfer;
598
		DEALLOCATE lstTransfer;
599

    
600

    
601
		IF (EXISTS(
602
  			SELECT FR_BRN_ID
603
  			FROM dbo.PL_REQUEST_TRANSFER
604
  			WHERE REQ_DOC_ID = @p_REQ_ID
605
  					AND FR_BRN_ID <> @BRANCH_CREATE
606
  					AND FR_DEP_ID <> @DEP_CREATE
607
    ))
608
		BEGIN
609
			-- Đầu mối cho
610
			DECLARE lstTransfer CURSOR FOR
611
			SELECT FR_DVDM_ID
612
			FROM dbo.PL_REQUEST_TRANSFER
613
			WHERE REQ_DOC_ID = @p_REQ_ID
614
					AND FR_BRN_ID <> @BRANCH_CREATE
615
					AND FR_DEP_ID <> @DEP_CREATE
616
					AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
617
					AND NOT EXISTS
618
			(
619
				SELECT *
620
				FROM dbo.PL_REQUEST_PROCESS
621
				WHERE REQ_ID = @p_REQ_ID
622
						AND PROCESS_ID = 'DVDM_DC'
623
						AND DVDM_ID = FR_DVDM_ID
624
			)
625
			--- LUCTV 2022816
626
			AND (FR_DVDM_ID <>'DM0000000000048'
627
								OR (FR_DVDM_ID  ='DM0000000000003' AND ISNULL(@TOTAL_TRANSFER,0) >=10000000))--- LUCTV 2022816: NEU TO TRINH DIEU CHUYEN <=20 TRIEU THI KHONG DI QUA DVDM_DC NGAN SACH
628
	
629
			GROUP BY FR_DVDM_ID;
630
			OPEN lstTransfer;
631
			FETCH NEXT FROM lstTransfer
632
			INTO @DVDM_ID;
633
			WHILE @@FETCH_STATUS = 0
634
			BEGIN
635
			IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND 
636
			(ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') ) 
637
			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
638
			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
639
			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
640
			BEGIN
641
				INSERT INTO dbo.PL_REQUEST_PROCESS
642
				(
643
					REQ_ID,
644
					PROCESS_ID,
645
					STATUS,
646
					ROLE_USER,
647
					BRANCH_ID,
648
					CHECKER_ID,
649
					APPROVE_DT,
650
					PARENT_PROCESS_ID,
651
					IS_LEAF,
652
					COST_ID,
653
					DVDM_ID,
654
					NOTES,
655
					IS_HAS_CHILD
656
				)
657
				VALUES
658
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
659
					'DVDM_DC',    -- PROCESS_ID - varchar(10)
660
					'U',          -- STATUS - varchar(5)
661
					'GDDV',       -- ROLE_USER - varchar(50)
662
					'',           -- BRANCH_ID - varchar(15)
663
					'',           -- CHECKER_ID - varchar(15)
664
					NULL,         -- APPROVE_DT - datetime
665
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
666
					'N',          -- IS_LEAF - varchar(1)
667
					'',           -- COST_ID - varchar(15)
668
					@DVDM_ID,     -- DVDM_ID - varchar(15)
669
					N'Chờ đơn vị đầu mối xác nhận', 0);
670
			END
671
				FETCH NEXT FROM lstTransfer
672
				INTO @DVDM_ID;
673
			END;
674
			CLOSE lstTransfer;
675
			DEALLOCATE lstTransfer;
676

    
677

    
678

    
679

    
680
			IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
681
				SET @STEP_PARENT='DVDM_DC'
682

    
683

    
684
		END;
685
		END
686
		 
687
    IF(@TOTAL_TRANSFER > 20000000)
688
    BEGIN
689
    SET @SUB_PROCESS = ''
690
    IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000048')
691
    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))
692
    BEGIN
693
      SET @SUB_PROCESS = 'DVCM/DVDC'
694
    END
695
    ELSE IF (EXISTS(SELECT * FROM PL_REQUEST_COSTCENTER prc WHERE prc.REQ_ID = @p_REQ_ID AND prc.COST_ID = 'DM0000000000048'))
696
    BEGIN
697
      SET @SUB_PROCESS = 'DVCM'
698
    END
699
    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))
700
    BEGIN
701
      SET @SUB_PROCESS = 'DVDC'
702
    END
703
    INSERT INTO dbo.PL_REQUEST_PROCESS
704
    		(
705
    			REQ_ID,
706
    			PROCESS_ID,
707
    			STATUS,
708
    			ROLE_USER,
709
    			BRANCH_ID,
710
    			CHECKER_ID,
711
    			APPROVE_DT,
712
    			PARENT_PROCESS_ID,
713
    			IS_LEAF,
714
    			COST_ID,
715
    			DVDM_ID,
716
    			NOTES,IS_HAS_CHILD,
717
          SUB_PROCESS_ID
718
    		)
719
    		VALUES
720
    		(   @p_REQ_ID,    -- REQ_ID - varchar(15)
721
    			'TC',         -- PROCESS_ID - varchar(10)
722
    			'U',          -- STATUS - varchar(5)
723
    			'TC',         -- ROLE_USER - varchar(50)
724
    			'',           -- BRANCH_ID - varchar(15)
725
    			'',           -- CHECKER_ID - varchar(15)
726
    			NULL,         -- APPROVE_DT - datetime
727
    			@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
728
    			'N',          -- IS_LEAF - varchar(1)
729
    			'',           -- COST_ID - varchar(15)
730
    			'',           -- DVDM_ID - varchar(15)
731
    			N'Chờ đơn vị Tài chính xác nhận',1,
732
          @SUB_PROCESS);
733
		SET @STEP_PARENT = 'TC';
734
    END
735
		--IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
736
		--AND ((
737
		--	BRANCH_ID=@BRANCH_CREATE 
738
		--	AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
739
		--	AND (DEP_ID IS NULL OR DEP_ID='')))
740
		--	)
741
		--	OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
742
		--	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)
743
		--	)
744
		--))
745
		--BEGIN
746
		--INSERT INTO dbo.PL_REQUEST_PROCESS
747
		--		(
748
		--		REQ_ID,
749
		--		PROCESS_ID,
750
		--		STATUS,
751
		--		ROLE_USER,
752
		--		BRANCH_ID,
753
		--		DEP_ID,
754
		--		CHECKER_ID,
755
		--		APPROVE_DT,
756
		--		PARENT_PROCESS_ID,
757
		--		IS_LEAF,
758
		--		NOTES
759
		--		)
760
		--		VALUES
761
		--		(   
762
		--		@p_REQ_ID,               -- REQ_ID - varchar(15)
763
		--		'DVC',                  -- PROCESS_ID - varchar(10)
764
		--		'U',                     -- STATUS - varchar(5)
765
		--		'GDDV',                      -- ROLE_USER - varchar(50)
766
		--		@BRANCH_CREATE,
767
		--		@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
768
		--		NULL,           -- CHECKER_ID - varchar(15)
769
		--		NULL , -- APPROVE_DT - datetime
770
		--		@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
771

    
772
		--SET @STEP_CURR = 'DVC';
773
		--SET @STEP_PARENT = 'DVC';
774
		--END
775

    
776
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
777
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
778
		BEGIN
779
		SET @IS_NEXT =
780
		(
781
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
782
		);
783

    
784

    
785

    
786
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
787
		BEGIN
788

    
789
			DECLARE lstCostCenter CURSOR FOR
790
			SELECT DVDM_ID,
791
				   TOTAL_AMT
792
			FROM @DATA_DVDM
793
			WHERE IS_GDK=1;
794
			OPEN lstCostCenter;
795
			FETCH NEXT FROM lstCostCenter
796
			INTO @DVDM_ID,
797
				 @TOTAL_AMT_GD;
798
			WHILE @@FETCH_STATUS = 0
799
			BEGIN
800
				INSERT INTO dbo.PL_REQUEST_PROCESS
801
				(
802
					REQ_ID,
803
					PROCESS_ID,
804
					STATUS,
805
					ROLE_USER,
806
					BRANCH_ID,
807
					CHECKER_ID,
808
					APPROVE_DT,
809
					PARENT_PROCESS_ID,
810
					IS_LEAF,
811
					COST_ID,
812
					DVDM_ID,
813
					NOTES,
814
					IS_HAS_CHILD
815
				)
816
				VALUES
817
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
818
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
819
					'U',                                       -- STATUS - varchar(5)
820
					'GDK',                                     -- ROLE_USER - varchar(50)
821
					'',                                        -- BRANCH_ID - varchar(15)
822
					'',                                        -- CHECKER_ID - varchar(15)
823
					NULL,                                      -- APPROVE_DT - datetime
824
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
825
					'N',                                       -- IS_LEAF - varchar(1)
826
					'',                                        -- COST_ID - varchar(15)
827
					@DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
828
					);
829
				FETCH NEXT FROM lstCostCenter
830
				INTO @DVDM_ID,
831
					 @TOTAL_AMT_GD;
832
			END;
833
			CLOSE lstCostCenter;
834
			DEALLOCATE lstCostCenter;
835

    
836
			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))
837
			BEGIN
838
				INSERT INTO dbo.PL_REQUEST_PROCESS
839
				(
840
					REQ_ID,
841
					PROCESS_ID,
842
					STATUS,
843
					ROLE_USER,
844
					BRANCH_ID,
845
					CHECKER_ID,
846
					APPROVE_DT,
847
					PARENT_PROCESS_ID,
848
					IS_LEAF,
849
					COST_ID,
850
					DVDM_ID,
851
					NOTES,IS_HAS_CHILD
852
				)
853
				VALUES
854
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
855
					'GDK_TT',        -- PROCESS_ID - varchar(10)
856
					'U',        -- STATUS - varchar(5)
857
					'GDK',        -- ROLE_USER - varchar(50)
858
					'',        -- BRANCH_ID - varchar(15)
859
					'',        -- CHECKER_ID - varchar(15)
860
					NULL, -- APPROVE_DT - datetime
861
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
862
					'N',        -- IS_LEAF - varchar(1)
863
					'',        -- COST_ID - varchar(15)
864
					@DVDM_CDT ,
865
					N'Chờ giám đốc khối xác nhận',
866
					0        -- DVDM_ID - varchar(15)
867
					)
868
									
869
			END
870

    
871
			SET @IS_NEXT =
872
			(
873
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
874
			);
875

    
876
			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)
877
			BEGIN
878
				SET @IS_NEXT=1
879
			END
880

    
881
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
882

    
883
			
884
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
885
			BEGIN
886
				SET @STEP_PARENT='GDK_TT'	
887
			END
888

    
889
				
890
			--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)
891

    
892
			IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)
893
			BEGIN
894

    
895
				IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
896
				BEGIN
897
				DECLARE lstCostCenter CURSOR FOR
898
				SELECT DVDM_ID,
899
					   TOTAL_AMT
900
				FROM @DATA_DVDM WHERE IS_PTGD=1 AND NOT 
901
				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) ;
902
				OPEN lstCostCenter;
903
				FETCH NEXT FROM lstCostCenter
904
				INTO @DVDM_ID,
905
					 @TOTAL_AMT_GD;
906
				WHILE @@FETCH_STATUS = 0
907
				BEGIN
908
					INSERT INTO dbo.PL_REQUEST_PROCESS
909
					(
910
						REQ_ID,
911
						PROCESS_ID,
912
						STATUS,
913
						ROLE_USER,
914
						BRANCH_ID,
915
						CHECKER_ID,
916
						APPROVE_DT,
917
						PARENT_PROCESS_ID,
918
						IS_LEAF,
919
						COST_ID,
920
						DVDM_ID,
921
						NOTES,
922
						IS_HAS_CHILD
923
					)
924
					VALUES
925
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
926
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
927
						'U',                                                -- STATUS - varchar(5)
928
						'PTGD',                                             -- 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_ID, N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
936
						);
937
					
938
					FETCH NEXT FROM lstCostCenter
939
					INTO @DVDM_ID,
940
						 @TOTAL_AMT_GD;
941
				END;
942
				CLOSE lstCostCenter;
943
				DEALLOCATE lstCostCenter;
944

    
945
				SET @IS_NEXT =
946
				(
947
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
948
				);
949

    
950
				
951
				END
952

    
953
				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'))
954
				BEGIN
955
					INSERT INTO dbo.PL_REQUEST_PROCESS
956
					(
957
						REQ_ID,
958
						PROCESS_ID,
959
						STATUS,
960
						ROLE_USER,
961
						BRANCH_ID,
962
						CHECKER_ID,
963
						APPROVE_DT,
964
						PARENT_PROCESS_ID,
965
						IS_LEAF,
966
						COST_ID,
967
						DVDM_ID,
968
						NOTES,
969
						IS_HAS_CHILD
970
					)
971
					VALUES
972
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
973
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
974
						'U',                                                -- STATUS - varchar(5)
975
						'PTGD',                                             -- ROLE_USER - varchar(50)
976
						'',                                                 -- BRANCH_ID - varchar(15)
977
						'',                                                 -- CHECKER_ID - varchar(15)
978
						NULL,                                               -- APPROVE_DT - datetime
979
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
980
						'N',                                                -- IS_LEAF - varchar(1)
981
						'',                                                 -- COST_ID - varchar(15)
982
						'DM0000000000014', N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
983
						);
984
				END
985

    
986

    
987
				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))
988
								BEGIN
989
									INSERT INTO dbo.PL_REQUEST_PROCESS
990
									(
991
										REQ_ID,
992
										PROCESS_ID,
993
										STATUS,
994
										ROLE_USER,
995
										BRANCH_ID,
996
										CHECKER_ID,
997
										APPROVE_DT,
998
										PARENT_PROCESS_ID,
999
										IS_LEAF,
1000
										COST_ID,
1001
										DVDM_ID,
1002
										NOTES,IS_HAS_CHILD
1003
									)
1004
									VALUES
1005
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1006
										'PTGDK_TT',        -- PROCESS_ID - varchar(10)
1007
										'U',        -- STATUS - varchar(5)
1008
										'PTGD',        -- ROLE_USER - varchar(50)
1009
										'',        -- BRANCH_ID - varchar(15)
1010
										'',        -- CHECKER_ID - varchar(15)
1011
										NULL, -- APPROVE_DT - datetime
1012
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1013
										'N',        -- IS_LEAF - varchar(1)
1014
										'',        -- COST_ID - varchar(15)
1015
										@DVDM_CDT ,
1016
										N'Chờ giám đốc khối xác nhận',
1017
										0        -- DVDM_ID - varchar(15)
1018
									  )
1019
									
1020
								END
1021
	
1022
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1023
				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)
1024
				BEGIN
1025
				SET @IS_NEXT=1
1026
				END
1027

    
1028
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1029
				BEGIN
1030
				SET @STEP_PARENT='PTGDK_TT'	
1031
				END
1032

    
1033

    
1034
				IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
1035
				BEGIN
1036
					-- THEM THU KI TGD
1037
					--INSERT INTO dbo.PL_REQUEST_PROCESS
1038
					--(
1039
					--	REQ_ID,
1040
					--	PROCESS_ID,
1041
					--	STATUS,
1042
					--	ROLE_USER,
1043
					--	BRANCH_ID,
1044
					--	CHECKER_ID,
1045
					--	APPROVE_DT,
1046
					--	PARENT_PROCESS_ID,
1047
					--	IS_LEAF,
1048
					--	COST_ID,
1049
					--	DVDM_ID,
1050
					--	NOTES,
1051
					--	IS_HAS_CHILD
1052
					--)
1053
					--VALUES
1054
					--(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1055
					--	'TKTGD',                               -- PROCESS_ID - varchar(10)
1056
					--	'U',                                 -- STATUS - varchar(5)
1057
					--	'TKTGD',                               -- ROLE_USER - varchar(50)
1058
					--	'',                                  -- BRANCH_ID - varchar(15)
1059
					--	'',                                  -- CHECKER_ID - varchar(15)
1060
					--	NULL,                                -- APPROVE_DT - datetime
1061
					--	@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1062
					--	'N',                                 -- IS_LEAF - varchar(1)
1063
					--	'',                                  -- COST_ID - varchar(15)
1064
					--	'', N'Chờ Văn Phòng Thư Ký TGD xác nhận', 1 -- DVDM_ID - varchar(15)
1065
					--	);
1066
					--SET @STEP_PARENT = 'TKTGD';
1067
					-- END THU KY TGD
1068
					INSERT INTO dbo.PL_REQUEST_PROCESS
1069
					(
1070
						REQ_ID,
1071
						PROCESS_ID,
1072
						STATUS,
1073
						ROLE_USER,
1074
						BRANCH_ID,
1075
						CHECKER_ID,
1076
						APPROVE_DT,
1077
						PARENT_PROCESS_ID,
1078
						IS_LEAF,
1079
						COST_ID,
1080
						DVDM_ID,
1081
						NOTES,
1082
						IS_HAS_CHILD
1083
					)
1084
					VALUES
1085
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1086
						'TGD',                               -- PROCESS_ID - varchar(10)
1087
						'U',                                 -- STATUS - varchar(5)
1088
						'TGD',                               -- ROLE_USER - varchar(50)
1089
						'',                                  -- BRANCH_ID - varchar(15)
1090
						'',                                  -- CHECKER_ID - varchar(15)
1091
						NULL,                                -- APPROVE_DT - datetime
1092
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1093
						'N',                                 -- IS_LEAF - varchar(1)
1094
						'',                                  -- COST_ID - varchar(15)
1095
						'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
1096
						);
1097
					SET @STEP_PARENT = 'TGD';
1098
					SET @IS_NEXT =
1099
				(
1100
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'TGD')
1101
				);
1102
					IF(@IS_NEXT=1)
1103
					BEGIN
1104
					---- THEM THU KI HDQT
1105
					--INSERT INTO dbo.PL_REQUEST_PROCESS
1106
					--(
1107
					--	REQ_ID,
1108
					--	PROCESS_ID,
1109
					--	STATUS,
1110
					--	ROLE_USER,
1111
					--	BRANCH_ID,
1112
					--	CHECKER_ID,
1113
					--	APPROVE_DT,
1114
					--	PARENT_PROCESS_ID,
1115
					--	IS_LEAF,
1116
					--	COST_ID,
1117
					--	DVDM_ID,
1118
					--	NOTES,
1119
					--	IS_HAS_CHILD
1120
					--)
1121
					--VALUES
1122
					--(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1123
					--	'TKHDQT',                               -- PROCESS_ID - varchar(10)
1124
					--	'U',                                 -- STATUS - varchar(5)
1125
					--	'TKHDQT',                               -- ROLE_USER - varchar(50)
1126
					--	'',                                  -- BRANCH_ID - varchar(15)
1127
					--	'',                                  -- CHECKER_ID - varchar(15)
1128
					--	NULL,                                -- APPROVE_DT - datetime
1129
					--	@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1130
					--	'N',                                 -- IS_LEAF - varchar(1)
1131
					--	'',                                  -- COST_ID - varchar(15)
1132
					--	'', N'Chờ Văn Phòng Thư Ký HĐQT xác nhận', 1 -- DVDM_ID - varchar(15)
1133
					--	);
1134
					--SET @STEP_PARENT = 'TKHDQT';
1135
					---- END THU KY HDQT
1136
						INSERT INTO dbo.PL_REQUEST_PROCESS
1137
					(
1138
						REQ_ID,
1139
						PROCESS_ID,
1140
						STATUS,
1141
						ROLE_USER,
1142
						BRANCH_ID,
1143
						CHECKER_ID,
1144
						APPROVE_DT,
1145
						PARENT_PROCESS_ID,
1146
						IS_LEAF,
1147
						COST_ID,
1148
						DVDM_ID,
1149
						NOTES,
1150
						IS_HAS_CHILD
1151
					)
1152
					VALUES
1153
					(   @p_REQ_ID,                           -- REQ_ID - varchar(15)
1154
						'HDQT',                               -- PROCESS_ID - varchar(10)
1155
						'U',                                 -- STATUS - varchar(5)
1156
						'HDQT',                               -- ROLE_USER - varchar(50)
1157
						'',                                  -- BRANCH_ID - varchar(15)
1158
						'',                                  -- CHECKER_ID - varchar(15)
1159
						NULL,                                -- APPROVE_DT - datetime
1160
						@STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
1161
						'N',                                 -- IS_LEAF - varchar(1)
1162
						'',                                  -- COST_ID - varchar(15)
1163
						'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
1164
						);
1165
					SET @STEP_PARENT = 'HDQT';
1166
					END
1167
				END;
1168
			--ELSE
1169
			--BEGIN
1170

    
1171
			--END
1172
		
1173
			END;
1174

    
1175
		END;
1176
		END
1177
				
1178
		END
1179
		
1180
		INSERT INTO dbo.PL_REQUEST_PROCESS
1181
		(
1182
			REQ_ID,
1183
			PROCESS_ID,
1184
			STATUS,
1185
			ROLE_USER,
1186
			BRANCH_ID,
1187
			CHECKER_ID,
1188
			APPROVE_DT,
1189
			PARENT_PROCESS_ID,
1190
			IS_LEAF,
1191
			NOTES
1192
		)
1193
		VALUES
1194
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1195
			'APPROVE', -- PROCESS_ID - varchar(10)
1196
			'U',       -- STATUS - varchar(5)
1197
			'',        -- ROLE_USER - varchar(50)
1198
			'',        -- BRANCH_ID - varchar(15)
1199
			'',        -- CHECKER_ID - varchar(15)
1200
			NULL,      -- APPROVE_DT - datetime
1201
			@STEP_PARENT, 'Y', N'Hoàn tất');
1202

    
1203

    
1204

    
1205
		IF @@Error <> 0
1206
			GOTO ABORT;
1207

    
1208

    
1209

    
1210
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1211
		SET @PROCESS_ID_CURR =
1212
		(
1213
			SELECT TOP 1
1214
				   PROCESS_ID
1215
			FROM dbo.PL_REQUEST_PROCESS
1216
			WHERE REQ_ID = @p_REQ_ID
1217
				  AND PARENT_PROCESS_ID = 'APPNEW'
1218
		);
1219

    
1220
		UPDATE dbo.PL_REQUEST_PROCESS
1221
		SET STATUS = 'C'
1222
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1223
			  AND REQ_ID = @p_REQ_ID;
1224
		UPDATE dbo.PL_REQUEST_DOC
1225
		SET AUTH_STATUS = @p_AUTH_STATUS,
1226
			APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103),
1227
			CHECKER_ID = @p_CHECKER_ID,
1228
			PROCESS_ID = @PROCESS_ID_CURR
1229
		WHERE REQ_ID = @p_REQ_ID;
1230

    
1231
		UPDATE dbo.PL_REQUEST_DOC_DT
1232
		SET CHECKER_ID=@p_CHECKER_ID,
1233
		APPROVE_DT=CONVERT(DATETIME,@P_APPROVE_DT,103)
1234
		WHERE REQ_ID = @p_REQ_ID;
1235

    
1236
		INSERT INTO dbo.PL_PROCESS
1237
		(
1238
			REQ_ID,
1239
			PROCESS_ID,
1240
			CHECKER_ID,
1241
			APPROVE_DT,
1242
			PROCESS_DESC,
1243
			NOTES
1244
		)
1245
		VALUES
1246
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1247
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1248
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1249
			CONVERT(DATETIME,@P_APPROVE_DT,103),                                        -- APPROVE_DT - datetime
1250
			@p_PROCESS_DESC, 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)
1251
			);
1252
		IF (EXISTS
1253
		(
1254
			SELECT REQ_ID
1255
			FROM dbo.PL_REQUEST_DOC
1256
			WHERE REQ_ID = @p_REQ_ID
1257
				  AND PROCESS_ID = 'APPROVE'
1258
		)
1259
		   )
1260
		BEGIN
1261
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1262
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1263
			SET @Result = '0';
1264
		END;
1265
		SET @Result = '1';
1266
END
1267
COMMIT TRANSACTION;
1268
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1269
BEGIN
1270
	SELECT '0' AS Result,
1271
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1272
       N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đã được phê duyệt thành công. Bạn có thể kiểm tra bước xử lý hiện tại của tờ trình' ErrorDesc;
1273
		RETURN '0';
1274
END
1275
ELSE
1276
BEGIN
1277
	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 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
1278
	RETURN '0'
1279
END
1280
ABORT:
1281
BEGIN
1282

    
1283
    ROLLBACK TRANSACTION;
1284
    SELECT '-1' AS Result,
1285
           '' ROLE_NOTIFI,
1286
           '' ErrorDesc;
1287
    RETURN '-1';
1288
END;