Project

General

Profile

PL_REQUEST_TRANSFER_App.txt

Luc Tran Van, 08/10/2022 03:42 PM

 
1

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

    
12
BEGIN TRANSACTION;
13
---LUCTV KIEM TRA NEU TO TRINH DANG BI TRA VE THI KHONG DUOC PHEP DUYET
14
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='R' AND REQ_ID =@p_REQ_ID))
15
BEGIN
16
	ROLLBACK TRANSACTION
17
	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
18
	RETURN '-1'
19
END
20
--
21
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='A'))
22
BEGIN
23
	ROLLBACK TRANSACTION
24
	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
25
	RETURN '-1'
26
END
27
--SET @p_APPROVE_DT = @p_APPROVE_DT 
28

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

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

    
107

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

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

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

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

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

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

    
312
					SET @STEP_PARENT='KT'
313
				END
314
		-- Có DVCM
315
		IF (EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID = @p_REQ_ID))
316
		BEGIN
317
			DECLARE lstCostCenter CURSOR FOR
318
			SELECT COST_ID
319
			FROM dbo.PL_REQUEST_COSTCENTER
320
			WHERE REQ_ID = @p_REQ_ID AND COST_ID IS NOT NULL AND COST_ID <>'';
321
			OPEN lstCostCenter;
322
			FETCH NEXT FROM lstCostCenter
323
			INTO @COST_ID;
324
			WHILE @@FETCH_STATUS = 0
325
			BEGIN
326
				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
327
				LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
328
				WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
329
				BEGIN
330
				INSERT INTO dbo.PL_REQUEST_PROCESS
331
				(
332
					REQ_ID,
333
					PROCESS_ID,
334
					STATUS,
335
					ROLE_USER,
336
					BRANCH_ID,
337
					CHECKER_ID,
338
					APPROVE_DT,
339
					PARENT_PROCESS_ID,
340
					IS_LEAF,
341
					COST_ID,
342
					DVDM_ID,
343
					NOTES,
344
					IS_HAS_CHILD
345
				)
346
				VALUES
347
				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
348
					'DVCM',       -- PROCESS_ID - varchar(10)
349
					'U',          -- STATUS - varchar(5)
350
					'GDDV',       -- ROLE_USER - varchar(50)
351
					'',           -- BRANCH_ID - varchar(15)
352
					'',           -- CHECKER_ID - varchar(15)
353
					NULL,         -- APPROVE_DT - datetime
354
					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
355
					'N',          -- IS_LEAF - varchar(1)
356
					'',           -- COST_ID - varchar(15)
357
					@COST_ID, N'Chờ đơn vị đầu mối xác nhận', 1
358
					-- DVDM_ID - varchar(15)
359
					);
360
				END
361
				ELSE
362
				BEGIN
363

    
364
					UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND
365
					 REQ_ID=@p_REQ_ID  AND COST_ID=@COST_ID
366
				END
367

    
368
				FETCH NEXT FROM lstCostCenter
369
				INTO @COST_ID;
370
			END;
371
			CLOSE lstCostCenter;
372
			DEALLOCATE lstCostCenter;
373
			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))
374
				SET @STEP_PARENT = 'DVCM';
375
		END;
376

    
377
		--Có điều chuyển NS
378
		IF (EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID))
379
		BEGIN
380
				
381
			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)
382
					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)))	
383
			BEGIN
384
  			DECLARE lstTransfer CURSOR FOR
385
  			SELECT FR_BRN_ID,FR_DEP_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID = @p_REQ_ID
386
  					AND(FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID <> @DEP_CREATE)
387
  					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)
388
  					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
389
  												LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
390
  												WHERE PCD.BRANCH_ID=FR_BRN_ID AND PCD.DEP_ID=FR_DEP_ID)))
391
  
392
  			GROUP BY FR_BRN_ID,
393
  						FR_DEP_ID;
394
  			OPEN lstTransfer;
395
  			FETCH NEXT FROM lstTransfer
396
  			INTO @FR_BRANCH_ID,
397
  					@FR_DEP_ID;
398
  			WHILE @@FETCH_STATUS = 0
