Project

General

Profile

PL_REQUEST_DOC_APPR.txt

Luc Tran Van, 12/09/2020 11:37 AM

 
1
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_App]  
2
@p_REQ_ID VARCHAR(15) = NULL,  
3
@p_AUTH_STATUS VARCHAR(1) = NULL,  
4
@p_CHECKER_ID VARCHAR(15) = NULL,  
5
@p_APPROVE_DT DATETIME = NULL,  
6
@p_ROLE_LOGIN VARCHAR(50) = NULL,  
7
@p_BRANCH_LOGIN VARCHAR(15),  
8
@p_PROCESS_DES 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
--SET @p_APPROVE_DT = @p_APPROVE_DT  
20
 
21
--Validation is here  
22
DECLARE @ERRORSYS NVARCHAR(15) = '';  
23
IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))  
24
SET @ERRORSYS = 'REQ-00002';  
25
IF @ERRORSYS <> ''  
26
BEGIN  
27
ROLLBACK TRANSACTION;  
28
SELECT ErrorCode Result,  
29
ErrorDesc ErrorDesc  
30
FROM SYS_ERROR  
31
WHERE ErrorCode = @ERRORSYS;  
32
RETURN '0';  
33
END;  
34
DECLARE @ERROR BIT ,@EROOR_DES NVARCHAR(500)  
35
SELECT @ERROR=ERROR,  
36
@EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_CHECKER_ID,'APPNEW')  
37
IF(@ERROR=1)  
38
BEGIN  
39
ROLLBACK TRANSACTION;  
40
SELECT '-1' Result,  
41
@EROOR_DES ErrorDesc  
42
 
43
RETURN '0';  
44
END  
45
--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)  
46
--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))  
47
DECLARE @BRANCH_TYPE_LOGIN VARCHAR(15)  
48
SET @BRANCH_TYPE_LOGIN = (SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_LOGIN)  
49
DECLARE @Result VARCHAR(5),  
50
@TOTAL_TRANSFER DECIMAL(18, 0),  
51
@TOTAL_AMT DECIMAL(18, 0),  
52
@ROLE_USER_NOTIFI VARCHAR(50),  
53
@ROLE_ID VARCHAR(20),  
54
@ROLE_TF VARCHAR(20),  
55
@LIMIT_VALUE DECIMAL(18, 0),  
56
@STEP_CURR VARCHAR(20),  
57
@STEP_PARENT VARCHAR(20),  
58
@COST_ID VARCHAR(20),  
59
@FR_BRANCH_ID VARCHAR(20),  
60
@FR_DEP_ID VARCHAR(20),  
61
@DVDM_ID VARCHAR(20),  
62
@IS_NEXT BIT = 0,  
63
@IS_NEXT_CDT BIT = 0,  
64
@TOTAL_AMT_GD DECIMAL(12, 0),  
65
@STOP BIT,  
66
@NOTES NVARCHAR(100);  
67
DECLARE @ROLE_CDT VARCHAR(20),  
68
@DVDM_CDT VARCHAR(20),  
69
@LIMIT_VALUE_CDT VARCHAR(20),  
70
@NOTES_CDT VARCHAR(20);  
71
DECLARE @PROCESS_ID VARCHAR(5),@DVDM_NAME NVARCHAR(20)  
72
DECLARE @BRANCH_PARENT VARCHAR(15)  
73
DECLARE @DATA_DVDM TABLE  
74
(  
75
DVDM_ID VARCHAR(20),  
76
TOTAL_AMT DECIMAL(12, 0),  
77
IS_PTGD BIT  
78
);  
79
--UPDATE dbo.PL_REQUEST_COSTCENTER  
80
--SET DVMD_ID=(SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE PL_COSTCENTER.COST_ID=PL_REQUEST_COSTCENTER.COST_ID),  
81
--TOTAL_AMT_GD=(SELECT SUM(PM.TOTAL_AMT) AS AMT FROM  
82
--(SELECT PLAN_ID,GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQDT_TYPE='I' AND REQ_ID=@p_REQ_ID) PR  
83
--LEFT JOIN dbo.PL_MASTER PM ON PR.PLAN_ID=PM.PLAN_ID  
84
--WHERE PM.COST_ID=PL_REQUEST_COSTCENTER.COST_ID)  
85
--WHERE REQ_ID=@p_REQ_ID  
86
INSERT INTO @DATA_DVDM  
87
SELECT KHOI_ID,  
88
SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD  
89
FROM dbo.PL_REQUEST_DOC_DT DT  
90
LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1  
91
WHERE REQ_ID = @p_REQ_ID AND DT.KHOI_ID IS NOT NULL AND DT.KHOI_ID <>''  
92
GROUP BY KHOI_ID,DM.IS_PTGD;  
93
 
94
SET @DVDM_CDT = (SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='CDT')  
95
 
96
 
97
 
98
 
99
 
100
DELETE FROM dbo.PL_REQUEST_PROCESS  
101
WHERE REQ_ID = @p_REQ_ID;  
102
DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),  
103
@BRANCH_CREATE_TYPE VARCHAR(10)  
104
 
105
 
106
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  
107
 
108
SET @BRANCH_TYPE=(SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)  
109
SET @BRANCH_CREATE_TYPE=(SELECT TOP 1 BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)  
110
 
111
 
112
IF(@BRANCH_TYPE='PGD')  
113
SET @BRANCH_ID=(SELECT TOP 1 FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)  
114
 
115
 
116
-- KIEM TRA XEM CO CAP PHE DUYET TRUNG GIAN HAY KHONG 20 05 2020  
117
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER =@p_CHECKER_ID AND PROCESS_ID ='SIGN'))  
118
BEGIN  
119
 
120
DELETE FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID  
121
INSERT INTO dbo.PL_PROCESS  
122
(  
123
REQ_ID,  
124
PROCESS_ID,  
125
CHECKER_ID,  
126
APPROVE_DT,  
127
PROCESS_DESC,NOTES  
128
)  
129
VALUES  
130
( @p_REQ_ID, -- REQ_ID - varchar(15)  
131
'SIGN', -- PROCESS_ID - varchar(10)  
132
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)  
133
@p_APPROVE_DT , -- APPROVE_DT - datetime  
134
N'Cấp phê duyệt trung gian xác nhận tờ trình chủ trương',  
135
N'Cấp phê duyệt trung gian'  
136
)  
137
--- DUA CAP PHE DUYET TRUONG DON VI  
138
INSERT INTO dbo.PL_REQUEST_PROCESS  
139
(  
140
REQ_ID,  
141
PROCESS_ID,  
142
STATUS,  
143
ROLE_USER,  
144
BRANCH_ID,  
145
DEP_ID,  
146
CHECKER_ID,  
147
APPROVE_DT,  
148
PARENT_PROCESS_ID,  
149
IS_LEAF,  
150
COST_ID,  
151
DVDM_ID,  
152
NOTES,  
153
IS_HAS_CHILD  
154
)  
155
VALUES  
156
( @p_REQ_ID, -- REQ_ID - varchar(15)  
157
'APPNEW', -- PROCESS_ID - varchar(10)  
158
'C', -- STATUS - varchar(5)  
159
'GDDV', -- ROLE_USER - varchar(50)  
160
--@BRANCH_CREATE,  
161
@BRANCH_ID,  
162
@DEP_ID, -- BRANCH_ID - varchar(15)  
163
'', -- CHECKER_ID - varchar(15)  
164
NULL, -- APPROVE_DT - datetime  
165
'', -- PARENT_PROCESS_ID - varchar(10)  
166
'N', -- IS_LEAF - varchar(1)  
167
'', -- COST_ID - varchar(15)  
168
'', -- DVDM_ID - varchar(15)  
169
N'Chờ trưởng đơn vị phê duyệt', -- NOTES - nvarchar(500)  
170
NULL -- IS_HAS_CHILD - bit  
171
)  
172
--- UPDATE PROCESS_ID VE APP_NEW  
173
UPDATE PL_REQUEST_DOC SET PROCESS_ID ='APPNEW' WHERE REQ_ID =@p_REQ_ID  
174
END  
175
ELSE  
176
BEGIN -- NGUOC LAI LA GIAM DOC DON VI PHE DUYET  
177
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID AND SIGN_USER IS NOT NULL AND SIGN_USER <> ''))  
178
BEGIN  
179
	IF(NOT EXISTS (SELECT * FROM PL_PROCESS WHERE PROCESS_ID='SIGN' AND REQ_ID =@p_REQ_ID))  
