Project

General

Profile

FILE 6.txt

Truong Nguyen Vu, 09/25/2020 04:12 PM

 
1

    
2
ALTER PROCEDURE [dbo].[PL_REQUEST_PROCESS_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 DATETIME = NULL,
7
	@p_ROLE_LOGIN VARCHAR(50) = NULL,
8
	@p_BRANCH_LOGIN VARCHAR(15),
9
	@p_PROCESS_DESC NVARCHAR(MAX)
10
	
11
AS
12

    
13
--SET @p_APPROVE_DT= CAST(@p_APPROVE_DT AS DATE)
14
	--Validation is here
15
DECLARE @ERRORSYS NVARCHAR(15) = '' 
16
  IF ( NOT EXISTS ( SELECT * FROM PL_REQUEST_DOC WHERE  REQ_ID = @p_REQ_ID))
17
	SET @ERRORSYS = 'REQ-00002'
18
IF @ERRORSYS <> '' 
19
BEGIN
20
   ROLLBACK TRANSACTION
21
	SELECT ErrorCode Result, ErrorDesc ErrorDesc FROM SYS_ERROR WHERE ErrorCode = @ERRORSYS
22
	RETURN '0'
23
END 
24

    
25
BEGIN TRANSACTION
26
		IF(EXISTS(SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_ID AND STATUS_JOB ='R') OR (EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND AUTH_STATUS ='R'))
27
		OR(EXISTS(SELECT * FROM PL_REQUEST_PROCESS WHERE REQ_ID =@p_REQ_ID AND STATUS ='R')))
28
		BEGIN
29
			ROLLBACK TRANSACTION
30
			SELECT '-1' as Result,N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+N' đang 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
31
			RETURN '-1'
32
		END
33
	--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
34
	--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
35

    
36
	 DECLARE
37
	@Result VARCHAR(5),
38
	@PROCESS_CURR VARCHAR(10),
39
	@STEP_CURR INT,
40
	@STEP_NEXT INT,
41
	@PROCESS_NEXT VARCHAR(10),
42
	@ROLE_USER_NOTIFI VARCHAR(50),
43
	@DEP_ID VARCHAR(15),
44
	@IS_LEAF VARCHAR(1),
45
	@NOTES NVARCHAR(500),
46
	@IS_NEXT BIT,@ROLE_USER VARCHAR(20),@ROLE_NEXT VARCHAR(20),@LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20),@TOTAL_TRANSFER DECIMAL(18,2),@PROCESS_ID_NEXT VARCHAR(20),
47
	@IS_NEXT_CDT BIT,
48
	@TOTAL_AMT DECIMAL(18,2),
49
	@STEP_PARENT VARCHAR(20),
50
	@NOTES_CDT VARCHAR(20),
51
	@ROLE_CDT VARCHAR(20),
52
	@DVDM_CDT VARCHAR(20),
53
	@LIMIT_VALUE_CDT DECIMAL(18,2),
54
	@DVDM_ID_TT VARCHAR(20),
55
	@TOTAL_AMT_GD DECIMAL(18,2),
56
	@BRANCH_CREATE VARCHAR(15),
57
	@BRANCH_CREATE_TYPE VARCHAR(15),
58
	@DEP_CREATE VARCHAR(15),
59
	@BRANCH_PARENT VARCHAR(15)
60
	DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20),@ROLE_ID VARCHAR(20),@DVDM_ID_CDT VARCHAR(20)
61

    
62
	SET @DEP_ID =(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_CHECKER_ID)
