Project

General

Profile

Script Update PL Truongnv 12052020.txt

Luc Tran Van, 05/12/2020 12:54 PM

 
1
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_App]
2
    @p_REQ_ID VARCHAR(15) = NULL,
3
    @p_AUTH_STATUS VARCHAR(1) = NULL,
4
    @p_CHECKER_ID VARCHAR(15) = NULL,
5
    @p_APPROVE_DT DATETIME = NULL,
6
    @p_ROLE_LOGIN VARCHAR(50) = NULL,
7
    @p_BRANCH_LOGIN VARCHAR(15),
8
    @p_PROCESS_DES NVARCHAR(500)
9
AS
10
BEGIN TRANSACTION;
11
--SET @p_APPROVE_DT = @p_APPROVE_DT 
12
--Validation is here
13
DECLARE @ERRORSYS NVARCHAR(15) = '';
14
IF (NOT EXISTS (SELECT * FROM PL_REQUEST_DOC WHERE REQ_ID = @p_REQ_ID))
15
    SET @ERRORSYS = 'REQ-00002';
16
IF @ERRORSYS <> ''
17
BEGIN
18
    ROLLBACK TRANSACTION;
19
    SELECT ErrorCode Result,
20
           ErrorDesc ErrorDesc
21
    FROM SYS_ERROR
22
    WHERE ErrorCode = @ERRORSYS;
23
    RETURN '0';
24
END;
25
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
26
SELECT @ERROR=ERROR,
27
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'APPNEW','PL_REQUEST_DOC',@p_CHECKER_ID,'APPNEW')
28
IF(@ERROR=1)
29
BEGIN
30
	 ROLLBACK TRANSACTION;
31
    SELECT '-1'  Result,
32
           @EROOR_DES ErrorDesc
33
   
34
    RETURN '0';
35
END
36
--UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS = @P_AUTH_STATUS, CHECKER_ID = @P_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@P_APPROVE_DT,103)
37
--WHERE REQ_DOC_ID = @p_REQ_ID AND FR_BRN_ID IN (SELECT BRANCH_ID FROM  CM_BRANCH_GETCHILDID(@p_BRANCH_LOGIN))
38
DECLARE @Result VARCHAR(5),
39
        @TOTAL_TRANSFER DECIMAL(18, 0),
40
        @TOTAL_AMT DECIMAL(18, 0),
41
        @ROLE_USER_NOTIFI VARCHAR(50),
42
        @ROLE_ID VARCHAR(20),
43
        @ROLE_TF VARCHAR(20),
44
        @LIMIT_VALUE DECIMAL(18, 0),
45
        @STEP_CURR VARCHAR(20),
46
        @STEP_PARENT VARCHAR(20),
47
        @COST_ID VARCHAR(20),
48
        @FR_BRANCH_ID VARCHAR(20),
49
        @FR_DEP_ID VARCHAR(20),
50
        @DVDM_ID VARCHAR(20),
51
        @IS_NEXT BIT = 0,
52
        @TOTAL_AMT_GD DECIMAL(12, 0),
53
        @STOP BIT,
54
        @NOTES NVARCHAR(100);
55
DECLARE @ROLE_CDT VARCHAR(20),
56
        @DVDM_CDT VARCHAR(20),
57
        @LIMIT_VALUE_CDT VARCHAR(20),
58
        @NOTES_CDT VARCHAR(20);
59
DECLARE @DATA_DVDM TABLE
60
(
61
    DVDM_ID VARCHAR(20),
62
    TOTAL_AMT DECIMAL(12, 0),
63
	IS_PTGD BIT
64
);
65
--UPDATE dbo.PL_REQUEST_COSTCENTER 
66
--SET DVMD_ID=(SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE PL_COSTCENTER.COST_ID=PL_REQUEST_COSTCENTER.COST_ID),
67
--TOTAL_AMT_GD=(SELECT SUM(PM.TOTAL_AMT) AS AMT FROM
68
--(SELECT PLAN_ID,GOODS_ID,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT  WHERE REQDT_TYPE='I' AND REQ_ID=@p_REQ_ID) PR
69
--LEFT JOIN dbo.PL_MASTER PM ON PR.PLAN_ID=PM.PLAN_ID
70
--WHERE PM.COST_ID=PL_REQUEST_COSTCENTER.COST_ID)
71
--WHERE REQ_ID=@p_REQ_ID
72
INSERT INTO @DATA_DVDM
73
SELECT KHOI_ID,
74
       SUM(TOTAL_AMT) AS TOTAL_AMT,DM.IS_PTGD
75
FROM dbo.PL_REQUEST_DOC_DT DT
76
LEFT JOIN CM_DVDM DM ON DM.DVDM_ID=DT.KHOI_ID AND DM.IS_KHOI=1
77
WHERE REQ_ID = @p_REQ_ID
78
GROUP BY KHOI_ID,DM.IS_PTGD;
79
DELETE FROM dbo.PL_REQUEST_PROCESS
80
WHERE REQ_ID = @p_REQ_ID;
81
	DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20) ,@DEP_CREATE VARCHAR(20),@BRANCH_TYPE VARCHAR(10),
82
	@BRANCH_CREATE_TYPE VARCHAR(10)
83
	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
84
	SET @BRANCH_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