180
	BEGIN  
181
	ROLLBACK TRANSACTION  
182
	SELECT '-1' Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM TR_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đang đợi cấp phê duyệt trung gian xác nhận. Vui lòng đợi nhân viên '+(SELECT SIGN_USER FROM PL_REQUEST_DOC WHERE REQ_ID =@p_REQ_ID)+' xác  
183
	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
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 <>''))  
220
BEGIN  
221
DECLARE @ROLE_KT VARCHAR(20), @DVDM_KT VARCHAR(20),@NOTES_KT NVARCHAR(500)  
222
SET @ROLE_KT=(SELECT ROLE_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  
223
 
224
SET @DVDM_KT=(SELECT DVDM_ID FROM dbo.TL_SYSROLE_LIMIT WHERE LIMIT_TYPE='KT')  
225
SET @NOTES_KT = (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='KT' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')  
226
 
227
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  
228
LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID  
229
WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))  
230
BEGIN  
231
INSERT INTO dbo.PL_REQUEST_PROCESS  
232
(  
233
REQ_ID,  
234
PROCESS_ID,  
235
STATUS,  
236
ROLE_USER,  
237
BRANCH_ID,  
238
CHECKER_ID,  
239
APPROVE_DT,  
240
PARENT_PROCESS_ID,  
241
IS_LEAF,  
242
COST_ID,  
243
DVDM_ID,  
244
NOTES,  
245
IS_HAS_CHILD  
246
)  
247
VALUES  
248
( @p_REQ_ID, -- REQ_ID - varchar(15)  
249
'KT', -- PROCESS_ID - varchar(10)  
250
'U', -- STATUS - varchar(5)  
251
@ROLE_KT, -- ROLE_USER - varchar(50)  
252
'', -- BRANCH_ID - varchar(15)  
253
'', -- CHECKER_ID - varchar(15)  
254
NULL, -- APPROVE_DT - datetime  
255
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
256
'N', -- IS_LEAF - varchar(1)  
257
'', -- COST_ID - varchar(15)  
258
@DVDM_KT, N'Chờ phòng kế toán xác nhận', 1  
259
-- DVDM_ID - varchar(15)  
260
);  
261
 
262
SET @STEP_PARENT='KT'  
263
END  
264
 
265
IF (EXISTS  
266
(  
267
SELECT REQ_COST_ID  
268
FROM dbo.PL_REQUEST_COSTCENTER  
269
WHERE REQ_ID = @p_REQ_ID  
270
)  
271
)  
272
BEGIN  
273
DECLARE lstCostCenter CURSOR FOR  
274
SELECT COST_ID  
275
FROM dbo.PL_REQUEST_COSTCENTER  
276
WHERE REQ_ID = @p_REQ_ID AND COST_ID IS NOT NULL AND COST_ID <>'';  
277
OPEN lstCostCenter;  
278
FETCH NEXT FROM lstCostCenter  
279
INTO @COST_ID;  
280
WHILE @@FETCH_STATUS = 0  
281
BEGIN  
282
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 
283
( DVDM_ID=@COST_ID OR @COST_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC  
284
LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID  
285
WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))  
286
BEGIN  
287
INSERT INTO dbo.PL_REQUEST_PROCESS  
288
(  
289
REQ_ID,  
290
PROCESS_ID,  
291
STATUS,  
292
ROLE_USER,  
293
BRANCH_ID,  
294
CHECKER_ID,  
295
APPROVE_DT,  
296
PARENT_PROCESS_ID,  
297
IS_LEAF,  
298
COST_ID,  
299
DVDM_ID,  
300
NOTES,  
301
IS_HAS_CHILD  
302
)  
303
VALUES  
304
( @p_REQ_ID, -- REQ_ID - varchar(15)  
305
'DVCM', -- PROCESS_ID - varchar(10)  
306
'U', -- STATUS - varchar(5)  
307
'GDDV', -- ROLE_USER - varchar(50)  
308
'', -- BRANCH_ID - varchar(15)  
309
'', -- CHECKER_ID - varchar(15)  
310
NULL, -- APPROVE_DT - datetime  
311
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
312
'N', -- IS_LEAF - varchar(1)  
313
'', -- COST_ID - varchar(15)  
314
@COST_ID, N'Chờ đơn vị chuyên môn xác nhận', 1  
315
-- DVDM_ID - varchar(15)  
316
);  
317
END  
318
ELSE  
319
BEGIN  
320
 
321
UPDATE PL_REQUEST_COSTCENTER SET AUTH_STATUS ='A',NOTES=N'Đồng ý' WHERE 1= 1 AND  
322
REQ_ID=@p_REQ_ID AND COST_ID=@COST_ID  
323
 
324
 
325
 
326
END  
327
 
328
FETCH NEXT FROM lstCostCenter  
329
INTO @COST_ID;  
330
END;  
331
CLOSE lstCostCenter;  
332
DEALLOCATE lstCostCenter;  
333
IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVCM'))  
334
SET @STEP_PARENT = 'DVCM';  
335
END;  
336
SET @TOTAL_AMT =  
337
(  
338
SELECT SUM(TOTAL_AMT) AS TOTAL_AMT  
339
FROM dbo.PL_REQUEST_DOC_DT  
340
WHERE REQ_ID = @p_REQ_ID  
341
);  
342
IF (EXISTS  
343
(  
344
SELECT REQ_TRANSFER_ID  
345
FROM dbo.PL_REQUEST_TRANSFER  
346
WHERE REQ_DOC_ID = @p_REQ_ID  
347
)  
348
)  
349
BEGIN  
350
 
351
 
352
IF (EXISTS  
353
(  
354
SELECT FR_BRN_ID  
355
FROM dbo.PL_REQUEST_TRANSFER  
356
WHERE REQ_DOC_ID = @p_REQ_ID  
357
AND  
358
(  
359
FR_BRN_ID <> @BRANCH_CREATE  
360
OR FR_DEP_ID <> @DEP_CREATE  
361
)  
362
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)  
363
)  
364
)  
365
BEGIN  
366
DECLARE lstTransfer CURSOR FOR  
367
SELECT FR_BRN_ID,  
368
FR_DEP_ID  
369
FROM dbo.PL_REQUEST_TRANSFER  
370
WHERE REQ_DOC_ID = @p_REQ_ID  
371
AND  
372
(  
373
FR_BRN_ID <> @BRANCH_CREATE  
374
OR FR_DEP_ID <> @DEP_CREATE  
375
)  
376
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)  
377
GROUP BY FR_BRN_ID,  
378
FR_DEP_ID;  
379
OPEN lstTransfer;  
380
FETCH NEXT FROM lstTransfer  
381
INTO @FR_BRANCH_ID,  
382
@FR_DEP_ID;  
383
WHILE @@FETCH_STATUS = 0  
384
BEGIN  
385
INSERT INTO dbo.PL_REQUEST_PROCESS  
386
(  
387
REQ_ID,  
388
PROCESS_ID,  
389
STATUS,  
390
ROLE_USER,  
391
BRANCH_ID,  
392
CHECKER_ID,  
393
APPROVE_DT,  
394
PARENT_PROCESS_ID,  
395
IS_LEAF,  
396
COST_ID,  
397
DVDM_ID,  
398
NOTES,  
399
IS_HAS_CHILD,  
400
DEP_ID  
401
)  
402
VALUES  
403
( @p_REQ_ID, -- REQ_ID - varchar(15)  
404
'DVDC', -- PROCESS_ID - varchar(10)  
405
'U', -- STATUS - varchar(5)  
406
'GDDV', -- ROLE_USER - varchar(50)  
407
@FR_BRANCH_ID, -- BRANCH_ID - varchar(15)  
408
'', -- CHECKER_ID - varchar(15)  
409
NULL, -- APPROVE_DT - datetime  
410
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
411
'N', -- IS_LEAF - varchar(1)  
412
'', -- COST_ID - varchar(15)  
413
'', -- DVDM_ID - varchar(15)  
414
N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID);  
415
FETCH NEXT FROM lstTransfer  
416
INTO @FR_BRANCH_ID,  
417
@FR_DEP_ID;  
418
END;  
419
CLOSE lstTransfer;  
420
DEALLOCATE lstTransfer;  
421
SET @STEP_PARENT = 'DVDC';  
422
END;  
423
 