63

    
64
	SET @PROCESS_CURR= (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
65
	SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
66

    
67
	DECLARE @DATA_DVDM TABLE
68
(
69
    DVDM_ID VARCHAR(20),
70
    TOTAL_AMT DECIMAL(12, 0),
71
	IS_PTGD BIT
72
);
73
		
74
		SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
75
	DECLARE @DVDM_ID TABLE (
76
		DVDM_ID VARCHAR(15)
77
	)
78
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
79

    
80
IF(@PROCESS_CURR LIKE '%_DC')
81
BEGIN
82
	SELECT @ERROR=ERROR,
83
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
84
		IF(@ERROR=1)
85
		BEGIN
86
	 ROLLBACK TRANSACTION;
87
    SELECT '-1'  Result,
88
           @EROOR_DES ErrorDesc
89
   
90
    RETURN '0';
91
	END
92
END
93
SELECT @ERROR=ERROR,
94
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDTT','PL_REQUEST_DOC',@p_CHECKER_ID,@PROCESS_CURR)
95
		IF(@ERROR=1)
96
		BEGIN
97
	 ROLLBACK TRANSACTION;
98
    SELECT '-1'  Result,
99
           @EROOR_DES ErrorDesc
100
   
101
    RETURN '0';
102
END
103
	
104
	
105
		INSERT INTO @DATA_DVDM
106
	SELECT KHOI_ID,
107
		   SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
108
	FROM dbo.PL_REQUEST_DOC_DT DT
109
	LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
110
	WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''
111
	GROUP BY KHOI_ID,DM.IS_PTGD;
112
	
113
	SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')
114

    
115

    
116

    
117

    
118

    
119
	INSERT INTO @DVDM_ID
120
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@p_BRANCH_LOGIN) GROUP BY DVDM_ID
121
	
122

    
123
	
124
			
125
	UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='P',NOTES=@NOTES+N' đã phê duyệt',CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND (ROLE_USER=@p_ROLE_LOGIN OR ROLE_USER IN (SELECT ROLE_NEW FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_OLD=@p_ROLE_LOGIN) )AND ( DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR DVDM_ID ='' OR DVDM_ID IS NULL)
126
	
127
	
128
	IF(@PROCESS_CURR <>'DVCM' AND @PROCESS_CURR <>'DVDM' AND @PROCESS_CURR <>'TC')
129
	BEGIN
130
		UPDATE dbo.PL_REQUEST_DOC_DT SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_ID=@p_REQ_ID AND  ( KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT' OR @p_ROLE_LOGIN='GDDV' OR @p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV' ) )
131
	END
132
	IF(@PROCESS_CURR LIKE '%_DC')
133
	BEGIN
134
		UPDATE dbo.PL_REQUEST_TRANSFER SET CHECKER_ID=@p_CHECKER_ID,APPROVE_DT=@p_APPROVE_DT WHERE REQ_DOC_ID=@p_REQ_ID AND  ( FR_KHOI_ID IN (SELECT DVDM_ID FROM @DVDM_ID) OR @p_ROLE_LOGIN='TGD' OR @p_ROLE_LOGIN='HDQT' OR @p_ROLE_LOGIN IN (SELECT ROLE_OLD FROM dbo.TL_SYS_ROLE_MAPPING WHERE ROLE_NEW='GDDV' ) )
135
	END
136
	
137
	INSERT INTO dbo.PL_PROCESS
138
			(
139
				REQ_ID,
140
				PROCESS_ID,
141
				CHECKER_ID,
142
				APPROVE_DT,
143
				PROCESS_DESC,NOTES
144
			)
145
			VALUES
146
			(   @p_REQ_ID,        -- REQ_ID - varchar(15)
147
				@PROCESS_CURR,        -- PROCESS_ID - varchar(10)
148
				@p_CHECKER_ID,        -- CHECKER_ID - varchar(15)
149
				GETDATE(), -- APPROVE_DT - datetime
150
				@p_PROCESS_DESC ,@NOTES+N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
151
			)	
152
	
153
	
154
		
155

    
156

    
157
		SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
158

    
159
	
160
		SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
161

    
162

    
163
			
164
	SET @Result='1'
165
	IF(NOT EXISTS(SELECT PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR AND [STATUS] <> 'P'))
166
	BEGIN	
167

    
168
			IF(@PROCESS_CURR LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE '%_DC' AND @PROCESS_NEXT NOT LIKE 'TC')
169
			BEGIN