85
	SET @BRANCH_CREATE_TYPE=(SELECT BRANCH_TYPE FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
86
IF(@BRANCH_ID <> @BRANCH_CREATE)
87
	BEGIN
88
		IF(@BRANCH_CREATE_TYPE='HS')
89
		BEGIN
90
			IF(@BRANCH_TYPE='PGD')
91
				SET @BRANCH_ID=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
92
		END
93
		ELSE
94
		IF(@BRANCH_CREATE='CN')
95
			IF(@BRANCH_TYPE='PGD')
96
				SET @BRANCH_ID=(SELECT FATHER_ID  FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_ID)
97
	END
98
INSERT INTO dbo.PL_REQUEST_PROCESS
99
(
100
    REQ_ID,
101
    PROCESS_ID,
102
    STATUS,
103
    ROLE_USER,
104
    BRANCH_ID,
105
	DEP_ID,
106
    CHECKER_ID,
107
    APPROVE_DT,
108
    PARENT_PROCESS_ID,
109
    IS_LEAF,
110
    NOTES
111
)
112
VALUES
113
(   @p_REQ_ID,               -- REQ_ID - varchar(15)
114
    'APPNEW',                  -- PROCESS_ID - varchar(10)
115
    'P',                     -- STATUS - varchar(5)
116
    'GDDV',                      -- ROLE_USER - varchar(50)
117
    @BRANCH_ID,
118
	@DEP_ID,                      -- BRANCH_ID - varchar(15)
119
    @p_CHECKER_ID,           -- CHECKER_ID - varchar(15)
120
    GETDATE() , -- APPROVE_DT - datetime
121
    NULL, 'N', N'Trưởng đơn vị phê duyệt');
122
SET @STEP_CURR = 'APPNEW';
123
SET @STEP_PARENT = 'APPNEW';
124
IF (EXISTS
125
(
126
    SELECT REQ_COST_ID
127
    FROM dbo.PL_REQUEST_COSTCENTER
128
    WHERE REQ_ID = @p_REQ_ID
129
)
130
   )
131
BEGIN
132
    DECLARE lstCostCenter CURSOR FOR
133
    SELECT COST_ID
134
    FROM dbo.PL_REQUEST_COSTCENTER
135
    WHERE REQ_ID = @p_REQ_ID;
136
    OPEN lstCostCenter;
137
    FETCH NEXT FROM lstCostCenter
138
    INTO @COST_ID;
139
    WHILE @@FETCH_STATUS = 0
140
    BEGIN
141
        INSERT INTO dbo.PL_REQUEST_PROCESS
142
        (
143
            REQ_ID,
144
            PROCESS_ID,
145
            STATUS,
146
            ROLE_USER,
147
            BRANCH_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
            'DVCM',       -- PROCESS_ID - varchar(10)
160
            'U',          -- STATUS - varchar(5)
161
            'GDDV',       -- ROLE_USER - varchar(50)
162
            '',           -- BRANCH_ID - varchar(15)
163
            '',           -- CHECKER_ID - varchar(15)
164
            NULL,         -- APPROVE_DT - datetime
165
            @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
166
            'N',          -- IS_LEAF - varchar(1)
167
            '',           -- COST_ID - varchar(15)
168
            @COST_ID, N'Chờ đơn vị chuyên môn xác nhận', 1
169
            -- DVDM_ID - varchar(15)
170
            );
171
        FETCH NEXT FROM lstCostCenter
172
        INTO @COST_ID;
173
    END;
174
    CLOSE lstCostCenter;
175
    DEALLOCATE lstCostCenter;
176
    SET @STEP_PARENT = 'DVCM';
177
END;
178
SET @TOTAL_AMT =
179
(
180
    SELECT SUM(TOTAL_AMT) AS TOTAL_AMT
181
    FROM dbo.PL_REQUEST_DOC_DT
182
    WHERE REQ_ID = @p_REQ_ID
183
);
184
IF (EXISTS
185
(
186
    SELECT REQ_TRANSFER_ID
187
    FROM dbo.PL_REQUEST_TRANSFER
188
    WHERE REQ_DOC_ID = @p_REQ_ID
189
)
190
   )
191
BEGIN
192
    IF (EXISTS
193
    (
194
        SELECT FR_BRN_ID
195
        FROM dbo.PL_REQUEST_TRANSFER
196
        WHERE REQ_DOC_ID = @p_REQ_ID
197
              AND
198
              (
199
                  FR_BRN_ID <> @BRANCH_CREATE
200
                  OR FR_DEP_ID <> @DEP_CREATE
201
              )
202
    )
203
       )
204
    BEGIN
205
        DECLARE lstTransfer CURSOR FOR
206
        SELECT FR_BRN_ID,
207
               FR_DEP_ID
208
        FROM dbo.PL_REQUEST_TRANSFER
209
        WHERE REQ_DOC_ID = @p_REQ_ID
210
              AND
211
              (
212
                  FR_BRN_ID <> @BRANCH_CREATE
213
                  OR FR_DEP_ID <> @DEP_CREATE
214
              )
215
        GROUP BY FR_BRN_ID,
216
                 FR_DEP_ID;
217
        OPEN lstTransfer;
218
        FETCH NEXT FROM lstTransfer
219
        INTO @FR_BRANCH_ID,
220
             @FR_DEP_ID;
221
        WHILE @@FETCH_STATUS = 0
222
        BEGIN
223
            INSERT INTO dbo.PL_REQUEST_PROCESS
224
            (
225
                REQ_ID,
226
                PROCESS_ID,
227
                STATUS,
228
                ROLE_USER,
229
                BRANCH_ID,
230
                CHECKER_ID,
231
                APPROVE_DT,
232
                PARENT_PROCESS_ID,
233
                IS_LEAF,
234
                COST_ID,
235
                DVDM_ID,
236
                NOTES,
237
                IS_HAS_CHILD,
238
                DEP_ID
239
            )
240
            VALUES
241
            (   @p_REQ_ID,     -- REQ_ID - varchar(15)
242
                'DVDC',        -- PROCESS_ID - varchar(10)
243
                'U',           -- STATUS - varchar(5)
244
                'GDDV',        -- ROLE_USER - varchar(50)
245
                @FR_BRANCH_ID, -- BRANCH_ID - varchar(15)
246
                '',            -- CHECKER_ID - varchar(15)
247
                NULL,          -- APPROVE_DT - datetime
248
                @STEP_PARENT,  -- PARENT_PROCESS_ID - varchar(10)
249
                'N',           -- IS_LEAF - varchar(1)
250
                '',            -- COST_ID - varchar(15)
251
                '',            -- DVDM_ID - varchar(15)
252
                N'Chờ đơn vị điều chuyển xác nhận', 1, @FR_DEP_ID);
253
            FETCH NEXT FROM lstTransfer
254
            INTO @FR_BRANCH_ID,
255
                 @FR_DEP_ID;
256
        END;
257
        CLOSE lstTransfer;
258
        DEALLOCATE lstTransfer;
259
        SET @STEP_PARENT = 'DVDC';
260
    END;
261
    -- Đầu mối nhận
262
    DECLARE lstTransfer CURSOR FOR
263
    SELECT TO_DVDM_ID
264
    FROM dbo.PL_REQUEST_TRANSFER
265
    WHERE REQ_DOC_ID = @p_REQ_ID AND TO_DVDM_ID IS NOT NULL AND TO_DVDM_ID <>''
266
    GROUP BY TO_DVDM_ID;
267
    OPEN lstTransfer;
268
    FETCH NEXT FROM lstTransfer
269
    INTO @DVDM_ID;
270
    WHILE @@FETCH_STATUS = 0
271
    BEGIN
272
		IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=@DVDM_ID AND ROLE_USER='GDDV'))
273
		BEGIN
274
        INSERT INTO dbo.PL_REQUEST_PROCESS
275
        (
276
            REQ_ID,
277
            PROCESS_ID,
278
            STATUS,
279
            ROLE_USER,
280
            BRANCH_ID,
281
            CHECKER_ID,
282
            APPROVE_DT,
283
            PARENT_PROCESS_ID,
284
            IS_LEAF,
285
            COST_ID,
286
            DVDM_ID,
287
            NOTES,
288
            IS_HAS_CHILD
289
        )
290
        VALUES
291
        (   @p_REQ_ID,    -- REQ_ID - varchar(15)
292
            'DVDM_DC',    -- PROCESS_ID - varchar(10)
293
            'U',          -- STATUS - varchar(5)
294
            'GDDV',       -- ROLE_USER - varchar(50)
295
            '',           -- BRANCH_ID - varchar(15)
296
            '',           -- CHECKER_ID - varchar(15)
297
            NULL,         -- APPROVE_DT - datetime
298
            @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
299
            'N',          -- IS_LEAF - varchar(1)
300
            '',           -- COST_ID - varchar(15)
301
            @DVDM_ID,     -- DVDM_ID - varchar(15)
302
            N'Chờ đơn vị đầu mối xác nhận', 0);
303
		END
304
        FETCH NEXT FROM lstTransfer
305
        INTO @DVDM_ID;
306
    END;
307
    CLOSE lstTransfer;
308
    DEALLOCATE lstTransfer;
309
    IF (EXISTS
310
    (
311
        SELECT FR_BRN_ID
312
        FROM dbo.PL_REQUEST_TRANSFER
313
        WHERE REQ_DOC_ID = @p_REQ_ID
314
              AND FR_BRN_ID = @BRANCH_CREATE
315
              AND FR_DEP_ID = @DEP_CREATE
316
    )
317
       )
318
    BEGIN
319
        -- Đầu mối cho
320
        DECLARE lstTransfer CURSOR FOR
321
        SELECT FR_DVDM_ID
322
        FROM dbo.PL_REQUEST_TRANSFER
323
        WHERE REQ_DOC_ID = @p_REQ_ID
324
              AND FR_BRN_ID = @BRANCH_CREATE
325
              AND FR_DEP_ID = @DEP_CREATE
326
			  AND FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>''
327
              AND NOT EXISTS
328
        (
329
            SELECT *
330
            FROM dbo.PL_REQUEST_PROCESS
331
            WHERE REQ_ID = @p_REQ_ID
332
                  AND PROCESS_ID = 'DVDM_DC'
333
                  AND DVDM_ID = FR_DVDM_ID
334
        )