424
-- Đầu mối nhận  
425
DECLARE lstTransfer CURSOR FOR  
426
SELECT TO_DVDM_ID  
427
FROM dbo.PL_REQUEST_TRANSFER  
428
WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>''  
429
GROUP BY TO_DVDM_ID;  
430
OPEN lstTransfer;  
431
FETCH NEXT FROM lstTransfer  
432
INTO @DVDM_ID;  
433
WHILE @@FETCH_STATUS = 0  
434
BEGIN  
435
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 
436
( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC  
437
LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID  
438
WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))  
439
 
440
BEGIN  
441
INSERT INTO dbo.PL_REQUEST_PROCESS  
442
(  
443
REQ_ID,  
444
PROCESS_ID,  
445
STATUS,  
446
ROLE_USER,  
447
BRANCH_ID,  
448
CHECKER_ID,  
449
APPROVE_DT,  
450
PARENT_PROCESS_ID,  
451
IS_LEAF,  
452
COST_ID,  
453
DVDM_ID,  
454
NOTES,  
455
IS_HAS_CHILD  
456
)  
457
VALUES  
458
( @p_REQ_ID, -- REQ_ID - varchar(15)  
459
'DVDM_DC', -- PROCESS_ID - varchar(10)  
460
'U', -- STATUS - varchar(5)  
461
'GDDV', -- ROLE_USER - varchar(50)  
462
'', -- BRANCH_ID - varchar(15)  
463
'', -- CHECKER_ID - varchar(15)  
464
NULL, -- APPROVE_DT - datetime  
465
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
466
'N', -- IS_LEAF - varchar(1)  
467
'', -- COST_ID - varchar(15)  
468
@DVDM_ID, -- DVDM_ID - varchar(15)  
469
N'Chờ đơn vị đầu mối xác nhận', 0);  
470
END  
471
FETCH NEXT FROM lstTransfer  
472
INTO @DVDM_ID;  
473
END;  
474
CLOSE lstTransfer;  
475
DEALLOCATE lstTransfer;  
476
 
477
 
478
IF (EXISTS  
479
(  
480
SELECT FR_BRN_ID  
481
FROM dbo.PL_REQUEST_TRANSFER  
482
WHERE REQ_DOC_ID = @p_REQ_ID  
483
AND FR_BRN_ID = @BRANCH_CREATE  
484
AND FR_DEP_ID = @DEP_CREATE  
485
)  
486
)  
487
BEGIN  
488
-- Đầu mối cho  
489
DECLARE lstTransfer CURSOR FOR  
490
SELECT FR_DVDM_ID  
491
FROM dbo.PL_REQUEST_TRANSFER  
492
WHERE REQ_DOC_ID = @p_REQ_ID  
493
AND FR_BRN_ID = @BRANCH_CREATE  
494
AND FR_DEP_ID = @DEP_CREATE  
495
AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''  
496
AND NOT EXISTS  
497
(  
498
SELECT *  
499
FROM dbo.PL_REQUEST_PROCESS  
500
WHERE REQ_ID = @p_REQ_ID  
501
AND PROCESS_ID = 'DVDM_DC'  
502
AND DVDM_ID = FR_DVDM_ID  
503
)  
504
GROUP BY FR_DVDM_ID;  
505
OPEN lstTransfer;  
506
FETCH NEXT FROM lstTransfer  
507
INTO @DVDM_ID;  
508
WHILE @@FETCH_STATUS = 0  
509
BEGIN  
510
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 
511
( DVDM_ID=@DVDM_ID OR @DVDM_ID IN ((SELECT PC.DVDM_ID FROM dbo.PL_COSTCENTER PC  
512
LEFT JOIN dbo.PL_COSTCENTER_DT PCD ON PCD.COST_ID = PC.COST_ID  
513
WHERE PCD.BRANCH_ID=PL_REQUEST_PROCESS.BRANCH_ID AND PCD.DEP_ID=PL_REQUEST_PROCESS.DEP_ID)) ) ))  
514
BEGIN  
515
INSERT INTO dbo.PL_REQUEST_PROCESS  
516
(  
517
REQ_ID,  
518
PROCESS_ID,  
519
STATUS,  
520
ROLE_USER,  
521
BRANCH_ID,  
522
CHECKER_ID,  
523
APPROVE_DT,  
524
PARENT_PROCESS_ID,  
525
IS_LEAF,  
526
COST_ID,  
527
DVDM_ID,  
528
NOTES,  
529
IS_HAS_CHILD  
530
)  
531
VALUES  
532
( @p_REQ_ID, -- REQ_ID - varchar(15)  
533
'DVDM_DC', -- PROCESS_ID - varchar(10)  
534
'U', -- STATUS - varchar(5)  
535
'GDDV', -- ROLE_USER - varchar(50)  
536
'', -- BRANCH_ID - varchar(15)  
537
'', -- CHECKER_ID - varchar(15)  
538
NULL, -- APPROVE_DT - datetime  
539
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
540
'N', -- IS_LEAF - varchar(1)  
541
'', -- COST_ID - varchar(15)  
542
@DVDM_ID, -- DVDM_ID - varchar(15)  
543
N'Chờ đơn vị đầu mối xác nhận', 0);  
544
END  
545
FETCH NEXT FROM lstTransfer  
546
INTO @DVDM_ID;  
547
END;  
548
CLOSE lstTransfer;  
549
DEALLOCATE lstTransfer;  
550
 
551
 
552
 
553
 
554
IF(EXISTS(SELECT TOP 1 ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))  
555
SET @STEP_PARENT='DVDM_DC'  
556
 
557
 
558
END;  
559
 
560
 
561
 
562
INSERT INTO dbo.PL_REQUEST_PROCESS  
563
(  
564
REQ_ID,  
565
PROCESS_ID,  
566
STATUS,  
567
ROLE_USER,  
568
BRANCH_ID,  
569
CHECKER_ID,  
570
APPROVE_DT,  
571
PARENT_PROCESS_ID,  
572
IS_LEAF,  
573
COST_ID,  
574
DVDM_ID,  
575
NOTES,IS_HAS_CHILD  
576
)  
577
VALUES  
578
( @p_REQ_ID, -- REQ_ID - varchar(15)  
579
'TC', -- PROCESS_ID - varchar(10)  
580
'U', -- STATUS - varchar(5)  
581
'TC', -- 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 - varchar(15)  
589
N'Chờ đơn vị Tài chính xác nhận',1);  
590
SET @STEP_PARENT = 'TC';  
591
 
592
 
593
IF (NOT EXISTS  
594
(  
595
SELECT REQ_TRANSFER_ID  
596
FROM dbo.PL_REQUEST_TRANSFER  
597
WHERE REQ_DOC_ID = @p_REQ_ID  
598
AND  
599
(  
600
FR_BRN_ID <> @BRANCH_CREATE  
601
OR FR_DEP_ID <> @DEP_CREATE  
602
)  
603
)  
604
)  
605
BEGIN  
606
---Duyệt DC  
607
IF (  
608
(  
609
SELECT COUNT(T.FR_KHOI_ID) AS COUNT_ROW  
610
FROM  
611
(  
612
SELECT FR_KHOI_ID  
613
FROM dbo.PL_REQUEST_TRANSFER  
614
WHERE REQ_DOC_ID = @p_REQ_ID  
615
GROUP BY FR_KHOI_ID  
616
) T  
617
) > 1  
618
)  
619
BEGIN  
620
INSERT INTO dbo.PL_REQUEST_PROCESS  
621
(  
622
REQ_ID,  
623
PROCESS_ID,  
624
STATUS,  
625
ROLE_USER,  
626
BRANCH_ID,  
627
CHECKER_ID,  
628
APPROVE_DT,  
629
PARENT_PROCESS_ID,  
630
IS_LEAF,  
631
COST_ID,  
632
DVDM_ID,  
633
NOTES,  
634
IS_HAS_CHILD  
635
)  
636
VALUES  
637
( @p_REQ_ID, -- REQ_ID - varchar(15)  
638
'TGD_DC', -- PROCESS_ID - varchar(10)  
639
'U', -- STATUS - varchar(5)  
640
'TGD', -- ROLE_USER - varchar(50)  
641
'', -- BRANCH_ID - varchar(15)  
642
'', -- CHECKER_ID - varchar(15)  
643
NULL, -- APPROVE_DT - datetime  
644
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
645
'', -- IS_LEAF - varchar(1)  
646
'', -- COST_ID - varchar(15)  
647
'', -- DVDM_ID - varchar(15)  
648
N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)  
649
NULL -- IS_HAS_CHILD - bit  
650
);  
651
SET @STEP_PARENT = 'TGD_DC';  
652
END;  
653
ELSE  
654
BEGIN  
655
DECLARE @LIMTT_MAX DECIMAL(18, 2),  
656
@LIMIT_APP DECIMAL(18, 2),  
657
@KHOI_ID_TF VARCHAR(20);  
658
SET @KHOI_ID_TF =  
659
(  
660
SELECT TOP 1  
661
FR_KHOI_ID  
662
FROM dbo.PL_REQUEST_TRANSFER  
663
WHERE REQ_DOC_ID = @p_REQ_ID  
664
);  
665
 