399
  			BEGIN
400
  				INSERT INTO dbo.PL_REQUEST_PROCESS
401
  				(
402
  					REQ_ID,
403
  					PROCESS_ID,
404
  					STATUS,
405
  					ROLE_USER,
406
  					BRANCH_ID,
407
  					CHECKER_ID,
408
  					APPROVE_DT,
409
  					PARENT_PROCESS_ID,
410
  					IS_LEAF,
411
  					COST_ID,
412
  					DVDM_ID,
413
  					NOTES,
414
  					IS_HAS_CHILD,
415
  					DEP_ID
416
  				)
417
  				VALUES
418
  				(   @p_REQ_ID,     -- REQ_ID - varchar(15)
419
  					'DVDC',        -- PROCESS_ID - varchar(10)
420
  					'U',           -- STATUS - varchar(5)
421
  					'GDDV',        -- ROLE_USER - varchar(50)
422
  					@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
423
  					'',            -- CHECKER_ID - varchar(15)
424
  					NULL,          -- APPROVE_DT - datetime
425
  					@STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
426
  					'N',           -- IS_LEAF - varchar(1)
427
  					'',            -- COST_ID - varchar(15)
428
  					'',            -- DVDM_ID - varchar(15)
429
  					N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID);
430
  				FETCH NEXT FROM lstTransfer
431
  				INTO @FR_BRANCH_ID,
432
  						@FR_DEP_ID;
433
  			END;
434
  			CLOSE lstTransfer;
435
  			DEALLOCATE lstTransfer;
436
  			IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDC'))
437
  				SET @STEP_PARENT = 'DVDC';
438
  		END;
439
      
440
      DECLARE @TOTAL_TRANSFER_CE DECIMAL(18,2),@TOTAL_TRANSFER_OE DECIMAL(18,2)
441
      SET @TOTAL_TRANSFER_CE=(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 AND B.GD_CODE LIKE '%CE%')
442
      SET @TOTAL_TRANSFER_OE=(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 AND B.GD_CODE LIKE '%OE%')
443
      IF(@TOTAL_TRANSFER_CE > 20000000 OR @TOTAL_TRANSFER_OE > 20000000)
444
      BEGIN
445
      INSERT INTO dbo.PL_REQUEST_PROCESS
446
      		(
447
      			REQ_ID,
448
      			PROCESS_ID,
449
      			STATUS,
450
      			ROLE_USER,
451
      			BRANCH_ID,
452
      			CHECKER_ID,
453
      			APPROVE_DT,
454
      			PARENT_PROCESS_ID,
455
      			IS_LEAF,
456
      			COST_ID,
457
      			DVDM_ID,
458
      			NOTES,IS_HAS_CHILD
459
      		)
460
      		VALUES
461
      		(   @p_REQ_ID,    -- REQ_ID - varchar(15)
462
      			'TC',         -- PROCESS_ID - varchar(10)
463
      			'U',          -- STATUS - varchar(5)
464
      			'TC',         -- ROLE_USER - varchar(50)
465
      			'',           -- BRANCH_ID - varchar(15)
466
      			'',           -- CHECKER_ID - varchar(15)
467
      			NULL,         -- APPROVE_DT - datetime
468
      			@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
469
      			'N',          -- IS_LEAF - varchar(1)
470
      			'',           -- COST_ID - varchar(15)
471
      			'',           -- DVDM_ID - varchar(15)
472
      			N'Chờ đơn vị Tài chính xác nhận',1);
473
  		SET @STEP_PARENT = 'TC';
474
      END
475
		-- Đầu mối nhận