335
        GROUP BY FR_DVDM_ID;
336
        OPEN lstTransfer;
337
        FETCH NEXT FROM lstTransfer
338
        INTO @DVDM_ID;
339
        WHILE @@FETCH_STATUS = 0
340
        BEGIN
341
		IF(NOT EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND DVDM_ID=@DVDM_ID AND ROLE_USER='GDDV'))
342
		BEGIN
343
            INSERT INTO dbo.PL_REQUEST_PROCESS
344
            (
345
                REQ_ID,
346
                PROCESS_ID,
347
                STATUS,
348
                ROLE_USER,
349
                BRANCH_ID,
350
                CHECKER_ID,
351
                APPROVE_DT,
352
                PARENT_PROCESS_ID,
353
                IS_LEAF,
354
                COST_ID,
355
                DVDM_ID,
356
                NOTES,
357
                IS_HAS_CHILD
358
            )
359
            VALUES
360
            (   @p_REQ_ID,    -- REQ_ID - varchar(15)
361
                'DVDM_DC',    -- PROCESS_ID - varchar(10)
362
                'U',          -- STATUS - varchar(5)
363
                'GDDV',       -- ROLE_USER - varchar(50)
364
                '',           -- BRANCH_ID - varchar(15)
365
                '',           -- CHECKER_ID - varchar(15)
366
                NULL,         -- APPROVE_DT - datetime
367
                @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
368
                'N',          -- IS_LEAF - varchar(1)
369
                '',           -- COST_ID - varchar(15)
370
                @DVDM_ID,     -- DVDM_ID - varchar(15)
371
                N'Chờ đơn vị đầu mối xác nhận', 0);
372
		END
373
            FETCH NEXT FROM lstTransfer
374
            INTO @DVDM_ID;
375
        END;
376
        CLOSE lstTransfer;
377
        DEALLOCATE lstTransfer;
378
       IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
379
			SET @STEP_PARENT='DVDM_DC'
380
    END;
381
    INSERT INTO dbo.PL_REQUEST_PROCESS
382
    (
383
        REQ_ID,
384
        PROCESS_ID,
385
        STATUS,
386
        ROLE_USER,
387
        BRANCH_ID,
388
        CHECKER_ID,
389
        APPROVE_DT,
390
        PARENT_PROCESS_ID,
391
        IS_LEAF,
392
        COST_ID,
393
        DVDM_ID,
394
        NOTES,IS_HAS_CHILD
395
    )
396
    VALUES
397
    (   @p_REQ_ID,    -- REQ_ID - varchar(15)
398
        'TC',         -- PROCESS_ID - varchar(10)
399
        'U',          -- STATUS - varchar(5)
400
        'TC',         -- ROLE_USER - varchar(50)
401
        '',           -- BRANCH_ID - varchar(15)
402
        '',           -- CHECKER_ID - varchar(15)
403
        NULL,         -- APPROVE_DT - datetime
404
        @STEP_PARENT, -- PARENT_PROCESS_ID - varchar(10)
405
        'N',          -- IS_LEAF - varchar(1)
406
        '',           -- COST_ID - varchar(15)
407
        '',           -- DVDM_ID - varchar(15)
408
        N'Chờ đơn vị Tài chính xác nhận',1);
409
    SET @STEP_PARENT = 'TC';
410
    IF (NOT EXISTS
411
    (
412
        SELECT REQ_TRANSFER_ID
413
        FROM dbo.PL_REQUEST_TRANSFER
414
        WHERE REQ_DOC_ID = @p_REQ_ID
415
              AND
416
              (
417
                  FR_BRN_ID <> @BRANCH_CREATE
418
                  OR FR_DEP_ID <> @DEP_CREATE
419
              )
420
    )
421
       )
422
    BEGIN
423
        ---Duyệt DC
424
        IF (
425
           (
426
               SELECT COUNT(T.FR_KHOI_ID) AS COUNT_ROW
427
               FROM
428
               (
429
                   SELECT FR_KHOI_ID
430
                   FROM dbo.PL_REQUEST_TRANSFER
431
                   WHERE REQ_DOC_ID = @p_REQ_ID
432
                   GROUP BY FR_KHOI_ID
433
               ) T
434
           ) > 1
435
           )
436
        BEGIN
437
            INSERT INTO dbo.PL_REQUEST_PROCESS
438
            (
439
                REQ_ID,
440
                PROCESS_ID,
441
                STATUS,
442
                ROLE_USER,
443
                BRANCH_ID,
444
                CHECKER_ID,
445
                APPROVE_DT,
446
                PARENT_PROCESS_ID,
447
                IS_LEAF,
448
                COST_ID,
449
                DVDM_ID,
450
                NOTES,
451
                IS_HAS_CHILD
452
            )
453
            VALUES
454
            (   @p_REQ_ID,                      -- REQ_ID - varchar(15)
455
                'TGD_DC',                       -- PROCESS_ID - varchar(10)
456
                'U',                            -- STATUS - varchar(5)
457
                'TGD',                          -- ROLE_USER - varchar(50)
458
                '',                             -- BRANCH_ID - varchar(15)
459
                '',                             -- CHECKER_ID - varchar(15)
460
                NULL,                           -- APPROVE_DT - datetime
461
                @STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
462
                '',                             -- IS_LEAF - varchar(1)
463
                '',                             -- COST_ID - varchar(15)
464
                '',                             -- DVDM_ID - varchar(15)
465
                N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
466
                NULL                            -- IS_HAS_CHILD - bit
467
                );
468
            SET @STEP_PARENT = 'TGD_DC';
469
        END;
470
        ELSE
471
        BEGIN
472
            DECLARE @LIMTT_MAX DECIMAL(18, 2),
473
                    @LIMIT_APP DECIMAL(18, 2),
474
                    @KHOI_ID_TF VARCHAR(20);
475
            SET @KHOI_ID_TF =
476
            (
477
                SELECT TOP 1
478
                       FR_KHOI_ID
479
                FROM dbo.PL_REQUEST_TRANSFER
480
                WHERE REQ_DOC_ID = @p_REQ_ID
481
            );
482
            SET @LIMIT_APP =
483
            (
484
                SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP
485
                FROM dbo.LIMIT_ACCUMULATE
486
                WHERE ROLE_ID = 'GDK'
487
                      AND DVDM_ID = @KHOI_ID_TF
488
            );
489
            SET @TOTAL_TRANSFER =
490
            (
491
                SELECT SUM(TOTAL_AMT) AS TOTAL
492
                FROM dbo.PL_REQUEST_TRANSFER
493
                WHERE REQ_DOC_ID = @p_REQ_ID
494
            );
495
            SET @LIMTT_MAX =
496
            (
497
                SELECT LIMIT_VALUE
498
                FROM dbo.TL_SYSROLE_LIMIT
499
                WHERE ROLE_ID = 'GDK'
500
                      AND LIMIT_TYPE = 'DCNS'
501
            );
502
            INSERT INTO dbo.PL_REQUEST_PROCESS
503
            (
504
                REQ_ID,
505
                PROCESS_ID,
506
                STATUS,
507
                ROLE_USER,
508
                BRANCH_ID,
509
                CHECKER_ID,
510
                APPROVE_DT,
511
                PARENT_PROCESS_ID,
512
                IS_LEAF,
513
                COST_ID,
514
                DVDM_ID,
515
                NOTES,
516
                IS_HAS_CHILD
517
            )
518
            VALUES
519
            (   @p_REQ_ID,                     -- REQ_ID - varchar(15)
520
                'GDK_DC',                      -- PROCESS_ID - varchar(10)
521
                'U',                           -- STATUS - varchar(5)
522
                'GDK',                         -- ROLE_USER - varchar(50)
523
                '',                            -- BRANCH_ID - varchar(15)
524
                '',                            -- CHECKER_ID - varchar(15)
525
                GETDATE(),                     -- APPROVE_DT - datetime
526
                @STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
527
                'N',                           -- IS_LEAF - varchar(1)
528
                '',                            -- COST_ID - varchar(15)
529
                @KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
530
                N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
531
                NULL                           -- IS_HAS_CHILD - bit
532
                );