666
IF(@KHOI_ID_TF IS NOT NULL AND @KHOI_ID_TF<>'')  
667
BEGIN  
668
SET @LIMIT_APP =  
669
(  
670
SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP  
671
FROM dbo.LIMIT_ACCUMULATE  
672
WHERE ROLE_ID = 'GDK'  
673
AND DVDM_ID = @KHOI_ID_TF  
674
);  
675
SET @TOTAL_TRANSFER =  
676
(  
677
SELECT SUM(TOTAL_AMT) AS TOTAL  
678
FROM dbo.PL_REQUEST_TRANSFER  
679
WHERE REQ_DOC_ID = @p_REQ_ID  
680
);  
681
SET @LIMTT_MAX =  
682
(  
683
SELECT LIMIT_VALUE  
684
FROM dbo.TL_SYSROLE_LIMIT  
685
WHERE ROLE_ID = 'GDK'  
686
AND LIMIT_TYPE = 'DCNS'  
687
);  
688
 
689
INSERT INTO dbo.PL_REQUEST_PROCESS  
690
(  
691
REQ_ID,  
692
PROCESS_ID,  
693
STATUS,  
694
ROLE_USER,  
695
BRANCH_ID,  
696
CHECKER_ID,  
697
APPROVE_DT,  
698
PARENT_PROCESS_ID,  
699
IS_LEAF,  
700
COST_ID,  
701
DVDM_ID,  
702
NOTES,  
703
IS_HAS_CHILD  
704
)  
705
VALUES  
706
( @p_REQ_ID, -- REQ_ID - varchar(15)  
707
'GDK_DC', -- PROCESS_ID - varchar(10)  
708
'U', -- STATUS - varchar(5)  
709
'GDK', -- ROLE_USER - varchar(50)  
710
'', -- BRANCH_ID - varchar(15)  
711
'', -- CHECKER_ID - varchar(15)  
712
GETDATE(), -- APPROVE_DT - datetime  
713
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
714
'N', -- IS_LEAF - varchar(1)  
715
'', -- COST_ID - varchar(15)  
716
@KHOI_ID_TF, -- DVDM_ID - varchar(15)  
717
N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)  
718
NULL -- IS_HAS_CHILD - bit  
719
);  
720
SET @STEP_PARENT = 'GDK_DC';  
721
 
722
UPDATE dbo.PL_REQUEST_PROCESS SET ROLE_USER='PTGD' WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_DC' 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)  
723
 
724
 
725
IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)  
726
BEGIN  
727
IF(EXISTS(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=1))  
728
BEGIN  
729
IF(NOT 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))  
730
BEGIN  
731
INSERT INTO dbo.PL_REQUEST_PROCESS  
732
(  
733
REQ_ID,  
734
PROCESS_ID,  
735
STATUS,  
736
ROLE_USER,  
737
BRANCH_ID,  
738
CHECKER_ID,  
739
APPROVE_DT,  
740
PARENT_PROCESS_ID,  
741
IS_LEAF,  
742
COST_ID,  
743
DVDM_ID,  
744
NOTES,  
745
IS_HAS_CHILD  
746
)  
747
VALUES  
748
( @p_REQ_ID, -- REQ_ID - varchar(15)  
749
'PTGD_DC', -- PROCESS_ID - varchar(10)  
750
'U', -- STATUS - varchar(5)  
751
'PTGD', -- ROLE_USER - varchar(50)  
752
'', -- BRANCH_ID - varchar(15)  
753
'', -- CHECKER_ID - varchar(15)  
754
GETDATE(), -- APPROVE_DT - datetime  
755
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
756
'N', -- IS_LEAF - varchar(1)  
757
'', -- COST_ID - varchar(15)  
758
@KHOI_ID_TF, -- DVDM_ID - varchar(15)  
759
N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)  
760
NULL -- IS_HAS_CHILD - bit  
761
);  
762
SET @STEP_PARENT = 'PTGD_DC';  
763
END  
764
SET @LIMTT_MAX =  
765
(  
766
SELECT LIMIT_VALUE  
767
FROM dbo.TL_SYSROLE_LIMIT  
768
WHERE ROLE_ID = 'PTGD'  
769
AND LIMIT_TYPE = 'DCNS'  
770
);  
771
SET @LIMIT_APP =  
772
(  
773
SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP  
774
FROM dbo.LIMIT_ACCUMULATE  
775
WHERE ROLE_ID = 'PTGD'  
776
AND DVDM_ID = @KHOI_ID_TF  
777
);  
778
 
779
END  
780
IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP OR EXISTS(SELECT TOP 1 DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=0))  
781
BEGIN  
782
INSERT INTO dbo.PL_REQUEST_PROCESS  
783
(  
784
REQ_ID,  
785
PROCESS_ID,  
786
STATUS,  
787
ROLE_USER,  
788
BRANCH_ID,  
789
CHECKER_ID,  
790
APPROVE_DT,  
791
PARENT_PROCESS_ID,  
792
IS_LEAF,  
793
COST_ID,  
794
DVDM_ID,  
795
NOTES,  
796
IS_HAS_CHILD  
797
)  
798
VALUES  
799
( @p_REQ_ID, -- REQ_ID - varchar(15)  
800
'TGD_DC', -- PROCESS_ID - varchar(10)  
801
'U', -- STATUS - varchar(5)  
802
'TGD', -- ROLE_USER - varchar(50)  
803
'', -- BRANCH_ID - varchar(15)  
804
'', -- CHECKER_ID - varchar(15)  
805
NULL, -- APPROVE_DT - datetime  
806
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
807
'', -- IS_LEAF - varchar(1)  
808
'', -- COST_ID - varchar(15)  
809
'', -- DVDM_ID - varchar(15)  
810
N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)  
811
NULL -- IS_HAS_CHILD - bit  
812
);  
813
SET @STEP_PARENT = 'TGD_DC';  
814
END;  
815
 
816
END;  
817
 
818
END  
819
 
820
 
821
END;  
822
----  
823
IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID LIKE '%_DC'))  
824
BEGIN  
825
DECLARE @DVDM_ID_TT VARCHAR(20)  
826
-- 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  
827
-- INSERT PL_TRADE_DETAIL  
828
 
829
--DECLARE @l_TRADE_ID VARCHAR(15)  
830
--EXEC SYS_CodeMasters_Gen 'PL_TRADEDETAIL', @l_TRADE_ID out  
831
--IF @l_TRADE_ID ='' OR @l_TRADE_ID IS NULL GOTO ABORT  
832
 