476

    
477
--		DECLARE @TABLE_TRANFER TABLE
478
--		(
479
--			TRADE_ID VARCHAR(20), TOTAL_TRANFER DECIMAL(18,2)
480
--		)
481
--		DECLARE @TABLE_TRANFER_APP TABLE
482
--		(
483
--			TRADE_ID VARCHAR(20), TOTAL_APP DECIMAL(18,2)
484
--		)
485
--
486
--
487
--
488
--		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
489
--
490
--		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,'')) )
491
--		BEGIN
492
--			SET @IS_NOIBO=0
493
--		END
494
--		ELSE
495
--			SET  @IS_NOIBO=1
496
--
497
--
498
--		IF(@IS_NOIBO=1)
499
--		BEGIN
500
--		SET @BRANCH_TRANFER=(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
501
--		SET @DEP_TRANFER   =(SELECT TOP 1 FR_BRN_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
502
--
503
--
504
--	
505
--		
506
--
507
--		INSERT INTO @TABLE_TRANFER
508
--		(
509
--		    TRADE_ID,
510
--			TOTAL_TRANFER
511
--		)
512
--		SELECT FR_TRADE_ID,SUM(TOTAL_AMT)  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
513
--		GROUP BY FR_BRN_ID,FR_DEP_ID,FR_TRADE_ID
514
--
515
--		--- Hạn mức phê duyệt
516
--		SET @LIMIT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDDV' AND LIMIT_TYPE='LIMIT_DCNS')
517
--
518
--	---- Tính lũy kế phê duyệt
519
--		INSERT INTO @TABLE_TRANFER_APP
520
--		(
521
--		    TRADE_ID,
522
--		    TOTAL_APP
523
--		)
524
--		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 (
525
--		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'
526
--		)
527
--		GROUP BY FR_TRADE_ID
528
--		
529
--		IF(EXISTS(
530
--		SELECT BT.TRADE_ID FROM @TABLE_TRANFER BT 
531
--		LEFT JOIN @TABLE_TRANFER_APP BTA ON BTA.TRADE_ID = BT.TRADE_ID
532
--		WHERE ISNULL(BT.TOTAL_TRANFER,0) + ISNULL(BTA.TOTAL_APP,0) > @LIMIT_MAX
533
--		))
534
--		BEGIN
535
--			SET @OVER_LIMT=1
536
--		END
537
--		ELSE
538
--			SET @OVER_LIMT =0
539
--
540
--		END
541
--		
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
--		GROUP BY TO_DVDM_ID;
551
--		OPEN lstTransfer;
552
--		FETCH NEXT FROM lstTransfer
553
--		INTO @DVDM_ID;
554
--		WHILE @@FETCH_STATUS = 0
555
--		BEGIN
556
--			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=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
557
--			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
558
--			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
559
--		
560
--			BEGIN
561
--			INSERT INTO dbo.PL_REQUEST_PROCESS
562
--			(
563
--				REQ_ID,
564
--				PROCESS_ID,
565
--				STATUS,
566
--				ROLE_USER,
567
--				BRANCH_ID,
568
--				CHECKER_ID,
569
--				APPROVE_DT,
570
--				PARENT_PROCESS_ID,
571
--				IS_LEAF,
572
--				COST_ID,
573
--				DVDM_ID,
574
--				NOTES,
575
--				IS_HAS_CHILD
576
--			)
577
--			VALUES
578
--			(   @p_REQ_ID,    -- REQ_ID - varchar(15)
579
--				'DVDM_DC',    -- PROCESS_ID - varchar(10)
580
--				'U',          -- STATUS - varchar(5)
581
--				'GDDV',       -- ROLE_USER - varchar(50)
582
--				'',           -- BRANCH_ID - varchar(15)
583
--				'',           -- CHECKER_ID - varchar(15)
584
--				NULL,         -- APPROVE_DT - datetime
585
--				@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
586
--				'N',          -- IS_LEAF - varchar(1)
587
--				'',           -- COST_ID - varchar(15)
588
--				@DVDM_ID,     -- DVDM_ID - varchar(15)
589
--				N'Chờ đơn vị đầu mối xác nhận', 0);
590
--			END
591
--			FETCH NEXT FROM lstTransfer
592
--			INTO @DVDM_ID;
593
--		END;
594
--		CLOSE lstTransfer;
595
--		DEALLOCATE lstTransfer;
596
--
597
--
598
--		IF (EXISTS
599
--		(
600
--			SELECT FR_BRN_ID
601
--			FROM dbo.PL_REQUEST_TRANSFER
602
--			WHERE REQ_DOC_ID = @p_REQ_ID
603
--					AND FR_BRN_ID = @BRANCH_CREATE
604
--					AND FR_DEP_ID = @DEP_CREATE
605
--		)
606
--			)
607
--		BEGIN
608
--			-- Đầu mối cho
609
--			DECLARE lstTransfer CURSOR FOR
610
--			SELECT FR_DVDM_ID
611
--			FROM dbo.PL_REQUEST_TRANSFER
612
--			WHERE REQ_DOC_ID = @p_REQ_ID
613
--					AND FR_BRN_ID = @BRANCH_CREATE
614
--					AND FR_DEP_ID = @DEP_CREATE
615
--					AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
616
--					AND NOT EXISTS
617
--			(
618
--				SELECT *
619
--				FROM dbo.PL_REQUEST_PROCESS
620
--				WHERE REQ_ID = @p_REQ_ID
621
--						AND PROCESS_ID = 'DVDM_DC'
622
--						AND DVDM_ID = FR_DVDM_ID
623
--			)
624
--			AND FR_DVDM_ID <>'DM0000000000048'
625
--			GROUP BY FR_DVDM_ID;
626
--			OPEN lstTransfer;
627
--			FETCH NEXT FROM lstTransfer
628
--			INTO @DVDM_ID;
629
--			WHILE @@FETCH_STATUS = 0
630
--			BEGIN
631
--			IF(NOT EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  AND 
632
--			(ROLE_USER='GDDV' OR ROLE_USER IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV') ) 
633
--			AND ( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC
634
--			LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID
635
--			WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))
636
--			BEGIN
637
--				INSERT INTO dbo.PL_REQUEST_PROCESS
638
--				(
639
--					REQ_ID,
640
--					PROCESS_ID,
641
--					STATUS,
642
--					ROLE_USER,
643
--					BRANCH_ID,
644
--					CHECKER_ID,
645
--					APPROVE_DT,
646
--					PARENT_PROCESS_ID,
647
--					IS_LEAF,
648
--					COST_ID,
649
--					DVDM_ID,
650
--					NOTES,
651
--					IS_HAS_CHILD
652
--				)
653
--				VALUES
654
--				(   @p_REQ_ID,    -- REQ_ID - varchar(15)
655
--					'DVDM_DC',    -- PROCESS_ID - varchar(10)
656
--					'U',          -- STATUS - varchar(5)
657
--					'GDDV',       -- ROLE_USER - varchar(50)
658
--					'',           -- BRANCH_ID - varchar(15)
659
--					'',           -- CHECKER_ID - varchar(15)
660
--					NULL,         -- APPROVE_DT - datetime
661
--					@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
662
--					'N',          -- IS_LEAF - varchar(1)
663
--					'',           -- COST_ID - varchar(15)
664
--					@DVDM_ID,     -- DVDM_ID - varchar(15)
665
--					N'Chờ đơn vị đầu mối xác nhận', 0);
666
--			END
667
--				FETCH NEXT FROM lstTransfer
668
--				INTO @DVDM_ID;
669
--			END;
670
--			CLOSE lstTransfer;
671
--			DEALLOCATE lstTransfer;
672
--
673
--
674
--
675
--
676
--			IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
677
--				SET @STEP_PARENT='DVDM_DC'
678
--
679
--
680
--		END;
681

    
682

    
683

    
684
--		INSERT INTO dbo.PL_REQUEST_PROCESS
685
--		(
686
--			REQ_ID,
687
--			PROCESS_ID,
688
--			STATUS,
689
--			ROLE_USER,
690
--			BRANCH_ID,
691
--			CHECKER_ID,
692
--			APPROVE_DT,
693
--			PARENT_PROCESS_ID,
694
--			IS_LEAF,
695
--			COST_ID,
696
--			DVDM_ID,
697
--			NOTES,IS_HAS_CHILD
698
--		)
699
--		VALUES
700
--		(   @p_REQ_ID,    -- REQ_ID - varchar(15)
701
--			'TC',         -- PROCESS_ID - varchar(10)
702
--			'U',          -- STATUS - varchar(5)
703
--			'TC',         -- ROLE_USER - varchar(50)
704
--			'',           -- BRANCH_ID - varchar(15)
705
--			'',           -- CHECKER_ID - varchar(15)
706
--			NULL,         -- APPROVE_DT - datetime
707
--			@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
708
--			'N',          -- IS_LEAF - varchar(1)
709
--			'',           -- COST_ID - varchar(15)
710
--			'',           -- DVDM_ID - varchar(15)
711
--			N'Chờ đơn vị Tài chính xác nhận',1);
712
--		SET @STEP_PARENT = 'TC';
713
--		END
714

    
715
	END;
716
	
717
		
718
		 
719
		--IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
720
		--AND ((
721
		--	BRANCH_ID=@BRANCH_CREATE 
722
		--	AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
723
		--	AND (DEP_ID IS NULL OR DEP_ID='')))
724
		--	)
725
		--	OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
726
		--	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)
727
		--	)