533
            SET @STEP_PARENT = 'GDK_DC';
534
            IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP)
535
            BEGIN
536
			IF(EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=1))
537
			BEGIN
538
                INSERT INTO dbo.PL_REQUEST_PROCESS
539
                (
540
                    REQ_ID,
541
                    PROCESS_ID,
542
                    STATUS,
543
                    ROLE_USER,
544
                    BRANCH_ID,
545
                    CHECKER_ID,
546
                    APPROVE_DT,
547
                    PARENT_PROCESS_ID,
548
                    IS_LEAF,
549
                    COST_ID,
550
                    DVDM_ID,
551
                    NOTES,
552
                    IS_HAS_CHILD
553
                )
554
                VALUES
555
                (   @p_REQ_ID,                     -- REQ_ID - varchar(15)
556
                    'PTGD_DC',                     -- PROCESS_ID - varchar(10)
557
                    'U',                           -- STATUS - varchar(5)
558
                    'PTGD',                        -- ROLE_USER - varchar(50)
559
                    '',                            -- BRANCH_ID - varchar(15)
560
                    '',                            -- CHECKER_ID - varchar(15)
561
                    GETDATE(),                     -- APPROVE_DT - datetime
562
                    @STEP_PARENT,                  -- PARENT_PROCESS_ID - varchar(10)
563
                    'N',                           -- IS_LEAF - varchar(1)
564
                    '',                            -- COST_ID - varchar(15)
565
                    @KHOI_ID_TF,                   -- DVDM_ID - varchar(15)
566
                    N'Chờ giám đốc khối xác nhận', -- NOTES - nvarchar(500)
567
                    NULL                           -- IS_HAS_CHILD - bit
568
                    );
569
                SET @STEP_PARENT = 'PTGD_DC';
570
                SET @LIMTT_MAX =
571
                (
572
                    SELECT LIMIT_VALUE
573
                    FROM dbo.TL_SYSROLE_LIMIT
574
                    WHERE ROLE_ID = 'PTGD'
575
                          AND LIMIT_TYPE = 'DCNS'
576
                );
577
                SET @LIMIT_APP =
578
                (
579
                    SELECT ISNULL(MAX_AMT, 0) - ISNULL(TOTAL_APP_AMT, 0) AS LIMIT_APP
580
                    FROM dbo.LIMIT_ACCUMULATE
581
                    WHERE ROLE_ID = 'PTGD'
582
                          AND DVDM_ID = @KHOI_ID_TF
583
                );
584
			END
585
                IF (@TOTAL_TRANSFER > @LIMTT_MAX OR @TOTAL_TRANSFER > @LIMIT_APP OR EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=0))
586
                BEGIN
587
                    INSERT INTO dbo.PL_REQUEST_PROCESS
588
                    (
589
                        REQ_ID,
590
                        PROCESS_ID,
591
                        STATUS,
592
                        ROLE_USER,
593
                        BRANCH_ID,
594
                        CHECKER_ID,
595
                        APPROVE_DT,
596
                        PARENT_PROCESS_ID,
597
                        IS_LEAF,
598
                        COST_ID,
599
                        DVDM_ID,
600
                        NOTES,
601
                        IS_HAS_CHILD
602
                    )
603
                    VALUES
604
                    (   @p_REQ_ID,                      -- REQ_ID - varchar(15)
605
                        'TGD_DC',                       -- PROCESS_ID - varchar(10)
606
                        'U',                            -- STATUS - varchar(5)
607
                        'TGD',                          -- ROLE_USER - varchar(50)
608
                        '',                             -- BRANCH_ID - varchar(15)
609
                        '',                             -- CHECKER_ID - varchar(15)
610
                        NULL,                           -- APPROVE_DT - datetime
611
                        @STEP_PARENT,                   -- PARENT_PROCESS_ID - varchar(10)
612
                        '',                             -- IS_LEAF - varchar(1)
613
                        '',                             -- COST_ID - varchar(15)
614
                        '',                             -- DVDM_ID - varchar(15)
615
                        N'Chờ tổng giám đốc phê duyệt', -- NOTES - nvarchar(500)
616
                        NULL                            -- IS_HAS_CHILD - bit
617
                        );
618
                    SET @STEP_PARENT = 'TGD_DC';
619
                END;
620
            END;
621
        END;
622
       
623
     
624
    END;
625
END;
626
ELSE
627
BEGIN
628
	
629
IF(@BRANCH_CREATE_TYPE='PGD')
630
BEGIN
631
	DECLARE @BRANCH_PARENT VARCHAR(15)
632
	SET @BRANCH_PARENT=(SELECT FATHER_ID FROM dbo.CM_BRANCH WHERE BRANCH_ID=@BRANCH_CREATE)
633
	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='')))
634
	BEGIN
635
		INSERT INTO dbo.PL_REQUEST_PROCESS
636
		(
637
		REQ_ID,
638
		PROCESS_ID,
639
		STATUS,
640
		ROLE_USER,
641
		BRANCH_ID,
642
		DEP_ID,
643
		CHECKER_ID,
644
		APPROVE_DT,
645
		PARENT_PROCESS_ID,
646
		IS_LEAF,
647
		NOTES
648
		)
649
		VALUES
650
		(   
651
		@p_REQ_ID,               -- REQ_ID - varchar(15)
652
		'DVC',                  -- PROCESS_ID - varchar(10)
653
		'U',                     -- STATUS - varchar(5)
654
		'GDDV',                      -- ROLE_USER - varchar(50)
655
		@BRANCH_PARENT,
656
		NULL,                      -- BRANCH_ID - varchar(15)
657
		NULL,           -- CHECKER_ID - varchar(15)
658
		NULL , -- APPROVE_DT - datetime
659
		@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
660
		SET @STEP_CURR = 'DVC';
661
		SET @STEP_PARENT = 'DVC';
662
	END
663
	
664
END
665
ELSE 
666
IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV'
667
AND ((
668
	BRANCH_ID=@BRANCH_CREATE 
669
	AND ((DEP_ID =@DEP_CREATE) OR ((@DEP_CREATE IS NULL OR @DEP_CREATE='') 
670
	AND (DEP_ID IS NULL OR DEP_ID='')))
671
	)
672
	OR EXISTS(SELECT PC.COST_ID FROM dbo.PL_COSTCENTER PC 
673
	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)
674
	)
675
))
676
BEGIN
677
INSERT INTO dbo.PL_REQUEST_PROCESS
678
		(
679
		REQ_ID,
680
		PROCESS_ID,
681
		STATUS,
682
		ROLE_USER,
683
		BRANCH_ID,
684
		DEP_ID,
685
		CHECKER_ID,
686
		APPROVE_DT,
687
		PARENT_PROCESS_ID,
688
		IS_LEAF,
689
		NOTES
690
		)
691
		VALUES
692
		(   
693
		@p_REQ_ID,               -- REQ_ID - varchar(15)
694
		'DVC',                  -- PROCESS_ID - varchar(10)
695
		'U',                     -- STATUS - varchar(5)
696
		'GDDV',                      -- ROLE_USER - varchar(50)
697
		@BRANCH_CREATE,
698
		@DEP_CREATE,                      -- BRANCH_ID - varchar(15)
699
		NULL,           -- CHECKER_ID - varchar(15)
700
		NULL , -- APPROVE_DT - datetime
701
		@STEP_PARENT, 'N', N'Trưởng đơn vị phê duyệt');