833
--INSERT INTO PL_TRADEDETAIL  
834
--(  
835
-- [TRADE_ID],  
836
-- [PLAN_ID],  
837
-- [GOODS_ID],  
838
-- [GOODS_NAME],  
839
-- [GOODS_TYPE],  
840
-- [UNIT_ID],  
841
-- M1,  
842
-- M2,  
843
-- M3,  
844
-- M4,  
845
-- M5,  
846
-- M6,  
847
-- M7,  
848
-- M8,  
849
-- M9,  
850
-- M10,  
851
-- M11,  
852
-- M12,  
853
-- [QUANTITY],  
854
-- [QUANTITY_EXE],  
855
-- [PRICE],  
856
-- [START_DT_AMORT],  
857
-- [MONTH_AMORT],  
858
-- [END_DT_AMORT],  
859
-- [RATE_AMORT],  
860
-- [NOTES],  
861
-- [RECORD_STATUS],  
862
-- [MAKER_ID],  
863
-- [CREATE_DT],  
864
-- [AUTH_STATUS],  
865
-- [CHECKER_ID],  
866
-- [APPROVE_DT],AMT_RECEIVE_TF  
867
--)  
868
--VALUES  
869
--(  
870
-- @l_TRADE_ID,  
871
-- NULL,  
872
-- NULL,  
873
-- NULL,  
874
-- NULL,  
875
-- NULL,  
876
-- NULL,  
877
-- NULL,  
878
-- NULL,  
879
-- NULL,  
880
-- NULL,  
881
-- NULL,  
882
-- NULL,  
883
-- NULL,  
884
-- NULL,  
885
-- NULL,  
886
-- NULL,  
887
-- NULL,  
888
-- NULL,  
889
-- 0,  
890
-- 0,  
891
-- NULL,  
892
-- NULL,  
893
-- NULL,  
894
-- 0,  
895
-- '',  
896
-- '1', 'admin' ,GETDATE() ,'A' ,'admin' ,GETDATE(),0  
897
--)  
898
---  
899
BEGIN  
900
IF(@BRANCH_CREATE_TYPE='PGD')  
901
BEGIN  
902
 
903
 
904
SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)  
905
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='')))  
906
BEGIN  
907
INSERT INTO dbo.PL_REQUEST_PROCESS  
908
(  
909
REQ_ID,  
910
PROCESS_ID,  
911
STATUS,  
912
ROLE_USER,  
913
BRANCH_ID,  
914
DEP_ID,  
915
CHECKER_ID,  
916
APPROVE_DT,  
917
PARENT_PROCESS_ID,  
918
IS_LEAF,  
919
NOTES  
920
)  
921
VALUES  
922
(  
923
@p_REQ_ID, -- REQ_ID - varchar(15)  
924
'DVC', -- PROCESS_ID - varchar(10)  
925
'U', -- STATUS - varchar(5)  
926
'GDDV', -- ROLE_USER - varchar(50)  
927
@BRANCH_PARENT,  
928
NULL, -- BRANCH_ID - varchar(15)  
929
NULL, -- CHECKER_ID - varchar(15)  
930
NULL , -- APPROVE_DT - datetime  
931
@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');  
932
 
933
--SET @STEP_CURR = 'DVC';  
934
SET @STEP_PARENT = 'DVC';  
935
END  
936
 
937
END  
938
ELSE  
939
IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'  
940
AND ((  
941
BRANCH_ID=@BRANCH_CREATE  
942
AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='')  
943
AND (DEP_ID IS NULL OR DEP_ID='')))  
944
)  
945
OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC  
946
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)  
947
)  
948
))  
949
BEGIN  
950
INSERT INTO dbo.PL_REQUEST_PROCESS  
951
(  
952
REQ_ID,  
953
PROCESS_ID,  
954
STATUS,  
955
ROLE_USER,  
956
BRANCH_ID,  
957
DEP_ID,  
958
CHECKER_ID,  
959
APPROVE_DT,  
960
PARENT_PROCESS_ID,  
961
IS_LEAF,  
962
NOTES  
963
)  
964
VALUES  
965
(  
966
@p_REQ_ID, -- REQ_ID - varchar(15)  
967
'DVC', -- PROCESS_ID - varchar(10)  
968
'U', -- STATUS - varchar(5)  
969
'GDDV', -- ROLE_USER - varchar(50)  
970
@BRANCH_CREATE,  
971
@DEP_CREATE, -- BRANCH_ID - varchar(15)  
972
NULL, -- CHECKER_ID - varchar(15)  
973
NULL , -- APPROVE_DT - datetime  
974
@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');  
975
 
976
--SET @STEP_CURR = 'DVC';  
977
SET @STEP_PARENT = 'DVC';  
978
END  
979
 
980
 
981
 
982
 
983
 
984
SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDDV'))  
985
SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))  
986
SET @TOTAL_AMT = (SELECT TOTAL_AMT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID)  
987
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'))  
988
BEGIN  
989
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID ) OR @IS_NEXT_CDT=1)  
990
BEGIN  
991
DECLARE lstCostCenter CURSOR FOR  
992
SELECT KHOI_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND KHOI_ID IS NOT NULL AND KHOI_ID <>'' AND NOT EXISTS(  
993
SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='GDK'  
994
)  
995
GROUP BY KHOI_ID  
996
OPEN lstCostCenter  
997
FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT  
998
WHILE @@FETCH_STATUS = 0  
999
BEGIN  
1000
INSERT INTO dbo.PL_REQUEST_PROCESS  
1001
(  
1002
REQ_ID,  
1003
PROCESS_ID,  
1004
STATUS,  
1005
ROLE_USER,  
1006
BRANCH_ID,  
1007
CHECKER_ID,  
1008
APPROVE_DT,  
1009
PARENT_PROCESS_ID,  
1010
IS_LEAF,  
1011
COST_ID,  
1012
DVDM_ID,  
1013
NOTES,IS_HAS_CHILD  
1014
)  
1015
VALUES  
1016
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1017
'GDK_TT', -- PROCESS_ID - varchar(10)  
1018
'U', -- STATUS - varchar(5)  
1019
'GDK', -- ROLE_USER - varchar(50)  
1020
'', -- BRANCH_ID - varchar(15)  
1021
'', -- CHECKER_ID - varchar(15)  
1022
NULL, -- APPROVE_DT - datetime  
1023
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1024
'N', -- IS_LEAF - varchar(1)  
1025
'', -- COST_ID - varchar(15)  
1026
@DVDM_ID_TT ,  
1027
N'Chờ giám đốc khối xác nhận',  
1028
0 -- DVDM_ID - varchar(15)  
1029
)  
1030
 
1031
FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT  
1032
END  
1033
CLOSE lstCostCenter  
1034
DEALLOCATE lstCostCenter  
1035
 
1036
 
1037
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))  
1038
BEGIN  
1039
INSERT INTO dbo.PL_REQUEST_PROCESS  
1040
(  
1041
REQ_ID,  
1042
PROCESS_ID,  
1043
STATUS,  
1044
ROLE_USER,  
1045
BRANCH_ID,  
1046
CHECKER_ID,  
1047
APPROVE_DT,  
1048
PARENT_PROCESS_ID,  
1049
IS_LEAF,  
1050
COST_ID,  
1051
DVDM_ID,  
1052
NOTES,IS_HAS_CHILD  
1053
)  
1054
VALUES  
1055
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1056
'GDK_TT', -- PROCESS_ID - varchar(10)  
1057
'U', -- STATUS - varchar(5)  
1058
'GDK', -- ROLE_USER - varchar(50)  
1059
'', -- BRANCH_ID - varchar(15)  
1060
'', -- CHECKER_ID - varchar(15)  
1061
NULL, -- APPROVE_DT - datetime  
1062
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1063
'N', -- IS_LEAF - varchar(1)  
1064
'', -- COST_ID - varchar(15)  
1065
@DVDM_CDT ,  
1066
N'Chờ giám đốc khối xác nhận',  
1067
0 -- DVDM_ID - varchar(15)  
1068
)  
1069
 
1070
END  
1071
 
1072
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))  
1073
BEGIN  
1074
SET @STEP_PARENT='GDK_TT'  
1075
END  
1076
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)  
1077
 
1078
 
1079
SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))  
1080
SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))  
1081
 