728
		--))
729
		--BEGIN
730
		--INSERT INTO dbo.PL_REQUEST_PROCESS
731
		--		(
732
		--		REQ_ID,
733
		--		PROCESS_ID,
734
		--		STATUS,
735
		--		ROLE_USER,
736
		--		BRANCH_ID,
737
		--		DEP_ID,
738
		--		CHECKER_ID,
739
		--		APPROVE_DT,
740
		--		PARENT_PROCESS_ID,
741
		--		IS_LEAF,
742
		--		NOTES
743
		--		)
744
		--		VALUES
745
		--		(   
746
		--		@p_REQ_ID,               -- REQ_ID - varchar(15)
747
		--		'DVC',                  -- PROCESS_ID - varchar(10)
748
		--		'U',                     -- STATUS - varchar(5)
749
		--		'GDDV',                      -- ROLE_USER - varchar(50)
750
		--		@BRANCH_CREATE,
751
		--		@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
752
		--		NULL,           -- CHECKER_ID - varchar(15)
753
		--		NULL , -- APPROVE_DT - datetime
754
		--		@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');
755

    
756
		--SET @STEP_CURR = 'DVC';
757
		--SET @STEP_PARENT = 'DVC';
758
		--END
759

    
760
		SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
761
		IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)
762
		BEGIN
