Project

General

Profile

new 1.SQL

Luc Tran Van, 06/16/2025 03:08 PM

 
1
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Confirm]
2
@p_REQ_PAY_ID        varchar(15)= NULL,
3
@p_CHECKER_ID        varchar(15)        = NULL,
4
@p_NOTES NVARCHAR(MAX) = NULL
5
AS
6
-- BEGIN VALIDATION 
7
        -- KIEM TRA NEU PHIEU DA XAC NHAN ROI THI KHONG CHO PHÉP XAC NHAN LAN THU  2
8
        IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND PROCESS = '' AND @p_CHECKER_ID = TRASFER_USER_RECIVE))
9
        BEGIN
10
                SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được cấp phê duyệt trung gian xác nhận trước đó' ErrorDesc
11
                RETURN '-1'
12
        END
13
-- END VALIDATION
14

    
15
BEGIN TRANSACTION
16
        DECLARE @ROLE_SIGN VARCHAR(50), @REQ_TYPE VARCHAR(15), @BRANCH_CREATE_TYPE VARCHAR(15)
17
        SET @BRANCH_CREATE_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID))
18
        --SET @ROLE_SIGN =(SELECT RoleName FROM TL_USER_V2 WHERE TLNANME =@p_CHECKER_ID)
19

    
20
  SET @ROLE_SIGN = (SELECT STRING_AGG(CONVERT(NVARCHAR (MAX), C.DisplayName), ',')
21
                          FROM TL_USER A
22
                          LEFT JOIN AbpUserRoles B ON A.ID = B.UserId
23
                          LEFT JOIN AbpRoles C ON B.RoleId = C.Id
24
                          WHERE A.TLNANME = @p_CHECKER_ID) + ','
25

    
26
        -- KHAI BAO THEM ROLE NHAN UY QUYEN  
27
        DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))  
28
        DECLARE @MENU_PERMISSON NVARCHAR(500) = 'Pages.Administration.ReqTempPayment'
29

    
30
        INSERT INTO @TABLE_ROLE SELECT RoleDisplayName FROM SYS_PERMISSIONS_PAGE_FOR_USER A WHERE A.TLNAME = @p_CHECKER_ID  
31
        AND (DATEDIFF(DAY, CONVERT(DATE, A.EffectiveDate, 103) , CONVERT(DATE, GETDATE(), 103)) >= 0 OR A.EffectiveDate IS NULL OR A.EffectiveDate = '')
32
        AND (DATEDIFF(DAY, CONVERT(DATE, A.ExpirationDate, 103) , CONVERT(DATE, GETDATE(), 103)) <= 0 OR A.ExpirationDate IS NULL OR A.ExpirationDate = '')
33
        AND A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1'
34
        AND EXISTS(SELECT DT.PER_PAGE_FOR_USER_DT_ID FROM SYS_PERMISSIONS_PAGE_FOR_USER_DT DT WHERE DT.PER_PAGE_FOR_USER_ID = A.PER_PAGE_FOR_USER_ID AND DT.MENU_PERMISSION = @MENU_PERMISSON)
35

    
36
  DECLARE @ROLE_ID_TL_USER_V2 VARCHAR(50)
37
        IF(@ROLE_SIGN IS NOT NULL AND @ROLE_SIGN <>'' AND EXISTS(SELECT TOP 1 A.ROLE_NAME FROM TMP_ROLE_PAYMENT_SEARCH A WHERE CHARINDEX(A.ROLE_NAME + ',', @ROLE_SIGN) > 0))
38
        BEGIN
39
                PRINT @ROLE_SIGN
40
        END
41
        ELSE
42
        BEGIN
43
    SET @ROLE_ID_TL_USER_V2 = (SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME = @p_CHECKER_ID)
44
                SET @ROLE_SIGN = @ROLE_SIGN + @ROLE_ID_TL_USER_V2 + ','
45
        END
46
        SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
47
        IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND AUTH_STATUS ='R'))
48
        BEGIN
49
                ROLLBACK TRANSACTION
50
                SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Bạn không được phép xác nhận hoặc phê duyệt giao dịch này. Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đang được trả về. Vui lòng đợi nhân viên cập nhật thông tin và gửi phê duyệt lại' ErrorDesc
51
                RETURN '-1'
52
        END
53
-- NEU LA TAM UNG NOI BO
54
        IF(@REQ_TYPE ='I')
55
        BEGIN
56
                PRINT '0'
57
                DECLARE @USER_SIGN VARCHAR(15)
58
                SET @USER_SIGN =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
59
        -- NEU LA O HOI SO