702
SET @STEP_CURR = 'DVC';
703
SET @STEP_PARENT = 'DVC';
704
END
705
SET @IS_NEXT =
706
(
707
    SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDDV')
708
);
709
IF (@IS_NEXT = 1)
710
BEGIN
711
    DECLARE lstCostCenter CURSOR FOR
712
    SELECT DVDM_ID,
713
           TOTAL_AMT
714
    FROM @DATA_DVDM;
715
    OPEN lstCostCenter;
716
    FETCH NEXT FROM lstCostCenter
717
    INTO @DVDM_ID,
718
         @TOTAL_AMT_GD;
719
    WHILE @@FETCH_STATUS = 0
720
    BEGIN
721
        INSERT INTO dbo.PL_REQUEST_PROCESS
722
        (
723
            REQ_ID,
724
            PROCESS_ID,
725
            STATUS,
726
            ROLE_USER,
727
            BRANCH_ID,
728
            CHECKER_ID,
729
            APPROVE_DT,
730
            PARENT_PROCESS_ID,
731
            IS_LEAF,
732
            COST_ID,
733
            DVDM_ID,
734
            NOTES,
735
            IS_HAS_CHILD
736
        )
737
        VALUES
738
        (   @p_REQ_ID,                                 -- REQ_ID - varchar(15)
739
            'GDK_TT',                                  -- PROCESS_ID - varchar(10)
740
            'U',                                       -- STATUS - varchar(5)
741
            'GDK',                                     -- ROLE_USER - varchar(50)
742
            '',                                        -- BRANCH_ID - varchar(15)
743
            '',                                        -- CHECKER_ID - varchar(15)
744
            NULL,                                      -- APPROVE_DT - datetime
745
            @STEP_PARENT,                              -- PARENT_PROCESS_ID - varchar(10)
746
            'N',                                       -- IS_LEAF - varchar(1)
747
            '',                                        -- COST_ID - varchar(15)
748
            @DVDM_ID, N'Chờ giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
749
            );
750
        FETCH NEXT FROM lstCostCenter
751
        INTO @DVDM_ID,
752
             @TOTAL_AMT_GD;
753
    END;
754
    CLOSE lstCostCenter;
755
    DEALLOCATE lstCostCenter;
756
    SET @IS_NEXT =
757
    (
758
        SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'GDK')
759
    );
760
    SET @STEP_PARENT = 'GDK_TT';
761
    IF (@IS_NEXT = 1)
762
    BEGIN
763
		IF( EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=1) )
764
		BEGIN
765
        DECLARE lstCostCenter CURSOR FOR
766
        SELECT DVDM_ID,
767
               TOTAL_AMT
768
        FROM @DATA_DVDM WHERE IS_PTGD=1;
769
        OPEN lstCostCenter;
770
        FETCH NEXT FROM lstCostCenter
771
        INTO @DVDM_ID,
772
             @TOTAL_AMT_GD;
773
        WHILE @@FETCH_STATUS = 0
774
        BEGIN
775
            INSERT INTO dbo.PL_REQUEST_PROCESS
776
            (
777
                REQ_ID,
778
                PROCESS_ID,
779
                STATUS,
780
                ROLE_USER,
781
                BRANCH_ID,
782
                CHECKER_ID,
783
                APPROVE_DT,
784
                PARENT_PROCESS_ID,
785
                IS_LEAF,
786
                COST_ID,
787
                DVDM_ID,
788
                NOTES,
789
                IS_HAS_CHILD
790
            )
791
            VALUES
792
            (   @p_REQ_ID,                                          -- REQ_ID - varchar(15)
793
                'PTGDK_TT',                                         -- PROCESS_ID - varchar(10)
794
                'U',                                                -- STATUS - varchar(5)
795
                'PTGD',                                             -- ROLE_USER - varchar(50)
796
                '',                                                 -- BRANCH_ID - varchar(15)
797
                '',                                                 -- CHECKER_ID - varchar(15)
798
                NULL,                                               -- APPROVE_DT - datetime
799
                @STEP_PARENT,                                       -- PARENT_PROCESS_ID - varchar(10)
800
                'N',                                                -- IS_LEAF - varchar(1)
801
                '',                                                 -- COST_ID - varchar(15)
802
                @DVDM_ID, N'Chờ phó tổng giám đốc khối xác nhận', 0 -- DVDM_ID - varchar(15)
803
                );
804
            FETCH NEXT FROM lstCostCenter
805
            INTO @DVDM_ID,
806
                 @TOTAL_AMT_GD;
807
        END;
808
        CLOSE lstCostCenter;
809
        DEALLOCATE lstCostCenter;
810
        SET @IS_NEXT =
811
        (
812
            SELECT dbo.FN_CHECK_LIMIT_PL_REQ(@p_REQ_ID, 'PTGD')
813
        );
814
        SET @STEP_PARENT = 'PTGDK_TT';
815
		END
816
		IF(EXISTS (SELECT DVDM_ID FROM @DATA_DVDM WHERE IS_PTGD=0))
817
		BEGIN
818
		SET @IS_NEXT=1
819
		END
820
        IF (@IS_NEXT = 1)
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,
836
                IS_HAS_CHILD
837
            )
838
            VALUES
839
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
840
                'TGD',                               -- PROCESS_ID - varchar(10)
841
                'U',                                 -- STATUS - varchar(5)
842
                'TGD',                               -- ROLE_USER - varchar(50)
843
                '',                                  -- BRANCH_ID - varchar(15)
844
                '',                                  -- CHECKER_ID - varchar(15)
845
                NULL,                                -- APPROVE_DT - datetime
846
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
847
                'N',                                 -- IS_LEAF - varchar(1)
848
                '',                                  -- COST_ID - varchar(15)
849
                '', N'Chờ tổng giám đốc xác nhận', 0 -- DVDM_ID - varchar(15)
850
                );
851
            SET @STEP_PARENT = 'TGD';
852
			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'))
853
			BEGIN
854
				
855
				INSERT INTO dbo.PL_REQUEST_PROCESS
856
            (
857
                REQ_ID,
858
                PROCESS_ID,
859
                STATUS,
860
                ROLE_USER,
861
                BRANCH_ID,
862
                CHECKER_ID,
863
                APPROVE_DT,
864
                PARENT_PROCESS_ID,
865
                IS_LEAF,
866
                COST_ID,
867
                DVDM_ID,
868
                NOTES,
869
                IS_HAS_CHILD
870
            )
871
            VALUES
872
            (   @p_REQ_ID,                           -- REQ_ID - varchar(15)
873
                'HDQT',                               -- PROCESS_ID - varchar(10)
874
                'U',                                 -- STATUS - varchar(5)
875
                'HDQT',                               -- ROLE_USER - varchar(50)
876
                '',                                  -- BRANCH_ID - varchar(15)
877
                '',                                  -- CHECKER_ID - varchar(15)
878
                NULL,                                -- APPROVE_DT - datetime
879
                @STEP_PARENT,                        -- PARENT_PROCESS_ID - varchar(10)
880
                'N',                                 -- IS_LEAF - varchar(1)
881
                '',                                  -- COST_ID - varchar(15)
882
                '', N'Chờ HDQT xác nhận', 0 -- DVDM_ID - varchar(15)
883
                );
884
            SET @STEP_PARENT = 'HDQT';
885
			END
886
        END;
887
	
888
    --ELSE
889
    --BEGIN
890
    --END
891
		
892
    END;