763
		SET @IS_NEXT =
764
		(
765
			SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
766
		);
767

    
768

    
769

    
770
		IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)
771
		BEGIN
772

    
773
			DECLARE lstCostCenter CURSOR FOR
774
			SELECT DVDM_ID,
775
				   TOTAL_AMT
776
			FROM @DATA_DVDM
777
			WHERE IS_GDK=1;
778
			OPEN lstCostCenter;
779
			FETCH NEXT FROM lstCostCenter
780
			INTO @DVDM_ID,
781
				 @TOTAL_AMT_GD;
782
			WHILE @@FETCH_STATUS = 0
783
			BEGIN
784
				INSERT INTO dbo.PL_REQUEST_PROCESS
785
				(
786
					REQ_ID,
787
					PROCESS_ID,
788
					STATUS,
789
					ROLE_USER,
790
					BRANCH_ID,
791
					CHECKER_ID,
792
					APPROVE_DT,
793
					PARENT_PROCESS_ID,
794
					IS_LEAF,
795
					COST_ID,
796
					DVDM_ID,
797
					NOTES,
798
					IS_HAS_CHILD
799
				)
800
				VALUES
801
				(   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
802
					'GDK_TT',                                  -- PROCESS_ID - varchar(10)
803
					'U',                                       -- STATUS - varchar(5)
804
					'GDK',                                     -- ROLE_USER - varchar(50)
805
					'',                                        -- BRANCH_ID - varchar(15)
806
					'',                                        -- CHECKER_ID - varchar(15)
807
					NULL,                                      -- APPROVE_DT - datetime
808
					@STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
809
					'N',                                       -- IS_LEAF - varchar(1)
810
					'',                                        -- COST_ID - varchar(15)
811
					@DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
812
					);
813
				FETCH NEXT FROM lstCostCenter
814
				INTO @DVDM_ID,
815
					 @TOTAL_AMT_GD;
816
			END;
817
			CLOSE lstCostCenter;
818
			DEALLOCATE lstCostCenter;