1082
IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)  
1083
BEGIN  
1084
IF(EXISTS(SELECT KHOI_ID FROM dbo.PL_REQUEST_DOC_DT DT  
1085
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 KHOI_ID IS NOT NULL AND KHOI_ID <>'' AND DM.IS_PTGD=1 AND NOT EXISTS(  
1086
SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'  
1087
) ) OR @IS_NEXT_CDT=1)  
1088
BEGIN  
1089
DECLARE lstCostCenter CURSOR FOR  
1090
SELECT KHOI_ID FROM dbo.PL_REQUEST_DOC_DT DT  
1091
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=1 AND NOT EXISTS(  
1092
SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=KHOI_ID AND ROLE_USER='PTGD'  
1093
)  
1094
GROUP BY KHOI_ID  
1095
OPEN lstCostCenter  
1096
FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT  
1097
WHILE @@FETCH_STATUS = 0  
1098
BEGIN  
1099
INSERT INTO dbo.PL_REQUEST_PROCESS  
1100
(  
1101
REQ_ID,  
1102
PROCESS_ID,  
1103
STATUS,  
1104
ROLE_USER,  
1105
BRANCH_ID,  
1106
CHECKER_ID,  
1107
APPROVE_DT,  
1108
PARENT_PROCESS_ID,  
1109
IS_LEAF,  
1110
COST_ID,  
1111
DVDM_ID,  
1112
NOTES,IS_HAS_CHILD  
1113
)  
1114
VALUES  
1115
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1116
'PTGDK_TT', -- PROCESS_ID - varchar(10)  
1117
'U', -- STATUS - varchar(5)  
1118
'PTGD', -- ROLE_USER - varchar(50)  
1119
'', -- BRANCH_ID - varchar(15)  
1120
'', -- CHECKER_ID - varchar(15)  
1121
NULL, -- APPROVE_DT - datetime  
1122
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1123
'N', -- IS_LEAF - varchar(1)  
1124
'', -- COST_ID - varchar(15)  
1125
@DVDM_ID_TT ,  
1126
N'Chờ phó tổng giám đốc khối xác nhận',  
1127
0 -- DVDM_ID - varchar(15)  
1128
)  
1129
 
1130
 
1131
FETCH NEXT FROM lstCostCenter INTO @DVDM_ID_TT  
1132
END  
1133
CLOSE lstCostCenter  
1134
DEALLOCATE lstCostCenter  
1135
 
1136
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))  
1137
BEGIN  
1138
INSERT INTO dbo.PL_REQUEST_PROCESS  
1139
(  
1140
REQ_ID,  
1141
PROCESS_ID,  
1142
STATUS,  
1143
ROLE_USER,  
1144
BRANCH_ID,  
1145
CHECKER_ID,  
1146
APPROVE_DT,  
1147
PARENT_PROCESS_ID,  
1148
IS_LEAF,  
1149
COST_ID,  
1150
DVDM_ID,  
1151
NOTES,IS_HAS_CHILD  
1152
)  
1153
VALUES  
1154
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1155
'PTGDK_TT', -- PROCESS_ID - varchar(10)  
1156
'U', -- STATUS - varchar(5)  
1157
'PTGD', -- ROLE_USER - varchar(50)  
1158
'', -- BRANCH_ID - varchar(15)  
1159
'', -- CHECKER_ID - varchar(15)  
1160
NULL, -- APPROVE_DT - datetime  
1161
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1162
'N', -- IS_LEAF - varchar(1)  
1163
'', -- COST_ID - varchar(15)  
1164
@DVDM_CDT ,  
1165
N'Chờ phó tổng giám đốc khối xác nhận',  
1166
0 -- DVDM_ID - varchar(15)  
1167
)  
1168
 
1169
END  
1170
 
1171
 
1172
SET @IS_NEXT= (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'PTGD'))  
1173
SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))  
1174
END  
1175
IF(EXISTS(SELECT KHOI_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT DT  
1176
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)  
1177
BEGIN  
1178
SET @IS_NEXT=1  
1179
END  
1180
 
1181
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))  
1182
BEGIN  
1183
SET @STEP_PARENT='PTGDK_TT'  
1184
END  
1185
 
1186
IF(@IS_NEXT=1 OR @IS_NEXT_CDT=1)  
1187
BEGIN  
1188
INSERT INTO dbo.PL_REQUEST_PROCESS  
1189
(  
1190
REQ_ID,  
1191
PROCESS_ID,  
1192
STATUS,  
1193
ROLE_USER,  
1194
BRANCH_ID,  
1195
CHECKER_ID,  
1196
APPROVE_DT,  
1197
PARENT_PROCESS_ID,  
1198
IS_LEAF,  
1199
COST_ID,  
1200
DVDM_ID,  
1201
NOTES,IS_HAS_CHILD  
1202
)  
1203
VALUES  
1204
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1205
'TGD', -- PROCESS_ID - varchar(10)  
1206
'U', -- STATUS - varchar(5)  
1207
'TGD', -- ROLE_USER - varchar(50)  
1208
'', -- BRANCH_ID - varchar(15)  
1209
'', -- CHECKER_ID - varchar(15)  
1210
NULL, -- APPROVE_DT - datetime  
1211
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1212
'N', -- IS_LEAF - varchar(1)  
1213
'', -- COST_ID - varchar(15)  
1214
'' ,  
1215
N'Chờ tổng giám đốc xác nhận',  
1216
0 -- DVDM_ID - varchar(15)  
1217
)  
1218
SET @STEP_PARENT='TGD'  
1219
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'))  
1220
BEGIN  
1221
 
1222
 
1223
INSERT INTO dbo.PL_REQUEST_PROCESS  
1224
(  
1225
REQ_ID,  
1226
PROCESS_ID,  
1227
STATUS,  
1228
ROLE_USER,  
1229
BRANCH_ID,  
1230
CHECKER_ID,  
1231
APPROVE_DT,  
1232
PARENT_PROCESS_ID,  
1233
IS_LEAF,  
1234
COST_ID,  
1235
DVDM_ID,  
1236
NOTES,  
1237
IS_HAS_CHILD  
1238
)  
1239
VALUES  
1240
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1241
'HDQT', -- PROCESS_ID - varchar(10)  
1242
'U', -- STATUS - varchar(5)  
1243
'HDQT', -- ROLE_USER - varchar(50)  
1244
'', -- BRANCH_ID - varchar(15)  
1245
'', -- CHECKER_ID - varchar(15)  
1246
NULL, -- APPROVE_DT - datetime  
1247
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1248
'N', -- IS_LEAF - varchar(1)  
1249
'', -- COST_ID - varchar(15)  
1250
'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)  
1251
);  
1252
SET @STEP_PARENT = 'HDQT';  
1253
END  
1254
END  
1255
 
1256
--ELSE  
1257
--BEGIN  
1258
 
1259
--END  
1260
END  
1261
END  
1262
END  
1263
END  
1264
 
1265
 
1266
END  
1267
 
1268
END;  
1269
 
1270
 
1271
 
1272
 
1273
END;  
1274
ELSE  
1275
BEGIN  
1276
 
1277
IF(@BRANCH_CREATE_TYPE='PGD')  
1278
BEGIN  
1279
 
1280
SET @BRANCH_PARENT=(SELECT TOP 1 FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)  
1281
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='')))  
1282
BEGIN  
1283
INSERT INTO dbo.PL_REQUEST_PROCESS  
1284
(  
1285
REQ_ID,  
1286
PROCESS_ID,  
1287
STATUS,  
1288
ROLE_USER,  
1289
BRANCH_ID,  
1290
DEP_ID,  
1291
CHECKER_ID,  
1292
APPROVE_DT,  
1293
PARENT_PROCESS_ID,  
1294
IS_LEAF,  
1295
NOTES  
1296
)  
1297
VALUES  
1298
(  
1299
@p_REQ_ID, -- REQ_ID - varchar(15)  
1300
'DVC', -- PROCESS_ID - varchar(10)  
1301
'U', -- STATUS - varchar(5)  
1302
'GDDV', -- ROLE_USER - varchar(50)  
1303
@BRANCH_PARENT,  
1304
NULL, -- BRANCH_ID - varchar(15)  
1305
NULL, -- CHECKER_ID - varchar(15)  
1306
NULL , -- APPROVE_DT - datetime  
1307
@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');  
1308
 
1309
SET @STEP_CURR = 'DVC';  
1310
SET @STEP_PARENT = 'DVC';  
1311
END  
1312
 
1313
END  
1314
ELSE  
1315
IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'  
1316
AND ((  
1317
BRANCH_ID=@BRANCH_CREATE  
1318
AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='')  
1319
AND (DEP_ID IS NULL OR DEP_ID='')))  
1320
)  
1321
OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC  
1322
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)  
1323
)  
1324
))  
1325
BEGIN  
1326
INSERT INTO dbo.PL_REQUEST_PROCESS  
1327
(  
1328
REQ_ID,  
1329
PROCESS_ID,  
1330
STATUS,  
1331
ROLE_USER,  
1332
BRANCH_ID,  
1333
DEP_ID,  
1334
CHECKER_ID,  
1335
APPROVE_DT,  
1336
PARENT_PROCESS_ID,  
1337
IS_LEAF,  
1338
NOTES  
1339
)  
1340
VALUES  
1341
(  
1342
@p_REQ_ID, -- REQ_ID - varchar(15)  
1343
'DVC', -- PROCESS_ID - varchar(10)  
1344
'U', -- STATUS - varchar(5)  
1345
'GDDV', -- ROLE_USER - varchar(50)  
1346
@BRANCH_CREATE,  
1347
@DEP_CREATE, -- BRANCH_ID - varchar(15)  
1348
NULL, -- CHECKER_ID - varchar(15)  
1349
NULL , -- APPROVE_DT - datetime  
1350
@STEP_PARENT, 'N', N'Chờ giám đốc Chi Nhánh phê duyệt');  
1351
 