893
END;
894
END
895
INSERT INTO dbo.PL_REQUEST_PROCESS
896
(
897
    REQ_ID,
898
    PROCESS_ID,
899
    STATUS,
900
    ROLE_USER,
901
    BRANCH_ID,
902
    CHECKER_ID,
903
    APPROVE_DT,
904
    PARENT_PROCESS_ID,
905
    IS_LEAF,
906
    NOTES
907
)
908
VALUES
909
(   @p_REQ_ID, -- REQ_ID - varchar(15)
910
    'APPROVE', -- PROCESS_ID - varchar(10)
911
    'U',       -- STATUS - varchar(5)
912
    '',        -- ROLE_USER - varchar(50)
913
    '',        -- BRANCH_ID - varchar(15)
914
    '',        -- CHECKER_ID - varchar(15)
915
    NULL,      -- APPROVE_DT - datetime
916
    @STEP_PARENT, 'Y', N'Hoàn tất');
917
IF @@Error <> 0
918
    GOTO ABORT;
919
DECLARE @PROCESS_ID_CURR VARCHAR(10);
920
SET @PROCESS_ID_CURR =
921
(
922
    SELECT TOP 1
923
           PROCESS_ID
924
    FROM dbo.PL_REQUEST_PROCESS
925
    WHERE REQ_ID = @p_REQ_ID
926
          AND PARENT_PROCESS_ID = 'APPNEW'
927
);
928
UPDATE dbo.PL_REQUEST_PROCESS
929
SET STATUS = 'C'
930
WHERE PARENT_PROCESS_ID = 'APPNEW'
931
      AND REQ_ID = @p_REQ_ID;
932
UPDATE dbo.PL_REQUEST_DOC
933
SET AUTH_STATUS = @p_AUTH_STATUS,
934
    APPROVE_DT = @p_APPROVE_DT,
935
    CHECKER_ID = @p_CHECKER_ID,
936
    PROCESS_ID = @PROCESS_ID_CURR
937
WHERE REQ_ID = @p_REQ_ID;
938
UPDATE dbo.PL_REQUEST_DOC_DT
939
SET CHECKER_ID=@p_CHECKER_ID,
940
APPROVE_DT=@p_APPROVE_DT
941
WHERE REQ_ID = @p_REQ_ID;
942
INSERT INTO dbo.PL_PROCESS
943
(
944
    REQ_ID,
945
    PROCESS_ID,
946
    CHECKER_ID,
947
    APPROVE_DT,
948
    PROCESS_DESC,
949
    NOTES
950
)
951
VALUES
952
(   @p_REQ_ID,                                            -- REQ_ID - varchar(15)
953
    'APPNEW',                                               -- PROCESS_ID - varchar(10)
954
    @p_CHECKER_ID,                                        -- CHECKER_ID - varchar(15)
955
    @p_APPROVE_DT,                                        -- APPROVE_DT - datetime
956
    @p_PROCESS_DES, N'Trưởng đơn vị phê duyệt' -- PROCESS_DESC - nvarchar(1000)
957
    );
958
IF (EXISTS
959
(
960
    SELECT REQ_ID
961
    FROM dbo.PL_REQUEST_DOC
962
    WHERE REQ_ID = @p_REQ_ID
963
          AND PROCESS_ID = 'APPROVE'
964
)
965
   )
966
BEGIN
967
    EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID;
968
    EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID;
969
    SET @Result = '0';
970
END;
971
SET @Result = '1';
972
COMMIT TRANSACTION;
973
SELECT @Result AS Result,
974
       @ROLE_USER_NOTIFI AS ROLE_NOTIFI,
975
       '' ErrorDesc;
976
RETURN '0';
977
ABORT:
978
BEGIN
979
    ROLLBACK TRANSACTION;
980
    SELECT '-1' AS Result,
981
           '' ROLE_NOTIFI,
982
           '' ErrorDesc;
983
    RETURN '-1';
984
END;
985
¿
986
ALTER PROCEDURE [dbo].[PL_REQ_PROCESS_CHILD_App]
987
@p_REQ_ID VARCHAR(20),
988
@p_PROCESS_ID VARCHAR(20),
989
@p_TLNAME VARCHAR(20),
990
@p_MAKER_ID VARCHAR(20),
991
@p_TYPE_JOB VARCHAR(20),
992
@p_PROCESS_DES NVARCHAR(20),
993
@p_REF_ID INT
994
AS
995
BEGIN TRANSACTION
996
DECLARE  @ERROR BIT ,@EROOR_DES NVARCHAR(500)
997
SELECT @ERROR=ERROR,
998
       @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'DVKD')
999
IF(@ERROR=1)
1000
BEGIN
1001
	 ROLLBACK TRANSACTION;
1002
    SELECT -1  Result,
1003
           @EROOR_DES ErrorDesc
1004
   
1005
    RETURN 0;
1006
END
1007
DECLARE @LEVEL INT,@DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20),@BRANCH_CREATE VARCHAR(20),@DEP_CREATE VARCHAR(20)
1008
DECLARE @ROLE_ID VARCHAR(20),@NOTES NVARCHAR(500),
1009
				@PROCESS_CURR VARCHAR(10),
1010
				@STEP_CURR INT,
1011
				@STEP_NEXT INT,
1012
				@PROCESS_NEXT VARCHAR(10),
1013
				@TYPE_JOB_NAME NVARCHAR(100), @FULLNAME NVARCHAR(100)
1014
SELECT @BRANCH_ID=  TLSUBBRID,@DEP_ID=SECUR_CODE ,@ROLE_ID=RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID
1015
SELECT @BRANCH_CREATE=BRANCH_CREATE,@DEP_CREATE=DEP_CREATE FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
1016
DECLARE
1017
@COST_ID_TABLE TABLE (
1018
	COST_ID VARCHAR(15)
1019
)
1020
DECLARE @DVDM_ID_TABLE TABLE (
1021
	DVDM_ID VARCHAR(15)
1022
)
1023
	INSERT INTO @COST_ID_TABLE
1024
	SELECT COST_ID FROM dbo.PL_COSTCENTER_DT WHERE DEP_ID=@DEP_ID AND BRANCH_ID=@BRANCH_ID
1025
	INSERT INTO @DVDM_ID_TABLE
1026
	SELECT DVDM_ID FROM dbo.PL_COSTCENTER WHERE COST_ID IN (SELECT COST_ID FROM @COST_ID_TABLE) GROUP BY DVDM_ID
1027
	
1028
			
1029
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='P'
1030
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
1031
		SET @TYPE_JOB_NAME =(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDNAME = 'JOB_TYPE' AND CDTYPE='REQ' AND CDVAL=@p_TYPE_JOB)
1032
		SET @FULLNAME =(SELECT TLFullName FROM dbo.TL_USER WHERE TLNANME=@p_TLNAME )
1033
			
1034
		INSERT INTO dbo.PL_PROCESS
1035
				(
1036
					REQ_ID,
1037
					PROCESS_ID,
1038
					CHECKER_ID,
1039
					APPROVE_DT,
1040
					PROCESS_DESC,NOTES
1041
				)
1042
				VALUES
1043
				(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1044
					@p_PROCESS_ID,        -- PROCESS_ID - varchar(10)
1045
					@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
1046
					GETDATE() , -- APPROVE_DT - datetime
1047
					@p_PROCESS_DES ,
1048
					@TYPE_JOB_NAME+ N' đã phê duyệt'       -- PROCESS_DESC - nvarchar(1000)
1049
				)
1050
		
1051
		SET @LEVEL=ISNULL((SELECT TOP 1 LEVEL_JOB 
1052
		FROM dbo.PL_REQUEST_PROCESS_CHILD 
1053
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND TLNAME=@p_TLNAME AND TYPE_JOB=@p_TYPE_JOB
1054
		ORDER BY LEVEL_JOB DESC),0)                  
1055
		UPDATE dbo.PL_REQUEST_PROCESS_CHILD SET STATUS_JOB='C'
1056
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND LEVEL_JOB=(@LEVEL-1)
1057
		
1058
		IF(NOT EXISTS (SELECT * FROM  dbo.PL_REQUEST_PROCESS_CHILD 
1059
		WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID=@p_REF_ID AND STATUS_JOB <> 'P'))