819

    
820
			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))
821
			BEGIN
822
				INSERT INTO dbo.PL_REQUEST_PROCESS
823
				(
824
					REQ_ID,
825
					PROCESS_ID,
826
					STATUS,
827
					ROLE_USER,
828
					BRANCH_ID,
829
					CHECKER_ID,
830
					APPROVE_DT,
831
					PARENT_PROCESS_ID,
832
					IS_LEAF,
833
					COST_ID,
834
					DVDM_ID,
835
					NOTES,IS_HAS_CHILD
836
				)
837
				VALUES
838
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
839
					'GDK_TT',        -- PROCESS_ID - varchar(10)
840
					'U',        -- STATUS - varchar(5)
841
					'GDK',        -- ROLE_USER - varchar(50)
842
					'',        -- BRANCH_ID - varchar(15)
843
					'',        -- CHECKER_ID - varchar(15)
844
					NULL, -- APPROVE_DT - datetime
845
					@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
846
					'N',        -- IS_LEAF - varchar(1)
847
					'',        -- COST_ID - varchar(15)
848
					@DVDM_CDT ,
849
					N'Chờ giám đốc khối xác nhận',
850
					0        -- DVDM_ID - varchar(15)
851
					)
852
									
853
			END
854

    
855
			SET @IS_NEXT =
856
			(
857
				SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
858
			);
859

    
860
			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)
861
			BEGIN
862
				SET @IS_NEXT=1
863
			END
864

    
865
			SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
866

    
867
			
868
			IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
869
			BEGIN
870
				SET @STEP_PARENT='GDK_TT'	
871
			END
872

    
873
				
874
			--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)
875

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

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

    
929
				SET @IS_NEXT =
930
				(
931
					SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
932
				);
933

    
934
				
935
				END
936

    
937
				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'))
938
				BEGIN
939
					INSERT INTO dbo.PL_REQUEST_PROCESS
940
					(
941
						REQ_ID,
942
						PROCESS_ID,
943
						STATUS,
944
						ROLE_USER,
945
						BRANCH_ID,
946
						CHECKER_ID,
947
						APPROVE_DT,
948
						PARENT_PROCESS_ID,
949
						IS_LEAF,
950
						COST_ID,
951
						DVDM_ID,
952
						NOTES,
953
						IS_HAS_CHILD
954
					)
955
					VALUES
956
					(   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
957
						'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
958
						'U',                                                -- STATUS - varchar(5)
959
						'PTGD',                                             -- ROLE_USER - varchar(50)
960
						'',                                                 -- BRANCH_ID - varchar(15)
961
						'',                                                 -- CHECKER_ID - varchar(15)
962
						NULL,                                               -- APPROVE_DT - datetime
963
						@STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
964
						'N',                                                -- IS_LEAF - varchar(1)
965
						'',                                                 -- COST_ID - varchar(15)
966
						'DM0000000000014', N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
967
						);
968
				END
969

    
970

    
971
				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))
972
								BEGIN
973
									INSERT INTO dbo.PL_REQUEST_PROCESS
974
									(
975
										REQ_ID,
976
										PROCESS_ID,
977
										STATUS,
978
										ROLE_USER,
979
										BRANCH_ID,
980
										CHECKER_ID,
981
										APPROVE_DT,
982
										PARENT_PROCESS_ID,
983
										IS_LEAF,
984
										COST_ID,
985
										DVDM_ID,
986
										NOTES,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_CDT ,
1000
										N'Chờ giám đốc khối xác nhận',
1001
										0        -- DVDM_ID - varchar(15)
1002
									  )
1003
									
1004
								END
1005
	
1006
				SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
1007
				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)
1008
				BEGIN
1009
				SET @IS_NEXT=1
1010
				END
1011

    
1012
				IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))
1013
				BEGIN
1014
				SET @STEP_PARENT='PTGDK_TT'	
1015
				END
1016

    
1017

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

    
1155
			--END
1156
		
1157
			END;
1158

    
1159
		END;
1160
		END
1161
				
1162
		END
1163
		
1164
		INSERT INTO dbo.PL_REQUEST_PROCESS