1352
SET @STEP_CURR = 'DVC';  
1353
SET @STEP_PARENT = 'DVC';  
1354
END  
1355
SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDDV'))  
1356
IF(EXISTS( SELECT * FROM PL_REQUEST_DOC_DT WHERE REQ_ID =@p_REQ_ID) OR @IS_NEXT_CDT=1)  
1357
BEGIN  
1358
SET @IS_NEXT =  
1359
(  
1360
SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')  
1361
);  
1362
 
1363
 
1364
 
1365
IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)  
1366
BEGIN  
1367
 
1368
DECLARE lstCostCenter CURSOR FOR  
1369
SELECT DVDM_ID,  
1370
TOTAL_AMT  
1371
FROM @DATA_DVDM;  
1372
OPEN lstCostCenter;  
1373
FETCH NEXT FROM lstCostCenter  
1374
INTO @DVDM_ID,  
1375
@TOTAL_AMT_GD;  
1376
WHILE @@FETCH_STATUS = 0  
1377
BEGIN  
1378
INSERT INTO dbo.PL_REQUEST_PROCESS  
1379
(  
1380
REQ_ID,  
1381
PROCESS_ID,  
1382
STATUS,  
1383
ROLE_USER,  
1384
BRANCH_ID,  
1385
CHECKER_ID,  
1386
APPROVE_DT,  
1387
PARENT_PROCESS_ID,  
1388
IS_LEAF,  
1389
COST_ID,  
1390
DVDM_ID,  
1391
NOTES,  
1392
IS_HAS_CHILD  
1393
)  
1394
VALUES  
1395
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1396
'GDK_TT', -- PROCESS_ID - varchar(10)  
1397
'U', -- STATUS - varchar(5)  
1398
'GDK', -- ROLE_USER - varchar(50)  
1399
'', -- BRANCH_ID - varchar(15)  
1400
'', -- CHECKER_ID - varchar(15)  
1401
NULL, -- APPROVE_DT - datetime  
1402
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1403
'N', -- IS_LEAF - varchar(1)  
1404
'', -- COST_ID - varchar(15)  
1405
@DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)  
1406
);  
1407
FETCH NEXT FROM lstCostCenter  
1408
INTO @DVDM_ID,  
1409
@TOTAL_AMT_GD;  
1410
END;  
1411
CLOSE lstCostCenter;  
1412
DEALLOCATE lstCostCenter;  
1413
 
1414
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))  
1415
BEGIN  
1416
INSERT INTO dbo.PL_REQUEST_PROCESS  
1417
(  
1418
REQ_ID,  
1419
PROCESS_ID,  
1420
STATUS,  
1421
ROLE_USER,  
1422
BRANCH_ID,  
1423
CHECKER_ID,  
1424
APPROVE_DT,  
1425
PARENT_PROCESS_ID,  
1426
IS_LEAF,  
1427
COST_ID,  
1428
DVDM_ID,  
1429
NOTES,IS_HAS_CHILD  
1430
)  
1431
VALUES  
1432
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1433
'GDK_TT', -- PROCESS_ID - varchar(10)  
1434
'U', -- STATUS - varchar(5)  
1435
'GDK', -- ROLE_USER - varchar(50)  
1436
'', -- BRANCH_ID - varchar(15)  
1437
'', -- CHECKER_ID - varchar(15)  
1438
NULL, -- APPROVE_DT - datetime  
1439
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1440
'N', -- IS_LEAF - varchar(1)  
1441
'', -- COST_ID - varchar(15)  
1442
@DVDM_CDT ,  
1443
N'Chờ giám đốc khối xác nhận',  
1444
0 -- DVDM_ID - varchar(15)  
1445
)  
1446
 
1447
END  
1448
 
1449
SET @IS_NEXT =  
1450
(  
1451
SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')  
1452
);  
1453
 
1454
SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'GDK'))  
1455
 
1456
 
1457
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='GDK_TT'))  
1458
BEGIN  
1459
SET @STEP_PARENT='GDK_TT'  
1460
END  
1461
 
1462
 
1463
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)  
1464
 
1465
IF (@IS_NEXT = 1 OR @IS_NEXT_CDT =1)  
1466
BEGIN  
1467
 
1468
IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )  
1469
BEGIN  
1470
DECLARE lstCostCenter CURSOR FOR  
1471
SELECT DVDM_ID,  
1472
TOTAL_AMT  
1473
FROM @DATA_DVDM WHERE IS_PTGD=1 AND NOT 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) ;  
1474
OPEN lstCostCenter;  
1475
FETCH NEXT FROM lstCostCenter  
1476
INTO @DVDM_ID,  
1477
@TOTAL_AMT_GD;  
1478
WHILE @@FETCH_STATUS = 0  
1479
BEGIN  
1480
INSERT INTO dbo.PL_REQUEST_PROCESS  
1481
(  
1482
REQ_ID,  
1483
PROCESS_ID,  
1484
STATUS,  
1485
ROLE_USER,  
1486
BRANCH_ID,  
1487
CHECKER_ID,  
1488
APPROVE_DT,  
1489
PARENT_PROCESS_ID,  
1490
IS_LEAF,  
1491
COST_ID,  
1492
DVDM_ID,  
1493
NOTES,  
1494
IS_HAS_CHILD  
1495
)  
1496
VALUES  
1497
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1498
'PTGDK_TT', -- PROCESS_ID - varchar(10)  
1499
'U', -- STATUS - varchar(5)  
1500
'PTGD', -- ROLE_USER - varchar(50)  
1501
'', -- BRANCH_ID - varchar(15)  
1502
'', -- CHECKER_ID - varchar(15)  
1503
NULL, -- APPROVE_DT - datetime  
1504
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1505
'N', -- IS_LEAF - varchar(1)  
1506
'', -- COST_ID - varchar(15)  
1507
@DVDM_ID, N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)  
1508
);  
1509
 
1510
FETCH NEXT FROM lstCostCenter  
1511
INTO @DVDM_ID,  
1512
@TOTAL_AMT_GD;  
1513
END;  
1514
CLOSE lstCostCenter;  
1515
DEALLOCATE lstCostCenter;  
1516
 
1517
SET @IS_NEXT =  
1518
(  
1519
SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')  
1520
);  
1521
 
1522
 
1523
END  
1524
 
1525
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))  
1526
BEGIN  
1527
INSERT INTO dbo.PL_REQUEST_PROCESS  
1528
(  
1529
REQ_ID,  
1530
PROCESS_ID,  
1531
STATUS,  
1532
ROLE_USER,  
1533
BRANCH_ID,  
1534
CHECKER_ID,  
1535
APPROVE_DT,  
1536
PARENT_PROCESS_ID,  
1537
IS_LEAF,  
1538
COST_ID,  
1539
DVDM_ID,  
1540
NOTES,IS_HAS_CHILD  
1541
)  
1542
VALUES  
1543
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1544
'PTGDK_TT', -- PROCESS_ID - varchar(10)  
1545
'U', -- STATUS - varchar(5)  
1546
'PTGD', -- ROLE_USER - varchar(50)  
1547
'', -- BRANCH_ID - varchar(15)  
1548
'', -- CHECKER_ID - varchar(15)  
1549
NULL, -- APPROVE_DT - datetime  
1550
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1551
'N', -- IS_LEAF - varchar(1)  
1552
'', -- COST_ID - varchar(15)  
1553
@DVDM_CDT ,  
1554
N'Chờ giám đốc khối xác nhận',  
1555
0 -- DVDM_ID - varchar(15)  
1556
)  
1557
 