170
				
171

    
172
				SET @ROLE_USER=(SELECT TOP 1 ROLE_USER FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@PROCESS_CURR)
173
				IF(@ROLE_USER <> 'TGD')
174
				BEGIN
175
					
176
					
177
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
178
							SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF)
179
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
180

    
181
							IF(@TOTAL_TRANSFER>@LIMIT_APP)
182
							BEGIN
183
							DECLARE @LEVEL INT
184
								SELECT @LEVEL=BRANCH_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND ROLE_ID =@ROLE_USER
185
								SET @LEVEL=@LEVEL+1
186
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=@LEVEL 
187
								IF(@ROLE_NEXT='PTGD' AND (EXISTS(SELECT * FROM dbo.CM_DVDM WHERE IS_KHOI=1 AND DVDM_ID=@KHOI_ID_TF AND IS_PTGD=0) OR EXISTS (SELECT DVDM_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='PTGD' AND DVDM_ID=@KHOI_ID_TF)))
188
								BEGIN
189
								SELECT TOP 1 @ROLE_NEXT= ROLE_ID,@PROCESS_ID_NEXT=NOTES FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='DCNS' AND BRANCH_ID=(@LEVEL + 1)
190
							
191
								END
192
								SET @NOTES =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_ID_NEXT LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
193
								
194
								INSERT INTO dbo.PL_REQUEST_PROCESS
195
								(
196
								    REQ_ID,
197
								    PROCESS_ID,
198
								    STATUS,
199
								    ROLE_USER,
200
								    BRANCH_ID,
201
								    CHECKER_ID,
202
								    APPROVE_DT,
203
								    PARENT_PROCESS_ID,
204
								    IS_LEAF,
205
								    COST_ID,
206
								    DVDM_ID,
207
								    NOTES,
208
								    IS_HAS_CHILD,
209
								    DEP_ID
210
								)
211
								VALUES
212
								(   @p_REQ_ID,        -- REQ_ID - varchar(15)
213
								    @PROCESS_ID_NEXT,        -- PROCESS_ID - varchar(10)
214
								    'U',        -- STATUS - varchar(5)
215
								    @ROLE_NEXT,        -- ROLE_USER - varchar(50)
216
								    '',        -- BRANCH_ID - varchar(15)
217
								    '',        -- CHECKER_ID - varchar(15)
218
								    NULL, -- APPROVE_DT - datetime
219
								    @PROCESS_CURR,        -- PARENT_PROCESS_ID - varchar(10)
220
								    'N',        -- IS_LEAF - varchar(1)
221
								    '',        -- COST_ID - varchar(15)
222
								    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
223
								    N'Chờ '+@NOTES+' phê duyệt',       -- NOTES - nvarchar(500)
224
								    0,      -- IS_HAS_CHILD - bit
225
								    ''         -- DEP_ID - varchar(20)
226
								)
227
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@PROCESS_ID_NEXT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
228
							SET @PROCESS_NEXT=@PROCESS_ID_NEXT
229
							END
230
							ELSE
231
							BEGIN
232
							SET @STEP_PARENT=@PROCESS_CURR
233
							UPDATE dbo.LIMIT_ACCUMULATE SET TOTAL_APP_AMT = ISNULL(TOTAL_APP_AMT,0) + @TOTAL_TRANSFER WHERE ROLE_ID=@ROLE_USER AND DVDM_ID=@KHOI_ID_TF
234
						   -- INSERT PL_TRADE_DETAIL
235
						   
236
						
237
						   ---
238
							BEGIN
239
									IF(@BRANCH_CREATE_TYPE='PGD')
240
									BEGIN
241
	
242
										SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
243
										IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND BRANCH_ID=@BRANCH_PARENT AND (DEP_ID IS NULL OR DEP_ID='')))
244
										BEGIN
245
											INSERT INTO dbo.PL_REQUEST_PROCESS