60
                IF(@BRANCH_CREATE_TYPE ='HS' AND EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <> ''))
61
                BEGIN
62
                        IF(@p_CHECKER_ID <>  @USER_SIGN AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = 'SEND')
63
                        BEGIN
64
                                ROLLBACK TRANSACTION                
65
                                SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đang chờ cấp phê duyệt trung gian xác nhận. User domain: '+ISNULL(@USER_SIGN,'') ErrorDesc
66
                                RETURN '-1'
67
                        END
68
                        -- doanptt 19/04/2022 nếu người duyệt là trưởng phòng hành chính thì phải duyệt có hạn mức
69
                        IF(@p_CHECKER_ID <>  @USER_SIGN 
70
                                AND CHARINDEX('GDDV,', @ROLE_SIGN) > 0
71
                                AND  (SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604' -- mã phòng hành chính
72
                                AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = '0')
73
                        BEGIN
74
                                ROLLBACK TRANSACTION                
75
                                SELECT '3' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,ISNULL(@USER_SIGN,'') ErrorDesc
76
                                RETURN '3'
77
                        END
78
                        --IF(EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND ISNULL(NOTES,'') <> ''))
79
                        --BEGIN
80
                        --        ROLLBACK TRANSACTION
81
                        --        SELECT '-1' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được bạn xác nhận trước đó. Vui lòng đợi các cấp duyệt tiếp theo' ErrorDesc
82
                        --        RETURN '-1'
83
                        --END
84
                END
85
                IF(EXISTS(SELECT TOP 1 A.ROLE_NAME FROM TMP_ROLE_PAYMENT_SEARCH A WHERE A.ROLE_NAME IN ('GDDV','PP','KTT','TC','TPTC') AND CHARINDEX(A.ROLE_NAME + ',', @ROLE_SIGN) > 0)
86
                                OR (        EXISTS        (SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','PP','KTT','TC','TPTC'))  
87
                                                AND NOT EXISTS        (        SELECT * FROM TR_REQ_ADVANCE_PAYMENT 
88
                                                                                        WHERE REQ_PAY_ID =@p_REQ_PAY_ID 
89
                                                                                        AND TRASFER_USER_RECIVE =@p_CHECKER_ID
90
                                                                                )
91
                                        )
92
                        )
93
                BEGIN
94
                        --- LUCTV 11072023_SECRETKEY: RIÊNG CÁC TĐV P.HÀNH CHÍNH NẾU ĐƯỢC CHỌN LÀM CẤP DUYỆT TRUNG GIAN THÌ XÉT DUYỆT TRUNG GIAN, KHÔNG ĐƯỢC XÁC NHẬN TĐV
95
                        IF(@p_CHECKER_ID =  @USER_SIGN 
96
                                AND  (SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604')-- mã phòng hành chính
97
                                BEGIN
98
                                        UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
99
                                        INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES ,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
100
                                END
101
                                ELSE
102
                                BEGIN
103
                                        UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
104
                                        INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Trưởng đơn vị xác nhận phiếu tạm ứng',NULL)
105
                                END
106
                        
107
                END
108
                ELSE
109
                BEGIN
110
                        IF((SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='DV0001')
111
                        BEGIN
112
                                UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
113
                                INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
114
                        END
115
                        ELSE
116
                        BEGIN
117
                                UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
118
                                INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
119
                        END
120
                END
121
                -- NẾU NGƯỜI DUYỆT TRÙNG VỚI CẤP PHÊ DUYỆT TRUNG GIAN THÌ KHÔNG CẦN UPDATE PROCESS_ID
122
                --UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='', NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE =@p_CHECKER_ID AND @REQ_TYPE ='I' AND @BRANCH_CREATE_TYPE ='HS'
123
        END
124
-- NEU LA CAC TAM UNG CON LAI
125
        ELSE
126
        BEGIN
127
                UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
128
                INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
129
        END
130
        
131
COMMIT TRANSACTION
132
                IF(@p_CHECKER_ID =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
133
                BEGIN
134
                        SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_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 phiếu' ErrorDesc
135
                        RETURN '0'
136
                END
137
                ELSE
138
                BEGIN
139
                        UPDATE TR_REQ_ADVANCE_PAYMENT SET NOTES =N'' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
140
                        SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được xác nhận thành công! Vui lòng đợi các cấp phê duyệt tiếp theo' ErrorDesc
141
                        RETURN '0'
142
                END
143
ABORT:
144
BEGIN
145
                ROLLBACK TRANSACTION
146
                SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
147
                RETURN '-1'
148
END