1060
		BEGIN
1061
				SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
1062
				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)
1063
				IF(@PROCESS_CURR='TC')
1064
				BEGIN
1065
						SELECT @ERROR=ERROR,
1066
						   @EROOR_DES=ERROR_DES FROM dbo.FN_CHECK_VALIDATE_APP(@p_REQ_ID,'PDDC','PL_REQUEST_DOC',@p_MAKER_ID,'TC')
1067
					IF(@ERROR=1)
1068
					BEGIN
1069
						 ROLLBACK TRANSACTION;
1070
						SELECT '-1'  Result,
1071
							   @EROOR_DES ErrorDesc
1072
   
1073
						RETURN '0';
1074
					END
1075
						SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
1076
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND ROLE_USER=@ROLE_ID AND PROCESS_ID=@PROCESS_CURR
1077
						UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='C' WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR
1078
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
1079
				END
1080
				ELSE
1081
				BEGIN
1082
					
1083
				
1084
			
1085
			
1086
				SET @NOTES=(SELECT CONTENT FROM dbo.CM_ALLCODE WHERE (@PROCESS_CURR LIKE CDVAL + '%') AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')   
1087
				UPDATE dbo.PL_REQUEST_COSTCENTER SET AUTH_STATUS='A',APPROVE_DT=GETDATE(),CHECKER_ID=@p_MAKER_ID WHERE REQ_ID=@p_REQ_ID AND COST_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE)
1088
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID AND ROLE_USER=@ROLE_ID AND DVDM_ID IN (SELECT DVDM_ID FROM @DVDM_ID_TABLE)
1089
							
1090
				IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
1091
				BEGIN
1092
						
1093
							UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
1094
							UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
1095
						
1096
				END
1097
				UPDATE dbo.PL_REQUEST_TRANSFER SET AUTH_STATUS='A',CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_DOC_ID=@p_REQ_ID AND FR_BRN_ID=@BRANCH_ID AND (FR_DEP_ID=@DEP_ID OR FR_DEP_ID IS NULL OR FR_DEP_ID='')
1098
				UPDATE dbo.PL_REQUEST_PROCESS SET STATUS='P',NOTES=@NOTES+ N' đã phê duyệt', CHECKER_ID=@p_MAKER_ID,APPROVE_DT=GETDATE()  WHERE REQ_ID=@p_REQ_ID AND ROLE_USER=@ROLE_ID AND BRANCH_ID=@BRANCH_ID AND (DEP_ID=@DEP_ID OR DEP_ID IS NULL OR DEP_ID='')
1099
		IF(EXISTS(SELECT REQ_TRANSFER_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)))
1100
			BEGIN
1101
			IF(NOT EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS<>'A'))
1102
			BEGIN
1103
				    IF(NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
1104
					BEGIN
1105
							DECLARE 	@LIMIT_VALUE DECIMAL(18,0),@TOTAL_TRANSFER DECIMAL(18,2),
1106
							@IS_NEXT BIT=0,@STEP_PARENT VARCHAR(20),@TOTAL_AMT_GD DECIMAL(12,0),@STOP BIT,@ROLE_TF VARCHAR(20),@DVDM_ID VARCHAR(20),@NOTE NVARCHAR(100)
1107
							DECLARE @ROLE_CDT VARCHAR(20),@DVDM_CDT VARCHAR(20),@LIMIT_VALUE_CDT VARCHAR(20),@NOTES_CDT VARCHAR(20),@TOTAL_AMT DECIMAL(18,2)	
1108
						
1109
							SET @STEP_PARENT=(SELECT PARENT_PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID)
1110
						
1111
							SET @NOTE=   (SELECT CONTENT FROM dbo.CM_ALLCODE WHERE CDVAL='DVDM' AND CDNAME='PROCESS_ID' AND CDTYPE='REQ')
1112
							
1113
							DECLARE lstTransfer CURSOR FOR
1114
							SELECT FR_DVDM_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND   FR_DVDM_ID IS NOT NULL AND FR_DVDM_ID <>'' AND (FR_BRN_ID <> @BRANCH_CREATE OR FR_DEP_ID<> @DEP_CREATE)
1115
							AND NOT EXISTS(SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND ROLE_USER='GDDV' AND DVDM_ID=FR_DVDM_ID	)
1116
							GROUP BY FR_DVDM_ID
1117
							OPEN lstTransfer
1118
							FETCH NEXT FROM lstTransfer INTO @DVDM_ID
1119
							WHILE @@FETCH_STATUS = 0 
1120
							BEGIN 
1121
							
1122
								INSERT INTO dbo.PL_REQUEST_PROCESS
1123
								(
1124
									REQ_ID,
1125
									PROCESS_ID,
1126
									STATUS,
1127
									ROLE_USER,
1128
									BRANCH_ID,
1129
									CHECKER_ID,
1130
									APPROVE_DT,
1131
									PARENT_PROCESS_ID,
1132
									IS_LEAF,
1133
									COST_ID,
1134
									DVDM_ID,
1135
									NOTES,IS_HAS_CHILD
1136
								)
1137
								VALUES
1138
								(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1139
									'DVDM_DC',        -- PROCESS_ID - varchar(10)
1140
									'U',        -- STATUS - varchar(5)
1141
									'GDDV',        -- ROLE_USER - varchar(50)
1142
									'',        -- BRANCH_ID - varchar(15)
1143
									'',        -- CHECKER_ID - varchar(15)
1144
									NULL, -- APPROVE_DT - datetime
1145
									@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1146
									'N',        -- IS_LEAF - varchar(1)
1147
									'',        -- COST_ID - varchar(15)
1148
									@DVDM_ID ,        -- DVDM_ID - varchar(15)
1149
									N'Chờ '+@NOTE+N' xác nhận'
1150
									,0)
1151
							FETCH NEXT FROM lstTransfer INTO @DVDM_ID
1152
							END
1153
							CLOSE lstTransfer
1154
							DEALLOCATE lstTransfer
1155
							 IF(EXISTS(SELECT ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='DVDM_DC'))
1156
								SET @STEP_PARENT='DVDM_DC'
1157
							
1158
						UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='TC' AND REQ_ID=@p_REQ_ID
1159
						SET @STEP_PARENT='TC'
1160
						---Duyệt DC
1161
						IF( (SELECT COUNT(T.FR_KHOI_ID) AS COUNT_ROW FROM (SELECT FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID 
1162
						GROUP BY FR_KHOI_ID)T
1163
						) > 1)
1164
						BEGIN
1165
							INSERT INTO dbo.PL_REQUEST_PROCESS
1166
							(
1167
							    REQ_ID,
1168
							    PROCESS_ID,
1169
							    STATUS,
1170
							    ROLE_USER,
1171
							    BRANCH_ID,
1172
							    CHECKER_ID,
1173
							    APPROVE_DT,
1174
							    PARENT_PROCESS_ID,
1175
							    IS_LEAF,
1176
							    COST_ID,
1177
							    DVDM_ID,
1178
							    NOTES,
1179
							    IS_HAS_CHILD
1180
							)
1181
							VALUES
1182
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1183
							    'TGD_DC',        -- PROCESS_ID - varchar(10)
1184
							    'U',        -- STATUS - varchar(5)
1185
							    'TGD',        -- ROLE_USER - varchar(50)
1186
							    '',        -- BRANCH_ID - varchar(15)
1187
							    '',        -- CHECKER_ID - varchar(15)
1188
							    NULL, -- APPROVE_DT - datetime
1189
							    @STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1190
							    '',        -- IS_LEAF - varchar(1)
1191
							    '',        -- COST_ID - varchar(15)
1192
							    '',        -- DVDM_ID - varchar(15)
1193
							    N'Chờ tổng giám đốc phê duyệt',       -- NOTES - nvarchar(500)
1194
							    NULL       -- IS_HAS_CHILD - bit
1195
							    )