246
											(
247
											REQ_ID,
248
											PROCESS_ID,
249
											STATUS,
250
											ROLE_USER,
251
											BRANCH_ID,
252
											DEP_ID,
253
											CHECKER_ID,
254
											APPROVE_DT,
255
											PARENT_PROCESS_ID,
256
											IS_LEAF,
257
											NOTES
258
											)
259
											VALUES
260
											(   
261
											@p_REQ_ID,               -- REQ_ID - varchar(15)
262
											'DVC',                  -- PROCESS_ID - varchar(10)
263
											'U',                     -- STATUS - varchar(5)
264
											'GDDV',                      -- ROLE_USER - varchar(50)
265
											@BRANCH_PARENT,
266
											NULL,                      -- BRANCH_ID - varchar(15)
267
											NULL,           -- CHECKER_ID - varchar(15)
268
											NULL , -- APPROVE_DT - datetime
269
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
270

    
271
											--SET @STEP_CURR = 'DVC';
272
											SET @STEP_PARENT = 'DVC';
273
										END
274
	
275
									END
276
									ELSE 
277
									IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
278
									AND ((
279
										BRANCH_ID=@BRANCH_CREATE 
280
										AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
281
										AND (DEP_ID IS NULL OR DEP_ID='')))
282
										)
283
											OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
284
											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)
285
											)
286
									))
287
									BEGIN
288
									INSERT INTO dbo.PL_REQUEST_PROCESS
289
											(
290
											REQ_ID,
291
											PROCESS_ID,
292
											STATUS,
293
											ROLE_USER,
294
											BRANCH_ID,
295
											DEP_ID,
296
											CHECKER_ID,
297
											APPROVE_DT,
298
											PARENT_PROCESS_ID,
299
											IS_LEAF,
300
											NOTES
301
											)
302
											VALUES
303
											(   
304
											@p_REQ_ID,               -- REQ_ID - varchar(15)
305
											'DVC',                  -- PROCESS_ID - varchar(10)
306
											'U',                     -- STATUS - varchar(5)
307
											'GDDV',                      -- ROLE_USER - varchar(50)
308
											@BRANCH_CREATE,
309
											@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
310
											NULL,           -- CHECKER_ID - varchar(15)
311
											NULL , -- APPROVE_DT - datetime
312
											@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
313

    
314
									--SET @STEP_CURR = 'DVC';
315
									SET @STEP_PARENT = 'DVC';
316
									END
317

    
318

    
319

    
320

    
321
								
322
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))
323
								SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))
324
								SET @TOTAL_AMT = (SELECT TOTAL_AMT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)
325
								IF((@IS_NEXT=1 OR @IS_NEXT_CDT=1 )AND NOT EXISTS (SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='TGD'))
326
								BEGIN
327
								IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>'') OR @IS_NEXT_CDT=1)
328
								BEGIN
329
								DECLARE lstCostCenter CURSOR FOR
330
								SELECT DVDM_ID  FROM @DATA_DVDM WHERE   NOT EXISTS(
331
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PL_REQUEST_PROCESS.DVDM_ID=[@DATA_DVDM].DVDM_ID AND ROLE_USER='GDK'
332
								)
333
								GROUP BY DVDM_ID
334
										 OPEN lstCostCenter
335
		 						FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
336
								WHILE @@FETCH_STATUS = 0 
337
								BEGIN 
338
									INSERT INTO dbo.PL_REQUEST_PROCESS
339
									(
340
										REQ_ID,
341
										PROCESS_ID,
342
										STATUS,
343
										ROLE_USER,
344
										BRANCH_ID,
345
										CHECKER_ID,
346
										APPROVE_DT,
347
										PARENT_PROCESS_ID,
348
										IS_LEAF,
349
										COST_ID,
350
										DVDM_ID,
351
										NOTES,IS_HAS_CHILD
352
									)
353
									VALUES
354
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
355
										'GDK_TT',        -- PROCESS_ID - varchar(10)
356
										'U',        -- STATUS - varchar(5)
357
										'GDK',        -- ROLE_USER - varchar(50)