1165
		(
1166
			REQ_ID,
1167
			PROCESS_ID,
1168
			STATUS,
1169
			ROLE_USER,
1170
			BRANCH_ID,
1171
			CHECKER_ID,
1172
			APPROVE_DT,
1173
			PARENT_PROCESS_ID,
1174
			IS_LEAF,
1175
			NOTES
1176
		)
1177
		VALUES
1178
		(   @p_REQ_ID, -- REQ_ID - varchar(15)
1179
			'APPROVE', -- PROCESS_ID - varchar(10)
1180
			'U',       -- STATUS - varchar(5)
1181
			'',        -- ROLE_USER - varchar(50)
1182
			'',        -- BRANCH_ID - varchar(15)
1183
			'',        -- CHECKER_ID - varchar(15)
1184
			NULL,      -- APPROVE_DT - datetime
1185
			@STEP_PARENT, 'Y', N'Hoàn tất');
1186

    
1187

    
1188

    
1189
		IF @@Error <> 0
1190
			GOTO ABORT;
1191

    
1192

    
1193

    
1194
		DECLARE @PROCESS_ID_CURR VARCHAR(10);
1195
		SET @PROCESS_ID_CURR =
1196
		(
1197
			SELECT TOP 1
1198
				   PROCESS_ID
1199
			FROM dbo.PL_REQUEST_PROCESS
1200
			WHERE REQ_ID = @p_REQ_ID
1201
				  AND PARENT_PROCESS_ID = 'APPNEW'
1202
		);
1203

    
1204
		UPDATE dbo.PL_REQUEST_PROCESS
1205
		SET STATUS = 'C'
1206
		WHERE PARENT_PROCESS_ID = 'APPNEW'
1207
			  AND REQ_ID = @p_REQ_ID;
1208
		UPDATE dbo.PL_REQUEST_DOC
1209
		SET AUTH_STATUS = @p_AUTH_STATUS,
1210
			APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103),
1211
			CHECKER_ID = @p_CHECKER_ID,
1212
			PROCESS_ID = @PROCESS_ID_CURR
1213
		WHERE REQ_ID = @p_REQ_ID;
1214

    
1215
		UPDATE dbo.PL_REQUEST_DOC_DT
1216
		SET CHECKER_ID=@p_CHECKER_ID,
1217
		APPROVE_DT=CONVERT(DATETIME,@P_APPROVE_DT,103)
1218
		WHERE REQ_ID = @p_REQ_ID;
1219

    
1220
		INSERT INTO dbo.PL_PROCESS
1221
		(
1222
			REQ_ID,
1223
			PROCESS_ID,
1224
			CHECKER_ID,
1225
			APPROVE_DT,
1226
			PROCESS_DESC,
1227
			NOTES
1228
		)
1229
		VALUES
1230
		(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
1231
			'APPNEW',                                               -- PROCESS_ID - varchar(10)
1232
			@p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
1233
			CONVERT(DATETIME,@P_APPROVE_DT,103),                                        -- APPROVE_DT - datetime
1234
			@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)
1235
			);
1236
		IF (EXISTS
1237
		(
1238
			SELECT REQ_ID
1239
			FROM dbo.PL_REQUEST_DOC
1240
			WHERE REQ_ID = @p_REQ_ID
1241
				  AND PROCESS_ID = 'APPROVE'
1242
		)
1243
		   )
1244
		BEGIN
1245
			EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
1246
			EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
1247
			SET @Result = '0';
1248
		END;
1249
		SET @Result = '1';
1250
END
1251
COMMIT TRANSACTION;
1252
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))
1253
BEGIN
1254
	SELECT @Result AS Result,
1255
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
1256
       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;
1257
		RETURN '0';
1258
END
1259
ELSE
1260
BEGIN
1261
	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
1262
	RETURN '0'
1263
END
1264
ABORT:
1265
BEGIN
1266

    
1267
    ROLLBACK TRANSACTION;
1268
    SELECT '-1' AS Result,
1269
           '' ROLE_NOTIFI,
1270
           '' ErrorDesc;
1271
    RETURN '-1';
1272
END;