1196
							SET	@STEP_PARENT='TGD_DC'
1197
						END
1198
						ELSE
1199
						BEGIN
1200
							DECLARE @LIMTT_MAX  DECIMAL(18,2),@LIMIT_APP DECIMAL(18,2) ,@KHOI_ID_TF VARCHAR(20)
1201
							SET @KHOI_ID_TF=(SELECT TOP 1 FR_KHOI_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
1202
							SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)
1203
							SET @TOTAL_TRANSFER=(SELECT SUM(TOTAL_AMT) AS TOTAL FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID)
1204
							SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
1205
							INSERT INTO dbo.PL_REQUEST_PROCESS
1206
							(
1207
							    REQ_ID,
1208
							    PROCESS_ID,
1209
							    STATUS,
1210
							    ROLE_USER,
1211
							    BRANCH_ID,
1212
							    CHECKER_ID,
1213
							    APPROVE_DT,
1214
							    PARENT_PROCESS_ID,
1215
							    IS_LEAF,
1216
							    COST_ID,
1217
							    DVDM_ID,
1218
							    NOTES,
1219
							    IS_HAS_CHILD
1220
							)
1221
							VALUES
1222
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1223
							    'GDK_DC',        -- PROCESS_ID - varchar(10)
1224
							    'U',        -- STATUS - varchar(5)
1225
							    'GDK',        -- ROLE_USER - varchar(50)
1226
							    '',        -- BRANCH_ID - varchar(15)
1227
							    '',        -- CHECKER_ID - varchar(15)
1228
							    GETDATE(), -- APPROVE_DT - datetime
1229
							    @STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1230
							    'N',        -- IS_LEAF - varchar(1)
1231
							    '',        -- COST_ID - varchar(15)
1232
							    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
1233
							    N'Chờ giám đốc khối xác nhận',       -- NOTES - nvarchar(500)
1234
							    NULL       -- IS_HAS_CHILD - bit
1235
							 )
1236
							 SET @STEP_PARENT='GDK_DC';
1237
							 IF(@TOTAL_TRANSFER>@LIMTT_MAX OR @TOTAL_TRANSFER>@LIMIT_APP)
1238
							 BEGIN
1239
								IF(EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=1))
1240
									BEGIN
1241
									INSERT INTO dbo.PL_REQUEST_PROCESS
1242
							(
1243
							    REQ_ID,
1244
							    PROCESS_ID,
1245
							    STATUS,
1246
							    ROLE_USER,
1247
							    BRANCH_ID,
1248
							    CHECKER_ID,
1249
							    APPROVE_DT,
1250
							    PARENT_PROCESS_ID,
1251
							    IS_LEAF,
1252
							    COST_ID,
1253
							    DVDM_ID,
1254
							    NOTES,
1255
							    IS_HAS_CHILD
1256
							)
1257
							VALUES
1258
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1259
							    'PTGD_DC',        -- PROCESS_ID - varchar(10)
1260
							    'U',        -- STATUS - varchar(5)
1261
							    'PTGD',        -- ROLE_USER - varchar(50)
1262
							    '',        -- BRANCH_ID - varchar(15)
1263
							    '',        -- CHECKER_ID - varchar(15)
1264
							    GETDATE(), -- APPROVE_DT - datetime
1265
							    @STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1266
							    'N',        -- IS_LEAF - varchar(1)
1267
							    '',        -- COST_ID - varchar(15)
1268
							    @KHOI_ID_TF,        -- DVDM_ID - varchar(15)
1269
							    N'Chờ giám đốc khối xác nhận',       -- NOTES - nvarchar(500)
1270
							    NULL       -- IS_HAS_CHILD - bit
1271
							 )
1272
									SET @STEP_PARENT='PTGD_DC'
1273
									SET @LIMTT_MAX=(SELECT LIMIT_VALUE FROM dbo.TL_SYSROLE_LIMIT WHERE ROLE_ID='GDK' AND LIMIT_TYPE='DCNS')
1274
									SET @LIMIT_APP=(SELECT ISNULL(MAX_AMT,0)- ISNULL(TOTAL_APP_AMT,0) AS LIMIT_APP FROM dbo.LIMIT_ACCUMULATE WHERE ROLE_ID='GDK' AND DVDM_ID=@KHOI_ID_TF)
1275
									
1276
									END
1277
									IF(@TOTAL_TRANSFER>@LIMTT_MAX OR @TOTAL_TRANSFER>@LIMIT_APP OR EXISTS(SELECT DVDM_ID FROM dbo.CM_DVDM WHERE DVDM_ID=@KHOI_ID_TF AND IS_KHOI=1 AND IS_PTGD=0))
1278
									BEGIN
1279
									INSERT INTO dbo.PL_REQUEST_PROCESS
1280
									(
1281
										REQ_ID,
1282
										PROCESS_ID,
1283
										STATUS,
1284
										ROLE_USER,
1285
										BRANCH_ID,
1286
										CHECKER_ID,
1287
										APPROVE_DT,
1288
										PARENT_PROCESS_ID,
1289
										IS_LEAF,
1290
										COST_ID,
1291
										DVDM_ID,
1292
										NOTES,
1293
										IS_HAS_CHILD
1294
									)
1295
									VALUES
1296
									(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1297
										'TGD_DC',        -- PROCESS_ID - varchar(10)
1298
										'U',        -- STATUS - varchar(5)
1299
										'TGD',        -- ROLE_USER - varchar(50)
1300
										'',        -- BRANCH_ID - varchar(15)
1301
										'',        -- CHECKER_ID - varchar(15)
1302
										NULL, -- APPROVE_DT - datetime
1303
										@STEP_PARENT,        -- PARENT_PROCESS_ID - varchar(10)
1304
										'',        -- IS_LEAF - varchar(1)
1305
										'',        -- COST_ID - varchar(15)
1306
										'',        -- DVDM_ID - varchar(15)
1307
										N'Chờ tổng giám đốc phê duyệt',       -- NOTES - nvarchar(500)
1308
										NULL       -- IS_HAS_CHILD - bit
1309
									)
1310
									SET	@STEP_PARENT='TGD_DC'
1311
								 END
1312
							
1313
							 END
1314
						END
1315
						--- Duyệt TT
1316
					
1317
						
1318
						UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID='DVDM_DC' AND REQ_ID=@p_REQ_ID
1319
						UPDATE dbo.PL_REQUEST_PROCESS SET PARENT_PROCESS_ID=@STEP_PARENT,STATUS='U' WHERE  PROCESS_ID='APPROVE' AND REQ_ID=@p_REQ_ID
1320
						UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID='DVDM_DC' WHERE REQ_ID=@p_REQ_ID
1321
				END	
1322
			END
1323
		END
1324
	
1325
		
1326
		
1327
			
1328
				IF(EXISTS(SELECT REQ_ID FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID='APPROVE'))
1329
			BEGIN
1330
				
1331
					
1332
					EXEC dbo.PL_REQ_DOC_UPDATE_AFTER_APPROVE @p_REQ_ID = @p_REQ_ID 
1333
					EXEC dbo.PL_REQ_DOC_Ins_To_TR_REQ_DOC @p_PL_REQ_ID = @p_REQ_ID
1334
				
1335
			END
1336
	
1337
				END
1338
		END
1339
				
1340
		IF @@Error <> 0 GOTO ABORT
1341
COMMIT TRANSACTION
1342
SELECT 0 as Result, '' ErrorDesc
1343
RETURN 0
1344
ABORT:
1345
BEGIN
1346
		ROLLBACK TRANSACTION
1347
		SELECT -1 as Result, '' ErrorDesc
1348
		RETURN -1
1349
End