358
										'',        -- BRANCH_ID - varchar(15)
359
										'',        -- CHECKER_ID - varchar(15)
360
										NULL, -- APPROVE_DT - datetime
361
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
362
										'N',        -- IS_LEAF - varchar(1)
363
										'',        -- COST_ID - varchar(15)
364
										@DVDM_ID_TT ,
365
										N'Chờ giám đốc khối xác nhận',
366
										0        -- DVDM_ID - varchar(15)
367
									  )
368
									 
369
								FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
370
								END
371
								CLOSE lstCostCenter
372
								DEALLOCATE lstCostCenter
373
		
374
								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))
375
								BEGIN
376
									INSERT INTO dbo.PL_REQUEST_PROCESS
377
									(
378
										REQ_ID,
379
										PROCESS_ID,
380
										STATUS,
381
										ROLE_USER,
382
										BRANCH_ID,
383
										CHECKER_ID,
384
										APPROVE_DT,
385
										PARENT_PROCESS_ID,
386
										IS_LEAF,
387
										COST_ID,
388
										DVDM_ID,
389
										NOTES,IS_HAS_CHILD
390
									)
391
									VALUES
392
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
393
										'GDK_TT',        -- PROCESS_ID - varchar(10)
394
										'U',        -- STATUS - varchar(5)
395
										'GDK',        -- ROLE_USER - varchar(50)
396
										'',        -- BRANCH_ID - varchar(15)
397
										'',        -- CHECKER_ID - varchar(15)
398
										NULL, -- APPROVE_DT - datetime
399
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
400
										'N',        -- IS_LEAF - varchar(1)
401
										'',        -- COST_ID - varchar(15)
402
										@DVDM_CDT ,
403
										N'Chờ giám đốc khối xác nhận',
404
										0        -- DVDM_ID - varchar(15)
405
									  )
406
									 	
407
								END
408
								IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))
409
								BEGIN
410
								SET @STEP_PARENT='GDK_TT'	
411
								END
412

    
413

    
414
								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)
415
								SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))
416
								SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))
417
								
418
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
419
								BEGIN
420
								IF(EXISTS(SELECT DVDM_ID  FROM @DATA_DVDM WHERE  IS_PTGD=1 AND NOT EXISTS(
421
									SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PL_REQUEST_PROCESS.DVDM_ID=[@DATA_DVDM].DVDM_ID AND ROLE_USER='PTGD'
422
								) ) OR @IS_NEXT_CDT=1)
423
									BEGIN
424
									DECLARE lstCostCenter CURSOR FOR
425
									SELECT DVDM_ID  FROM @DATA_DVDM DT
426
									 WHERE IS_PTGD=1 AND NOT EXISTS(
427
										SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PL_REQUEST_PROCESS.DVDM_ID=DT.DVDM_ID AND ROLE_USER='PTGD'
428
									)
429
									GROUP BY DVDM_ID
430
									OPEN lstCostCenter
431
		 							FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
432
									WHILE @@FETCH_STATUS = 0 
433
									BEGIN 
434
										INSERT INTO dbo.PL_REQUEST_PROCESS
435
										(
436
											REQ_ID,
437
											PROCESS_ID,
438
											STATUS,
439
											ROLE_USER,
440
											BRANCH_ID,
441
											CHECKER_ID,
442
											APPROVE_DT,
443
											PARENT_PROCESS_ID,
444
											IS_LEAF,
445
											COST_ID,
446
											DVDM_ID,
447
											NOTES,IS_HAS_CHILD
448
										)
449
										VALUES
450
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
451
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
452
											'U',        -- STATUS - varchar(5)
453
											'PTGD',        -- ROLE_USER - varchar(50)
454
											'',        -- BRANCH_ID - varchar(15)
455
											'',        -- CHECKER_ID - varchar(15)
456
											NULL, -- APPROVE_DT - datetime
457
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
458
											'N',        -- IS_LEAF - varchar(1)
459
											'',        -- COST_ID - varchar(15)