1558
END  
1559
 
1560
SET @IS_NEXT_CDT=(SELECT dbo.FN_CHECK_LIMIT_PL_REQ_CDT(@p_REQ_ID,'PTGD'))  
1561
IF(EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=0) AND (SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID,'GDK'))=1)  
1562
BEGIN  
1563
SET @IS_NEXT=1  
1564
END  
1565
 
1566
IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='PTGDK_TT'))  
1567
BEGIN  
1568
SET @STEP_PARENT='PTGDK_TT'  
1569
END  
1570
 
1571
 
1572
IF (@IS_NEXT = 1 OR @IS_NEXT_CDT=1)  
1573
BEGIN  
1574
INSERT INTO dbo.PL_REQUEST_PROCESS  
1575
(  
1576
REQ_ID,  
1577
PROCESS_ID,  
1578
STATUS,  
1579
ROLE_USER,  
1580
BRANCH_ID,  
1581
CHECKER_ID,  
1582
APPROVE_DT,  
1583
PARENT_PROCESS_ID,  
1584
IS_LEAF,  
1585
COST_ID,  
1586
DVDM_ID,  
1587
NOTES,  
1588
IS_HAS_CHILD  
1589
)  
1590
VALUES  
1591
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1592
'TGD', -- PROCESS_ID - varchar(10)  
1593
'U', -- STATUS - varchar(5)  
1594
'TGD', -- ROLE_USER - varchar(50)  
1595
'', -- BRANCH_ID - varchar(15)  
1596
'', -- CHECKER_ID - varchar(15)  
1597
NULL, -- APPROVE_DT - datetime  
1598
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1599
'N', -- IS_LEAF - varchar(1)  
1600
'', -- COST_ID - varchar(15)  
1601
'', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)  
1602
);  
1603
SET @STEP_PARENT = 'TGD';  
1604
 
1605
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'))  
1606
BEGIN  
1607
INSERT INTO dbo.PL_REQUEST_PROCESS  
1608
(  
1609
REQ_ID,  
1610
PROCESS_ID,  
1611
STATUS,  
1612
ROLE_USER,  
1613
BRANCH_ID,  
1614
CHECKER_ID,  
1615
APPROVE_DT,  
1616
PARENT_PROCESS_ID,  
1617
IS_LEAF,  
1618
COST_ID,  
1619
DVDM_ID,  
1620
NOTES,  
1621
IS_HAS_CHILD  
1622
)  
1623
VALUES  
1624
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1625
'HDQT', -- PROCESS_ID - varchar(10)  
1626
'U', -- STATUS - varchar(5)  
1627
'HDQT', -- ROLE_USER - varchar(50)  
1628
'', -- BRANCH_ID - varchar(15)  
1629
'', -- CHECKER_ID - varchar(15)  
1630
NULL, -- APPROVE_DT - datetime  
1631
@STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)  
1632
'N', -- IS_LEAF - varchar(1)  
1633
'', -- COST_ID - varchar(15)  
1634
'', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)  
1635
);  
1636
SET @STEP_PARENT = 'HDQT';  
1637
END  
1638
END;  
1639
 
1640
 
1641
 
1642
 
1643
--ELSE  
1644
--BEGIN  
1645
 
1646
--END  
1647
 
1648
END;  
1649
 
1650
END;  
1651
END  
1652
 
1653
 
1654
 
1655
END  
1656
 
1657
 
1658
END  
1659
 
1660
INSERT INTO dbo.PL_REQUEST_PROCESS  
1661
(  
1662
REQ_ID,  
1663
PROCESS_ID,  
1664
STATUS,  
1665
ROLE_USER,  
1666
BRANCH_ID,  
1667
CHECKER_ID,  
1668
APPROVE_DT,  
1669
PARENT_PROCESS_ID,  
1670
IS_LEAF,  
1671
NOTES  
1672
)  
1673
VALUES  
1674
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1675
'APPROVE', -- PROCESS_ID - varchar(10)  
1676
'U', -- STATUS - varchar(5)  
1677
'', -- ROLE_USER - varchar(50)  
1678
'', -- BRANCH_ID - varchar(15)  
1679
'', -- CHECKER_ID - varchar(15)  
1680
NULL, -- APPROVE_DT - datetime  
1681
@STEP_PARENT, 'Y', N'Hoàn tất');  
1682
 
1683
 
1684
 
1685
IF @@Error <> 0  
1686
GOTO ABORT;  
1687
 
1688
 
1689
 
1690
DECLARE @PROCESS_ID_CURR VARCHAR(10);  
1691
SET @PROCESS_ID_CURR =  
1692
(  
1693
SELECT TOP 1  
1694
PROCESS_ID  
1695
FROM dbo.PL_REQUEST_PROCESS  
1696
WHERE REQ_ID = @p_REQ_ID  
1697
AND PARENT_PROCESS_ID = 'APPNEW'  
1698
);  
1699
 
1700
UPDATE dbo.PL_REQUEST_PROCESS  
1701
SET STATUS = 'C'  
1702
WHERE PARENT_PROCESS_ID = 'APPNEW'  
1703
AND REQ_ID = @p_REQ_ID;  
1704
UPDATE dbo.PL_REQUEST_DOC  
1705
SET AUTH_STATUS = @p_AUTH_STATUS,  
1706
APPROVE_DT = @p_APPROVE_DT,  
1707
CHECKER_ID = @p_CHECKER_ID,  
1708
PROCESS_ID = @PROCESS_ID_CURR  
1709
WHERE REQ_ID = @p_REQ_ID;  
1710
 
1711
UPDATE dbo.PL_REQUEST_DOC_DT  
1712
SET CHECKER_ID=@p_CHECKER_ID,  
1713
APPROVE_DT=@p_APPROVE_DT  
1714
WHERE REQ_ID = @p_REQ_ID;  
1715
 
1716
INSERT INTO dbo.PL_PROCESS  
1717
(  
1718
REQ_ID,  
1719
PROCESS_ID,  
1720
CHECKER_ID,  
1721
APPROVE_DT,  
1722
PROCESS_DESC,  
1723
NOTES  
1724
)  
1725
VALUES  
1726
( @p_REQ_ID, -- REQ_ID - varchar(15)  
1727
'APPNEW', -- PROCESS_ID - varchar(10)  
1728
@p_CHECKER_ID, -- CHECKER_ID - varchar(15)  
1729
@p_APPROVE_DT, -- APPROVE_DT - datetime  
1730
@p_PROCESS_DES, 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)  
1731
);  
1732
IF (EXISTS  
1733
(  
1734
SELECT REQ_ID  
1735
FROM dbo.PL_REQUEST_DOC  
1736
WHERE REQ_ID = @p_REQ_ID  
1737
AND PROCESS_ID = 'APPROVE'  
1738
)  
1739
)  
1740
BEGIN  
1741
EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;  
1742
EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;  
1743
SET @Result = '0';  
1744
END;  
1745
SET @Result = '1';  
1746
END  
1747
COMMIT TRANSACTION;  
1748
IF(EXISTS(SELECT * FROM PL_REQUEST_DOC WHERE AUTH_STATUS ='A' AND REQ_ID =@p_REQ_ID))  
1749
BEGIN  
1750
SELECT @Result AS Result,  
1751
@ROLE_USER_NOTIFI AS ROLE_NOTIFI,  
1752
'' ErrorDesc;  
1753
RETURN '0';  
1754
END  
1755
ELSE  
1756
BEGIN  
1757
SELECT '4' as Result, N'Tờ trình chủ trương số: '+(SELECT REQ_CODE FROM PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) +N' đã được cấp phê duyệt trung gian xác nhận thành công. Vui lòng đợi trưởng đơn vị phê duyệt' ErrorDesc  
1758
RETURN '4'  
1759
END  
1760
ABORT:  
1761
BEGIN  
1762
 
1763
ROLLBACK TRANSACTION;  
1764
SELECT '-1' AS Result,  
1765
'' ROLE_NOTIFI,  
1766
'' ErrorDesc;  
1767
RETURN '-1';  
1768
END;