460
											@DVDM_ID_TT ,
461
											N'Chờ phó tổng giám đốc khối xác nhận',
462
											0        -- DVDM_ID - varchar(15)
463
										  )	
464
									  
465
									
466
									FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT
467
									END
468
									CLOSE lstCostCenter
469
									DEALLOCATE lstCostCenter
470
									
471
									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))
472
									BEGIN
473
												INSERT INTO dbo.PL_REQUEST_PROCESS
474
										(
475
											REQ_ID,
476
											PROCESS_ID,
477
											STATUS,
478
											ROLE_USER,
479
											BRANCH_ID,
480
											CHECKER_ID,
481
											APPROVE_DT,
482
											PARENT_PROCESS_ID,
483
											IS_LEAF,
484
											COST_ID,
485
											DVDM_ID,
486
											NOTES,IS_HAS_CHILD
487
										)
488
										VALUES
489
										(   @p_REQ_ID,        -- REQ_ID - varchar(15)
490
											'PTGDK_TT',        -- PROCESS_ID - varchar(10)
491
											'U',        -- STATUS - varchar(5)
492
											'PTGD',        -- ROLE_USER - varchar(50)
493
											'',        -- BRANCH_ID - varchar(15)
494
											'',        -- CHECKER_ID - varchar(15)
495
											NULL, -- APPROVE_DT - datetime
496
											@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
497
											'N',        -- IS_LEAF - varchar(1)
498
											'',        -- COST_ID - varchar(15)
499
											@DVDM_CDT ,
500
											N'Chờ phó tổng giám đốc khối xác nhận',
501
											0        -- DVDM_ID - varchar(15)
502
										  )	
503
									  
504
										
505
									END
506
									SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))
507
									SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))
508
								END
509
								IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_DOC_DT DT
510
								LEFT JOIN dbo.CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1 WHERE REQ_ID=@p_REQ_ID AND DM.IS_PTGD=0 ) AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))=1 )
511
								BEGIN
512
								SET @IS_NEXT=1
513
								END
514
									IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PGDK_TT'))
515
								BEGIN
516
								SET @STEP_PARENT='PTGDK_TT'	
517
								END
518

    
519
								IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)
520
								BEGIN
521
									 INSERT INTO dbo.PL_REQUEST_PROCESS
522
									(
523
										REQ_ID,
524
										PROCESS_ID,
525
										STATUS,
526
										ROLE_USER,
527
										BRANCH_ID,
528
										CHECKER_ID,
529
										APPROVE_DT,
530
										PARENT_PROCESS_ID,
531
										IS_LEAF,
532
										COST_ID,
533
										DVDM_ID,
534
										NOTES,IS_HAS_CHILD
535
									)
536
									VALUES
537
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
538
										'TGD',        -- PROCESS_ID - varchar(10)
539
										'U',        -- STATUS - varchar(5)
540
										'TGD',        -- ROLE_USER - varchar(50)
541
										'',        -- BRANCH_ID - varchar(15)
542
										'',        -- CHECKER_ID - varchar(15)
543
										NULL, -- APPROVE_DT - datetime
544
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
545
										'N',        -- IS_LEAF - varchar(1)
546
										'',        -- COST_ID - varchar(15)
547
										'' ,
548
										N'Chờ tổng giám đốc xác nhận',
549
										0        -- DVDM_ID - varchar(15)
550
									  )
551
									  SET @STEP_PARENT='TGD'	
552
									  IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
553
			BEGIN
554
				
555

    
556
				INSERT INTO dbo.PL_REQUEST_PROCESS
557
            (
558
                REQ_ID,
559
                PROCESS_ID,
560
                STATUS,
561
                ROLE_USER,
562
                BRANCH_ID,
563
                CHECKER_ID,
564
                APPROVE_DT,
565
                PARENT_PROCESS_ID,
566
                IS_LEAF,
567
                COST_ID,
568
                DVDM_ID,
569
                NOTES,
570
                IS_HAS_CHILD
571
            )
572
            VALUES
573
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
574
                'HDQT',                               -- PROCESS_ID - varchar(10)
575
                'U',                                 -- STATUS - varchar(5)
576
                'HDQT',                               -- ROLE_USER - varchar(50)
577
                '',                                  -- BRANCH_ID - varchar(15)
578
                '',                                  -- CHECKER_ID - varchar(15)
579
                NULL,                                -- APPROVE_DT - datetime
580
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
581
                'N',                                 -- IS_LEAF - varchar(1)
582
                '',                                  -- COST_ID - varchar(15)
583
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
584
                );
585
            SET @STEP_PARENT = 'HDQT';
586
			END
587
								END
588
				
589
						--ELSE
590
						--BEGIN
591
					
592
						--END
593
				END
594
								END
595
								END
596
								END
597
								
598

    
599

    
600
							UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
601
							SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
602
							END
603
				END
604
				ELSE
605
				BEGIN
606
							
607
							
608
							--- BO SUNG VAO BANG PL_TRADE_DETAIL
609
				SET @STEP_PARENT='TGD'	
610
				IF((SELECT SUM(TOTAL_AMT) FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) > (SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='TCTT-HDQT'))
611
				BEGIN
612
				
613

    
614
				INSERT INTO dbo.PL_REQUEST_PROCESS
615
            (
616
                REQ_ID,
617
                PROCESS_ID,
618
                STATUS,
619
                ROLE_USER,
620
                BRANCH_ID,
621
                CHECKER_ID,
622
                APPROVE_DT,
623
                PARENT_PROCESS_ID,
624
                IS_LEAF,
625
                COST_ID,
626
                DVDM_ID,
627
                NOTES,
628
                IS_HAS_CHILD
629
            )
630
            VALUES
631
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
632
                'HDQT',                               -- PROCESS_ID - varchar(10)
633
                'U',                                 -- STATUS - varchar(5)
634
                'HDQT',                               -- ROLE_USER - varchar(50)
635
                '',                                  -- BRANCH_ID - varchar(15)
636
                '',                                  -- CHECKER_ID - varchar(15)
637
                NULL,                                -- APPROVE_DT - datetime
638
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
639
                'N',                                 -- IS_LEAF - varchar(1)
640
                '',                                  -- COST_ID - varchar(15)
641
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
642
                );
643
							SET @STEP_PARENT = 'HDQT';
644
							
645
								UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
646
								SET @PROCESS_NEXT=(SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
647
							END
648
								
649
				
650
						--ELSE
651
						--BEGIN
652
					
653
						--END
654
							
655
								
656
								
657

    
658
						
659
				END
660

    
661
			END
662
			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PARENT_PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID
663
			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
664
				SET @IS_LEAF=(SELECT TOP 1 IS_LEAF FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
665
			
666
			
667
			IF(@IS_LEAF='Y')
668
			BEGIN
669
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
670
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
671

    
672
				SET @Result='0'
673
			END
674
	END
675

    
676

    
677
	IF @@Error <> 0 GOTO ABORT
678
			
679
COMMIT TRANSACTION
680
-- BAY GIỜ KHÔNG CẦN PHÂN CHIA XÁC NHẬN - DUYỆT NỮA. KHI CẤP LÃNH ĐẠO (GĐK, PTGĐ, TGĐ) BẤM VÀO NÚT DUYỆT THÌ THÔNG BÁO DUYỆT THÀNH CÔNG. KHÔNG CẦN QUAN TÂM CẤP CUỐI CÙNG
681
SELECT '0' as Result , @ROLE_USER AS  ROLE_NOTIFI, '' ErrorDesc
682
RETURN '0'
683
ABORT:
684
BEGIN
685
	
686
		ROLLBACK TRANSACTION
687
		SELECT '-1' as Result, '' ROLE_NOTIFI , ERROR_MESSAGE() ErrorDesc
688
		RETURN '-1'
689
End
690

    
691

    
692

    
693

    
694

    
695